参数设置
输入维度 D = 10 固定。数据本质为 3 维信号加噪声,使用 N = 50 个样本进行训练。
编码 / 瓶颈 / 重构与学习曲线
上:输入 x(蓝)/中:瓶颈 z/下:重构 x̂(橙,叠加在输入上)/右:迭代次数 vs MSE
理论与主要公式
1D 线性自编码器使用编码器矩阵 $W_e \in \mathbb{R}^{K \times D}$ 将输入 $x \in \mathbb{R}^D$ 压缩为低维潜变量 $z$,再用解码器矩阵 $W_d \in \mathbb{R}^{D \times K}$ 恢复到原维度。
编码、解码与重构误差:
$$z = W_e\,x, \qquad \hat{x} = W_d\,z = W_d\,W_e\,x$$
$$L = \lVert x - \hat{x} \rVert^2$$
SGD 更新公式(学习率 $\eta$):
$$W_e \leftarrow W_e + 2\eta\,W_d^{\top}(x - \hat{x})\,x^{\top}$$
$$W_d \leftarrow W_d + 2\eta\,(x - \hat{x})\,z^{\top}$$
优化收敛后 $W_d W_e \approx V V^{\top}$($V$ 为前 $K$ 个主成分),线性自编码器等价于对 PCA 主子空间的投影。
什么是 1D 线性自编码器模拟器
🙋
自编码器不就是把输入原样输出的网络吗?这有什么好玩的?
🎓
关键在于中间那层被称为「瓶颈」的细窄层。比如我们训练网络把 10 维输入压缩到只有 3 维,再展开回 10 维。如果数据真的有 10 个自由度,就不可能还原;但如果数据其实只躺在「3 维的薄子空间」上,就能近乎完美地恢复。在模拟器里保持 K = 3 按下「重新训练」,方差解释率应该会超过 99%。
🙋
确实!把 K 降到 1 后解释率猛跌。是不是说把 3 维信息塞进一个数是不可能的?
🎓
没错。从信息论角度看,把本质上 3 维的信号用一个数表示,必然要丢掉三分之二的方差,剩下两个方向的方差就以「重构误差」形式出现。对于线性自编码器,最优解可以被严格证明等于对前 K 个主成分的投影——因此线性自编码器本质上就是 PCA。
🎓
好问题。在线性范围内确实 PCA 就够了。但一旦在编码器和解码器中加入非线性激活函数(ReLU、tanh 等),就能沿「弯曲的流形」进行压缩。比如 MNIST 数字数据位于 784 维空间中的薄曲面上,这是线性子空间无法捕捉的。实务上,深层自编码器被广泛用于图像压缩、异常检测、去噪和生成模型(VAE)等。
🙋
噪声滑块调大后,即使 K = 3 解释率也在下降。这是怎么回事?
🎓
这就是「噪声底线」。真实 3 维成分的方差是固定的,加入噪声后总方差被抬高。K = 3 的自编码器只能捕捉真实成分,噪声成分则作为重构误差残留下来。因此理论上的重构 MSE 约为 $\sigma^2$。反过来说,这也意味着自编码器在自动去除噪声——这正是去噪自编码器的基本机理。
常见问题
学习率过大时,梯度下降会越过损失谷底飞到对面,导致 MSE 增大或振荡。线性自编码器最小化的是二次型损失,极端的 η 可能让训练发散并出现 NaN。本模拟器默认 η = 0.05,η 超过约 0.3 时可能出现发散倾向。若训练不稳定,请将 η 调回 0.01~0.05 之间。
由于 SGD 是随机的,迭代次数太少时会未能到达最优解。在本模拟器中,将迭代次数降到 10,即便 K = 3,方差解释率也会大幅下降。建议以 500~1000 次为目标,并检查学习曲线是否已经趋于平坦。线性自编码器其实也有闭式解(SVD),这里采用 SGD 训练是为了对应深度学习的实际做法。
不一定。线性自编码器的最优解只能唯一确定「前 K 个主成分所张成的子空间」,子空间内部仍有旋转自由度。许多不同的 (W_e, W_d) 组合都能实现同一投影。要得到真正的主成分,需要在训练之后对 W_e·X 的协方差矩阵再做一次对角化。
把 K 提高到 3 以上(比如 5 或 9)后,重构 MSE 不会再显著下降:因为数据本质只有 3 维结构 + 噪声,多出的维度只会开始吸收噪声成分。过大的瓶颈会导致「记住噪声」,从而损害对新数据的泛化能力。这也是设计自编码器时倾向于把 K 保持较小作为正则化手段的原因之一。
实际应用
异常检测:只用正常数据训练自编码器后,正常输入的重构误差很小,而异常输入的误差则很大。这种模式广泛应用于生产线的振动数据、医学影像和网络日志等异常标签稀缺的场景。本模拟器展示的「本质维度 + 噪声」结构正是其基础。
图像与视频压缩:作为 JPEG/MPEG 的接班人,基于深度自编码器的学习型图像压缩正受到研究关注。编码器把图像转换为紧凑的潜在表示,解码器再恢复成图像。线性自编码器是其出发点,在数学上等价于 PCA 压缩或人脸识别中的 Eigenface 方法。
表示学习与特征提取:利用大量无标签数据,自编码器可以学到「有意义的特征」,再作为下游任务(分类、回归)的预训练手段使用。BERT 和 GPT 等现代自监督学习模型,从广义上也继承了「预测输入的一部分」这种自编码器式的思想。
生成模型(VAE、扩散模型)的基础:变分自编码器(VAE)通过在潜空间引入概率分布,使模型可以生成新样本。近年来的扩散模型也与潜空间中的自编码器思想密切相关。线性自编码器是所有这些前沿模型最基础的奠基石。
常见误解与注意事项
最常见的误解是认为「自编码器可以魔法般地压缩任意信息」。从信息论角度看,K 维瓶颈所能携带的信息量存在上限,凡是 K 小于本质维度的情形都必然丢失信息。在本模拟器中把 K 设为 1 或 2,可以立刻看到方差解释率崩塌。「估计数据的本质维度」才是自编码器设计的真正起点。
其次常见的是把线性自编码器与 PCA 视为完全不同的方法。如前所述,用 MSE 训练的线性自编码器最优解与 PCA 前 K 个主成分的投影完全一致。因此「为什么还要使用线性自编码器」更多体现为:它是通向非线性自编码器的入门教材,也是 SGD 在超大规模数据上具备可扩展性的体现。对于原始数据,基于 SVD 的 PCA 在计算上往往就已足够。
最后,「让重构误差趋近于零总是好事」的想法也很危险。在含噪数据上把误差压到零,会迫使网络记住噪声,从而破坏对新数据的泛化能力。在本模拟器中把 σ 固定为 0.5 并提高 K,会发现误差不断下降,但「噪声记忆」也随之出现。在实务中必须合理选择瓶颈维度、学习率和迭代次数,并在验证集上同时监控重构误差。