Skip to content

第 17 章 自编码器

自编码器是一种无监督表示学习模型。它的目标不是预测人工标签,而是把输入压缩成隐表示,再从隐表示重构原输入。

基本结构:

text
输入 x -> 编码器 -> 隐变量 z -> 解码器 -> 重构 x_hat

17.1 编码器和解码器

编码器把输入映射成隐表示:

z=fθ(x)

解码器把隐表示映射回输入空间:

x^=gϕ(z)

训练目标是让 x^ 尽量接近 x

对于连续输入,常用均方误差:

L(x,x^)=xx^2

对于二值输入或归一化图像,也可以使用交叉熵重构损失。

17.2 瓶颈结构

如果隐表示维度小于输入维度,模型必须压缩信息。

text
高维输入 -> 低维 z -> 高维重构

这个低维 z 叫瓶颈层。瓶颈会迫使模型学习输入中最重要的因素,而不是简单复制每个像素或每个特征。

如果隐表示维度太大,并且没有其他约束,自编码器可能学成近似恒等映射,表示学习意义就会变弱。

17.3 自编码器和 PCA

线性自编码器在某些条件下和 PCA 有联系。PCA 寻找线性低维子空间;自编码器如果不使用非线性激活,本质上也只能学习线性变换。

非线性自编码器更灵活,可以学习非线性流形。

方法表示能力训练方式
PCA线性降维特征分解
自编码器可非线性降维神经网络优化

17.4 去噪自编码器

去噪自编码器先给输入加入噪声,再要求模型重构干净输入。

text
干净 x -> 加噪 x_tilde -> 编码器 -> 解码器 -> 重构 x

目标是:

L(x,x^)=xx^2

它迫使模型学习稳定结构,而不是记住输入的局部噪声。

17.5 稀疏自编码器

稀疏自编码器会约束隐藏层大多数神经元保持不激活,只让少数神经元响应。

这种约束可以让模型学习更有选择性的特征。例如图像中某些神经元可能只对边缘、纹理或局部形状敏感。

稀疏性通常通过额外正则项实现。

17.6 变分自编码器

普通自编码器把输入编码成一个确定向量 z。变分自编码器把输入编码成一个分布。

编码器输出均值和方差:

μ(x),σ2(x)

然后从分布中采样:

zqϕ(z|x)

VAE 的损失包含两部分:

作用
重构损失让生成结果接近输入
KL 散度让隐变量分布接近先验

常见先验是标准正态分布:

p(z)=N(0,I)

KL 项让潜空间更规整,因此可以从先验中采样 z,再用解码器生成新样本。

17.7 重参数化技巧

VAE 训练时需要采样,但直接采样会阻断梯度。重参数化技巧把采样写成:

z=μ+σϵ

其中:

ϵN(0,I)

随机性来自 ϵ,而 μσ 保持在可微路径上,因此可以用反向传播训练。

17.8 应用

自编码器常见用途:

  • 降维。
  • 表示学习。
  • 去噪。
  • 异常检测。
  • 生成模型的基础结构。

异常检测中,可以用重构误差判断样本是否异常。模型在正常样本上训练,如果某个样本重构误差很大,说明它可能和训练分布不同。

Powered by VitePress