DL ML Learning Lab
05 / 10
第 5 步 · 不靠标签学特征

自编码器 · 无监督表征Autoencoder · Unsupervised Representation

让网络把自己压缩再还原,瓶颈处被迫留下最有信息量的低维表示。

11 分钟
阅读 + 实操
1 个
交互演示
中级
难度

自编码器 · 交互演示

瓶颈32
重建误差0.06
隐藏层3
重建动画 — 灰:原始数据 · 紫:自编码器重建点 · 细线:对应关系(训练中逐渐贴回流形)
训练步数 0
自编码器重建 MSE
PCA(直线)重建 MSE
点击"开始训练",看紫色重建点逐渐贴回灰色数据流形
PCA 对比 — 蓝线:第一主成分 · 黄点:投影(一条直线压不住弯曲的流形)
潜空间探索 — 紫线:解码器从 z 扫出的流形 · 亮点:当前 z 的解码位置(拖右侧滑杆)
数据集(2D 流形 + 噪声,各 300 点)
潜变量 z(瓶颈层的唯一神经元) 0.00

为什么学这步?

标签昂贵时,自编码器提供无监督的特征学习,是预训练、降噪、异常检测的通用工具。

📌 发生了什么

  • 编码器压缩、解码器重建
  • 瓶颈迫使保留核心信息
  • 训练目标为重建误差

⚠️ 常见陷阱

  • 瓶颈太宽学不到表示
  • 过拟合到恒等映射
  • 本身不生成新样本

本章小结

  • 自编码器学低维表征
  • 瓶颈是信息瓶颈
  • 可用于降噪 / 预训练

📐 自编码器的编码-解码

自编码器用"瓶颈"结构无监督地学习数据的有用表征:编码压缩、解码重构。

编码器把输入 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 论文预印本

📝 课后练习

检验你的理解——答对为止