Autoencoder/zh
| Article | |
|---|---|
| Topic area | Deep Learning |
| Prerequisites | Neural Networks, Backpropagation |
概述
自编码器是一种经过训练以通过低容量中间表示重构其输入的神经网络。它由一个编码器和一个解码器组成,前者将输入 $ x \in \mathbb{R}^d $ 映射到潜在编码 $ z \in \mathbb{R}^k $,后者将 $ z $ 映射回重构结果 $ \hat{x} \in \mathbb{R}^d $。通过强制信息穿过瓶颈,网络被迫在没有有监督标签的情况下发现数据中紧凑且结构化的特征。自编码器用于表示学习、降维、去噪、异常检测,也是诸如变分自编码器和现代扩散模型等生成模型的构建模块。
自编码器框架早于深度学习。早在 20 世纪 80 年代,它就在关联记忆和非线性主成分分析的研究中被讨论;在 21 世纪初,它作为一种逐层预训练技术再次出现,帮助重新激发了人们对深度网络的兴趣。如今,自编码器最常被端到端地使用,其主要价值在于潜在表示本身,而非重构结果。
直觉
一个完美的恒等函数可以重构任何输入,但它毫无用处:它没有存储关于数据结构的任何信息。为了让编码器学到有意义的东西,架构或损失必须施加某种约束。常见的策略大致有两种。
第一种是欠完备(undercomplete)设定,其中潜在维度 $ k $ 小于输入维度 $ d $。此时重构要求编码器发现数据所处的低维流形。第二种是正则化设定,其中 $ k $ 可以与 $ d $ 相当甚至更大,但通过对潜在编码、权重或输入施加惩罚,迫使网络学到有用的特征。例子包括稀疏性惩罚、对编码器雅可比矩阵的收缩惩罚以及在训练时注入噪声。
一个有用的心智模型是:编码器在数据流形上学习一张图卡,而解码器学习其逆映射。瓶颈使得这张图卡在与流形正交的方向上有损,但沿流形方向上保持精确。
形式化
设编码器为 $ f_\theta : \mathbb{R}^d \to \mathbb{R}^k $,参数为 $ \theta $;解码器为 $ g_\phi : \mathbb{R}^k \to \mathbb{R}^d $,参数为 $ \phi $。给定数据集 $ \{x_i\}_{i=1}^N $,通过最小化重构损失来学习参数
$ {\displaystyle \mathcal{L}(\theta, \phi) = \frac{1}{N} \sum_{i=1}^N \ell\big(x_i, g_\phi(f_\theta(x_i))\big),} $
其中 $ \ell $ 对于连续输入通常是平方误差,对于二值或类别输入则是交叉熵。潜在变量 $ z = f_\theta(x) $ 即模型所提取的表示。
采用平方损失和权重绑定的线性自编码器可以恢复主子空间:最优解码器张成的子空间与数据协方差的前 $ k $ 个特征向量所张成的子空间相同,尽管各个轴不必与主成分对齐。$ f_\theta $ 和 $ g_\phi $ 中的非线性使网络能够捕捉主成分分析无法表达的弯曲流形。
训练与推理
自编码器与任何其他前馈网络一样,使用随机梯度下降和反向传播进行训练。输入依次经过编码器和解码器,重构损失是相对于输入本身计算的,梯度则反向传回两个部分。训练不需要标签,这使得自编码器在拥有大量未标注数据的领域中颇具吸引力。
在推理阶段,网络可以被拆分使用。仅使用编码器即可作为特征提取器:下游的分类器或回归器消费 $ z $ 而不是原始的 $ x $。仅使用解码器,输入采样或插值得到的编码,即可合成新样本;不过,普通自编码器无法在概率意义上保证训练分布之外的解码器输入会产生合理的输出。这一局限性催生了变分自编码器,它为潜在空间赋予了显式的先验和随机化的编码器。
变体
去噪自编码器(denoising)使用噪声 $ \tilde{x} = x + \epsilon $ 破坏输入,并要求网络重构干净的 $ x $。目标变为 $ \mathbb{E}_\epsilon \, \ell(x, g_\phi(f_\theta(\tilde{x}))) $。这迫使编码器将偏离流形的输入投影回流形上,通常能产生更鲁棒的特征。
稀疏自编码器在潜在编码上加入 L1 惩罚或针对目标激活的KL项,使得对任意输入只有一小部分单元处于激活状态。其结果是一个特征字典,其中不同单元专门负责输入空间的不同部分。近年来,稀疏自编码器作为大型Transformer模型机制可解释性研究的工具重新获得关注,被用于将稠密激活分解为可解释的特征。
收缩自编码器对编码器的雅可比矩阵施加 Frobenius 范数惩罚 $ \lVert \partial f_\theta / \partial x \rVert_F^2 $,以鼓励对输入小扰动的局部不变性。
变分自编码器用分布 $ q_\phi(z \mid x) $ 替换确定性编码器,并以证据下界作为训练目标。它们是真正意义上的生成模型,尽管其样本通常比生成对抗网络或扩散模型的样本更模糊。
掩码自编码器随机遮蔽大部分输入片段,并重构缺失的部分。应用于图像片段的视觉掩码自编码器成为了视觉 Transformer强有力的自监督预训练目标。[1]
比较
自编码器经常与PCA进行比较。具有平方损失的线性自编码器在所学子空间的意义上与 PCA 在数学上等价。一旦引入非线性,自编码器即可捕捉弯曲流形,但训练更困难,对初始化更敏感,所得表示也不再正交,也不按方差排序。
与自监督对比方法(通过拉近匹配视图、推开非匹配视图来学习)相比,自编码器通过重构来学习。对比方法通常能产生语义上更具判别性的特征,而基于重构的方法保留了更多低层细节,且通常更易于扩展。
在生成建模领域,普通自编码器并非生成模型:它们没有定义在 $ z $ 上的分布。变分自编码器补上了这一部分。扩散模型可以被视为在多个噪声水平上训练的去噪自编码器的层次结构。[2]
局限性
重构损失是一种粗粒度的训练信号。像素级平方误差对每一个输出维度一视同仁,因此常常产生模糊的重构,并忽略感知上重要的结构。将损失替换为感知损失或对抗损失可以缓解这一问题,但会增加复杂度。
普通自编码器在任何严格意义上都不是生成模型。随机采样一个编码并将其解码可能产生不真实的输出,因为对潜在分布没有任何约束。它们也没有内建机制来解耦各种变化因素;潜在单元往往是多义且纠缠的,这限制了其直接的可解释性。
最后,如果自编码器的容量相对于其瓶颈正则化过高,它就可能记住训练集,通过巧妙的路由方式学到近似恒等映射,而不是有意义的结构。调节容量、瓶颈宽度以及正则化强度至关重要。
应用
自编码器广泛用于无监督表示学习:编码器在大型未标注语料上训练,潜在编码作为下游较小有监督模型的输入。它们也是异常检测的标准工具——对新输入的高重构误差意味着该输入不属于分布内,常用于图像和音频的去噪。在现代系统中,自编码器经常作为大型生成流水线中的感知压缩阶段出现:例如,潜在扩散模型在预训练自编码器压缩后的潜在空间中训练扩散过程,而不是直接在像素空间中训练。[3]
参考文献
- ↑ Template:Cite arxiv
- ↑ Vincent, P., A connection between score matching and denoising autoencoders, 2011.
- ↑ Template:Cite arxiv