第 5 步 · 不靠标签学特征
自编码器 · 无监督表征Autoencoder · Unsupervised Representation
让网络把自己压缩再还原,瓶颈处被迫留下最有信息量的低维表示。
11 分钟
阅读 + 实操
1 个
交互演示
中级
难度
自编码器 · 交互演示
瓶颈32
重建误差0.06
隐藏层3
重建动画 — 灰:原始数据 · 紫:自编码器重建点 · 细线:对应关系(训练中逐渐贴回流形)
训练步数 0
自编码器重建 MSE —
PCA(直线)重建 MSE —
自编码器重建 MSE —
PCA(直线)重建 MSE —
点击"开始训练",看紫色重建点逐渐贴回灰色数据流形
PCA 对比 — 蓝线:第一主成分 · 黄点:投影(一条直线压不住弯曲的流形)
潜空间探索 — 紫线:解码器从 z 扫出的流形 · 亮点:当前 z 的解码位置(拖右侧滑杆)
为什么学这步?
标签昂贵时,自编码器提供无监督的特征学习,是预训练、降噪、异常检测的通用工具。
📌 发生了什么
- 编码器压缩、解码器重建
- 瓶颈迫使保留核心信息
- 训练目标为重建误差
⚠️ 常见陷阱
- 瓶颈太宽学不到表示
- 过拟合到恒等映射
- 本身不生成新样本
✅ 本章小结
- 自编码器学低维表征
- 瓶颈是信息瓶颈
- 可用于降噪 / 预训练
📐 自编码器的编码-解码
自编码器用"瓶颈"结构无监督地学习数据的有用表征:编码压缩、解码重构。
编码器把输入 x 压缩到低维潜变量 h,解码器再从 h 重构出 x̂,整套网络无需标签。
训练目标是最小化重构误差(MSE),迫使瓶颈保留最重要的信息。
当潜空间维度小于输入维度时,网络被迫学习压缩表征;加 KL 散度正则即得到变分自编码器(VAE)。
🎛 潜空间维度对比
潜空间维度决定信息瓶颈的松紧,过低丢信息,过高学不到结构。
| 潜空间维度 | 表现 | 结果 |
|---|---|---|
| 2 | 瓶颈极紧,仅保留主结构 | 可视化佳但模糊 |
| 16 | 平衡压缩与重构 | 推荐 |
| 64 | 近似恒等映射 | 清晰但学不到表征 |
💡 维度 = 2 常用于降维可视化;过宽的瓶颈让网络"抄近路"恒等映射,需加正则。
💻 自编码器前向与重构损失
编码-解码-重构损失的 Python 实现:
# 自编码器前向 + 重构损失
def autoencoder_forward(x, params):
h = relu(params['We'] @ x + params['be']) # 编码
x_hat = sigmoid(params['Wd'] @ h + params['bd']) # 解码
loss = 0.0
for i in range(len(x)): # MSE 重构损失
d = x[i] - x_hat[i]
loss += d * d
return {'h': h, 'x_hat': x_hat, 'loss': loss / len(x)}
📚 参考文献与延伸阅读
- Hinton & Salakhutdinov (2006), Reducing the Dimensionality of Data with Neural Networks, Science — 自编码器与深度预训练
- Kingma & Welling (2013), Auto-Encoding Variational Bayes, ICLR — VAE 的提出
- Goodfellow, Bengio & Courville, Deep Learning (2016), §14 Autoencoders
- arXiv:1312.6114 — VAE — VAE 论文预印本
📝 课后练习
检验你的理解——答对为止