01 核心原理(大白话版)

想象你要把一幅画压缩成一句话,再让别人根据这句话重新画出来。这句话就是"潜在编码"——它必须包含画中最重要的信息,否则还原时就会出错。

编码器负责压缩:输入→瓶颈(低维)。解码器负责还原:瓶颈→重建输出。训练目标是让重建结果尽量接近原始输入(最小化重建损失)。

瓶颈越窄,压缩越激进,网络被迫学到更本质的特征。自编码器不需要标签,属于无监督学习

结构图

输入 x → [编码器] → 潜在向量 z → [解码器] → 重建 x̂
训练目标:最小化 MSE(x, x̂) = ‖x − x̂‖²
1
编码器 Encoder

将高维输入(如 784 像素)压缩到低维瓶颈(如 32 维),提取关键特征。

2
瓶颈(潜在空间)

最窄的隐藏层,存储对重建最关键的信息,维度越低压缩越激进。

3
解码器 Decoder

从潜在向量还原到原始维度,目标是让重建结果与输入尽可能相同。

步骤1:编码器-解码器结构,信息损失演示

步骤2:重建损失(MSE)与瓶颈维度的关系

瓶颈越窄,保留信息越少,重建误差越大:

步骤3:潜在空间可视化

训练好的编码器会让同类数据在潜在空间聚集,体现出语义结构:

步骤4:手写自编码器训练(梯度下降)

从零实现线性自编码器,观察损失如何随轮次下降:

线性自编码器 ≈ PCA:当编码器和解码器都是线性变换时,自编码器学到的方向等价于主成分分析(PCA)的主成分方向,但激活函数引入非线性后,可以捕捉更复杂的结构。

02 代码

TF.js 实现非线性自编码器,可修改 LATENT 变量观察不同瓶颈维度对重建质量的影响。

03 学术性讲解

自编码器的变体

去噪自编码器 DAE

输入加入随机噪声,目标仍是重建干净数据。迫使模型学到更鲁棒的特征,不依赖噪声细节。

变分自编码器 VAE

潜在空间服从高斯分布,可以从中采样生成新数据。同时是生成模型,不只是压缩工具。

稀疏自编码器

在损失中加入 L1 正则,限制每次只有少数神经元激活,类似大脑的稀疏编码。

自编码器 vs PCA vs VAE

PCA

线性降维,全局最优,无需训练,可解释性强。但无法捕捉非线性结构。

自编码器

非线性降维,可学习复杂流形,但结果不可解释,潜在空间不连续(不能随机采样)。

VAE

潜在空间连续且有概率意义,可生成新样本,但训练更复杂(ELBO 目标)。

应用场景

  • 异常检测:正常数据重建误差小,异常数据误差大——用重建损失当异常分数。
  • 降噪:DAE 可去除图像/信号中的随机噪声。
  • 预训练(历史):深度学习早期用自编码器逐层预训练,再微调。现已被随机初始化+BatchNorm取代。
  • 数据压缩:学习领域特定的压缩方案,比通用压缩效果更好。