自编码器的构建与性能优化
1. 自编码器的组成
自编码器是一种特殊的神经网络,其主要目标是学习输入数据的一种新表示。我们先构建一个非常简单的自编码器,它包含输入层、单个隐藏层和输出层。
-输入层:将原始特征矩阵 (x) 输入到自编码器中,这由输入层表示。
-隐藏层:对输入层的加权和应用激活函数 (f),生成隐藏层 (h),即 (h = f(x)),这部分属于编码器部分。
-输出层:对隐藏层的加权和应用激活函数 (g),以重建原始观测值,输出层 (r = g(h)),这部分属于解码器部分。为了计算重建误差,我们将新构建的观测值 (r) 与原始观测值 (x) 进行比较。
2. 激活函数
在确定单隐藏层自编码器中使用的节点数量之前,我们需要了解激活函数。激活函数决定了节点是否被激活,从而将信息传递到下一层。我们有线性激活函数和非线性激活函数可供选择:
| 激活函数 | 特点 | 取值范围 |
| ---- | ---- | ---- |
| 线性激活函数 | 无界,可生成负无穷到正无穷之间的激活值,计算最简单且成本最低 | ((-\infty, +\infty)) |
| Sigmoid 函数 | 有界,生成 0 到 1 之间的激活值 | ((0, 1)) |
| Tanh 函数 | 有界,生成 -1 到 1 之间的激活值,梯度比 Sigmoid 函数更陡峭 | ((-1, 1)) |
| ReLu 函数 | 若 (Y) 为正,则返回 (Y);否则返回 0,对于正的 (