第十四章:自编码器
1. 自编码器概述
自编码器(Autoencoder)是一类无监督学习的神经网络,旨在学习数据的压缩表示。其核心结构由编码器(Encoder)和解码器(Decoder)两部分组成。编码器将输入数据 \(\mathbf{x} \in \mathbb{R}^n\) 映射到潜在空间得到编码(Latent Code)或潜在表示(Latent Representation) \(\mathbf{h} \in \mathbb{R}^d\),解码器则将潜在表示重建为输出 \(\hat{\mathbf{x}} \in \mathbb{R}^n\)。
自编码器的学习目标是最小化重构损失(Reconstruction Loss),即输出与输入之间的差异:
其中 \(E_{\phi}\) 表示参数为 \(\phi\) 的编码器,\(D_{\theta}\) 表示参数为 \(\theta\) 的解码器。
1.1 瓶颈结构
自编码器的基本特征是瓶颈(Bottleneck)结构——潜在空间的维度 \(d\) 通常远小于输入空间的维度 \(n\)。这种不对称结构迫使网络学习数据中最具信息量的特征。瓶颈迫使编码器提取数据的低维流形结构,从而实现有效的压缩表示。
1.2 编码与解码过程
前向传播过程如下:
其中 \(f(\cdot)\) 和 \(g(\cdot)\) 通常为非线性激活函数(如ReLU、Sigmoid)。编码器权重 \(\mathbf{W}_e\) 和解码器权重 \(\mathbf{W}_d\) 可以是独立的,也可以共享部分参数(如转置权重共享)。
2. 欠完备与过完备自编码器
2.1 欠完备自编码器
欠完备(Undercomplete)自编码器是指潜在表示维度 \(d\) 小于输入维度 \(n\) 的自编码器。其核心动机是通过限制编码容量来迫使模型学习有用的数据表示。
损失函数为:
当编码维度足够小时,欠完备自编码器自然地学习到数据的低维结构。然而,如果仅最小化重构损失而不加约束,当编码维度 \(d \geq n\) 时,自编码器可能退化为恒等函数,失去有意义的特征提取能力。
线性自编码器与PCA的关系:若编码器和解码器均为线性,且使用均方误差损失,则欠完备自编码器的解空间与主成分分析(PCA)高度相关。具体而言,编码矩阵对应于数据协方差矩阵的主特征向量方向,重构相当于在由主成分张成的子空间上的投影。
2.2 过完备自编码器
过完备(Overcomplete)自编码器指潜在维度 \(d > n\) 的情况。此时网络的表示能力增强,但如果不引入额外约束,编码器可能简单地学习到恒等映射,从而失去提取有意义特征的能力。
为避免这一问题,需要引入额外的正则化约束,包括:
- 稀疏正则化:惩罚隐藏单元的活跃度
- 去噪正则化:在输入中加入噪声
- 收缩正则化:惩罚编码对输入的敏感度
这些正则化方法将在下一节详细讨论。
3. 正则化自编码器
3.1 稀疏自编码器
稀疏自编码器(Sparse Autoencoder)通过在损失函数中加入稀疏惩罚项,鼓励隐藏层中大部分神经元处于"关闭"状态。其损失函数为:
其中 \(\rho\) 是目标稀疏参数(通常取 \(\rho = 0.01\)),\(\hat{\rho}_j = \frac{1}{m} \sum_{i=1}^{m} h_j(\mathbf{x}^{(i)})\) 是第 \(j\) 个隐藏单元的经验平均激活率,\(\beta\) 是稀疏惩罚项的权重系数。
\(\text{KL}(\rho \| \hat{\rho}_j)\) 是Kullback-Leibler散度:
当 \(\hat{\rho}_j = \rho\) 时,KL散度为零;偏离越大,散度值越大。
特征选择性:稀疏自编码器能够学习具有选择性的特征表示,即对不同类型的输入,某些神经元表现出强烈的激活响应。这种特性使其在特征学习和模式识别任务中表现出色。
3.2 去噪自编码器
去噪自编码器(Denoising Autoencoder, DAE)通过向输入数据注入噪声,然后训练网络从噪声版本重建原始无噪声输入。这种方式相当于让自编码器学习一个去噪映射,从而捕获数据的有意义结构。
具体而言,给定输入 \(\mathbf{x}\),首先通过损坏过程 \(C(\tilde{\mathbf{x}} | \mathbf{x})\) 生成损坏版本 \(\tilde{\mathbf{x}}\),然后最小化:
常见的损坏过程包括:
- 加性高斯噪声:\(\tilde{\mathbf{x}} = \mathbf{x} + \epsilon, \quad \epsilon \sim \mathcal{N}(\mathbf{0}, \sigma^2 \mathbf{I})\)
- 掩码噪声(Dropout):随机将输入单元置零
- 椒盐噪声:随机翻转部分比特
去噪自编码器的核心思想是:有用的表示应对少量噪声具有鲁棒性,因此学习去噪等效于学习数据的流形结构。
3.3 收缩自编码器
收缩自编码器(Contractive Autoencoder, CAE)通过惩罚编码对输入的雅可比矩阵的Frobenius范数,鼓励学习到的表示对输入变化不敏感。其损失函数为:
其中 \(\mathbf{J}_{\mathbf{h}}(\mathbf{x}) = \frac{\partial \mathbf{h}}{\partial \mathbf{x}}\) 是编码的雅可比矩阵,\(\lambda\) 是收缩系数。
对于单层编码器 \(\mathbf{h} = f(\mathbf{W}_e \mathbf{x} + \mathbf{b}_e)\),雅可比矩阵为:
收缩惩罚项 \(\lambda \| \mathbf{J}_{\mathbf{h}}(\mathbf{x}) \|_F^2\) 迫使编码器学习对输入扰动具有鲁棒性的表示,同时保持对重构的保真度。这种收缩特性与去噪自编码器在隐式学习数据流形结构方面具有相似的动机。
3.4 三种正则化自编码器对比
| 类型 | 正则化方式 | 损失函数 | 核心效果 |
|---|---|---|---|
| 稀疏自编码器 | KL散度惩罚 | \(\mathcal{L} + \beta \sum_j \text{KL}(\rho\|\hat{\rho}_j)\) | 激活稀疏性,特征选择性 |
| 去噪自编码器 | 输入噪声注入 | \(\mathbb{E}_{C}[\|\mathbf{x} - D(E(\tilde{\mathbf{x}}))\|^2]\) | 去噪鲁棒性,流形学习 |
| 收缩自编码器 | 雅可比范数惩罚 | \(\mathcal{L} + \lambda\|\mathbf{J}_h\|_F^2\) | 对输入扰动不敏感 |
4. 变分自编码器
4.1 背景与动机
变分自编码器(Variational Autoencoder, VAE)是一种生成模型,它将自编码器与变分推断相结合,能够从学习到的潜在分布中生成新样本。VAE的核心假设是:数据 \(\mathbf{x}\) 由一个隐变量 \(\mathbf{z}\) 生成,其中 \(\mathbf{z}\) 服从某个先验分布 \(p(\mathbf{z})\)(通常为标准正态分布)。
生成过程为:
然而,直接计算该积分是 intractable 的。VAE引入变分推断来近似后验分布 \(p(\mathbf{z}|\mathbf{x})\)。
4.2 变分下界
VAE引入一个参数化的近似后验 \(q_\phi(\mathbf{z}|\mathbf{x})\)(编码器),目标是最大化数据的对数似然 \(\log p_\theta(\mathbf{x})\)。通过变分推断,可以推导出证据下界(Evidence Lower Bound, ELBO):
第一项是重构似然(解码器的重构能力),第二项是近似后验与先验之间的KL散度(正则化项,确保潜在空间的结构接近先验分布)。
VAE的损失函数为负ELBO(需最小化):
4.3 重参数化技巧
由于从 \(q_\phi(\mathbf{z}|\mathbf{x})\) 直接采样会导致梯度无法回传,VAE使用重参数化技巧(Reparameterization Trick):
其中 \(\boldsymbol{\mu}_\phi(\mathbf{x})\) 和 \(\boldsymbol{\sigma}_\phi(\mathbf{x})\) 是编码器输出的均值和标准差向量。通过这一变换,随机性转移到独立的高斯噪声 \(\boldsymbol{\epsilon}\),使得梯度能够流经 \(\boldsymbol{\mu}_\phi\) 和 \(\boldsymbol{\sigma}_\phi\)。
4.4 解码器与生成
给定潜在表示 \(\mathbf{z}\),解码器(生成网络)\(p_\theta(\mathbf{x}|\mathbf{z})\) 负责从 \(\mathbf{z}\) 生成数据。对于图像数据,常用伯努利分布(像素值二值化)或高斯分布(连续值)。
生成新样本时,只需从先验分布 \(p(\mathbf{z}) = \mathcal{N}(\mathbf{0}, \mathbf{I})\) 中采样 \(\mathbf{z}\),然后通过解码器生成 \(\hat{\mathbf{x}} \sim p_\theta(\mathbf{x}|\mathbf{z})\)。
5. 随机编码器与解码器
5.1 随机编码器与解码器
在前述自编码器中,编码器和解码器可以是随机映射(Stochastic Mapping)。这意味着编码过程不再输出确定性的潜在表示,而是输出一个条件分布 \(q(\mathbf{h}|\mathbf{x})\),解码过程则输出 \(p(\mathbf{x}|\mathbf{h})\)。
随机编码器的优势在于:它能够更好地捕捉数据分布的不确定性,并产生更具表达力的潜在表示。在变分自编码器中,这一特性得到了充分体现。
5.2 Gibbs采样
在某些随机自编码器中,特别是当编码器和解码器都是隐变量模型时,推理过程可能涉及Gibbs采样。Gibbs采样是一种马尔可夫链蒙特卡洛(MCMC)方法,用于从多变量条件分布中迭代采样。
具体而言,假设我们有隐变量 \(\mathbf{h}\) 和可见变量 \(\mathbf{x}\),Gibbs采样交替进行:
通过足够次数的迭代,采样链会收敛到平稳分布,从而近似真实的后验分布。
5.3 唤醒-睡眠算法
唤醒-睡眠算法(Wake-Sleep Algorithm)是训练随机自编码器的一种经典方法,由Hinton等人提出。该算法交替执行两个阶段:
唤醒阶段(Wake Phase): - 从数据分布 \(p_{\text{data}}(\mathbf{x})\) 采样 \(\mathbf{x}\) - 固定编码器 \(q_\phi(\mathbf{h}|\mathbf{x})\),更新解码器参数 \(\theta\) - 目标:最大化 \(\log p_\theta(\mathbf{x}|\mathbf{h})\),即使重构误差最小
睡眠阶段(Sleep Phase): - 从先验 \(p(\mathbf{h})\) 采样 \(\mathbf{h}\) - 固定解码器 \(p_\theta(\mathbf{x}|\mathbf{h})\),更新编码器参数 \(\phi\) - 目标:最小化 \(\text{KL}(p_\theta(\mathbf{x}|\mathbf{h}) \| q_\phi(\mathbf{x}|\mathbf{h}))\),使近似后验与似然匹配
唤醒-睡眠算法的一个关键挑战是:睡眠阶段的编码器目标与唤醒阶段不一致,导致训练效率较低。尽管如此,它仍然是训练随机编码器的重要方法之一。
6. 信息论与流形学习视角
6.1 信息论视角
从信息论角度看,自编码器的目标可以理解为最大化编码对输入的信息保留,同时最小化编码的描述长度。
互信息 \(I(\mathbf{x}; \mathbf{h})\) 描述了编码 \(\mathbf{h}\) 中包含的关于输入 \(\mathbf{x}\) 的信息量:
对于欠完备自编码器,瓶颈效应自然限制了 \(I(\mathbf{x}; \mathbf{h})\) 的上界。对于稀疏自编码器,稀疏惩罚实际上是对编码施加了信息瓶颈(Information Bottleneck),迫使编码使用更少的比特数来描述输入。
变分自编码器中的KL正则化项 \(\text{KL}(q_\phi(\mathbf{z}|\mathbf{x}) \| p(\mathbf{z}))\) 也有信息论解释:它等价于编码率失真理论中的码率(Rate),而重构项对应于失真(Distortion),ELBO正是率失真函数的下界。
6.2 流形学习视角
自编码器的另一个重要视角来自流形学习(Manifold Learning)。流形假设认为,高维数据集中有用的结构位于一个嵌入在高维空间中的低维流形上。
去噪自编码器和收缩自编码器的成功可以用流形学习来解释:
- 去噪自编码器:学习将损坏数据点"推回"到数据流形上,即学习流形的切空间方向。
- 收缩自编码器:惩罚编码对输入方向的敏感性,使编码在流形切空间方向上变化平缓。
从几何角度看,自编码器的潜在空间表示等价于在数据流形上进行坐标化。好的编码应该满足以下性质:
- 局部保距性:相邻的数据点在潜在空间中也应相邻
- 全局分离性:不同流形上的数据点应在潜在空间中被有效区分
- 坐标稀疏性:每个数据点只被少数坐标的较大激活所描述
6.3 潜在空间的几何性质
潜在空间 \(\mathcal{Z}\) 是编码器将数据空间 \(\mathcal{X}\) 映射到的低维空间。对于学习良好的自编码器,潜在空间具有以下几何性质:
其中 \(\phi\) 为编码器,\(\psi\) 为解码器。理想情况下,\(\phi\) 和 \(\psi\) 构成同胚映射(双射且连续),即流形结构被完整保留。
然而,当编码维度 \(d < \dim(\mathcal{X})\) 时,严格的双射通常不存在。因此,自编码器实际上学习的是流形的一个近似嵌入,不可避免地会在某些区域引入畸变。稀疏和去噪正则化通过改变学习目标,使模型倾向于保留那些对重构最重要的流形结构。
7. 应用
7.1 降维
自编码器最直接的应用是降维(Dimensionality Reduction)。相比PCA等线性方法,非线性自编码器能够捕捉数据中的非线性结构,从而获得更好的降维效果。
对于给定的数据 \(\mathbf{x} \in \mathbb{R}^n\),编码器将其映射到 \(d\) 维潜在空间 \(\mathbf{h} \in \mathbb{R}^d\)(\(d < n\)),解码器再将 \(\mathbf{h}\) 重构为 \(\hat{\mathbf{x}}\)。通过最小化 \(\|\mathbf{x} - \hat{\mathbf{x}}\|^2\),网络学习到一个能够保留数据主要变异方向的低维表示。
这种非线性降维在以下场景特别有用:
- 数据具有非线性结构(如Swiss Roll、Helix等流形)
- 需要保留局部邻域结构
- 需要可学习的降维映射,可泛化到未见数据
7.2 表示学习
自编码器是表示学习(Representation Learning)的核心方法之一。学习到的潜在表示 \(\mathbf{h}\) 可以作为下游任务(如分类、聚类、检索)的输入特征。
相比原始高维输入,低维表示具有以下优势:
- 降噪:去除冗余和不相关信息
- 去相关:消除特征间的相关性
- 维度约简:降低计算和存储成本
- 语义可分性:在潜在空间中相似样本聚集在一起
预训练自编码器(特别是深度自编码器)曾广泛用于深层网络的初始化,尽管后来逐层预训练被Batch Normalization、Adam等优化技术所取代,但自编码器作为表示学习工具的重要性并未减弱。
7.3 生成模型
基于自编码器的生成模型(如VAE)能够从学习到的潜在分布中生成新样本。生成过程为:
- 从先验分布 \(p(\mathbf{z})\) 采样 \(\mathbf{z}\)
- 通过解码器生成 \(\hat{\mathbf{x}} \sim p_\theta(\mathbf{x}|\mathbf{z})\)
生成样本的质量取决于:
- 潜在空间的正则化程度(KL项权重)
- 解码器的网络容量
- 重构损失与正则化项的平衡
VAE与其他生成模型(如GAN、PixelCNN)相比,具有以下特点:
- 可推断的潜在变量:潜在变量具有明确语义,可插值、可解释
- 稳定的训练过程:无需对抗训练,避免模式崩溃
- 计算效率:编码器和解码器可并行计算
7.4 公式汇总表
| 公式名称 | 数学表达式 | 所属模型/概念 |
|---|---|---|
| 重构损失 | \(\mathcal{L}(\mathbf{x}, \hat{\mathbf{x}}) = \|\mathbf{x} - D_\theta(E_\phi(\mathbf{x}))\|^2\) | 基础自编码器 |
| 稀疏惩罚(KL散度) | \(\text{KL}(\rho \| \hat{\rho}_j) = \rho \log\frac{\rho}{\hat{\rho}_j} + (1-\rho)\log\frac{1-\rho}{1-\hat{\rho}_j}\) | 稀疏自编码器 |
| 稀疏自编码器总损失 | \(\tilde{\mathcal{L}} = \mathcal{L} + \beta \sum_j \text{KL}(\rho\|\hat{\rho}_j)\) | 稀疏自编码器 |
| 去噪自编码器损失 | \(\mathcal{L}_{\text{DAE}} = \mathbb{E}_{C}[\|\mathbf{x} - D_\theta(E_\phi(\tilde{\mathbf{x}}))\|^2]\) | 去噪自编码器 |
| 收缩惩罚(雅可比范数) | \(\|\mathbf{J}_h(\mathbf{x})\|_F^2\) | 收缩自编码器 |
| 收缩自编码器总损失 | \(\tilde{\mathcal{L}} = \mathcal{L} + \lambda\|\mathbf{J}_h\|_F^2\) | 收缩自编码器 |
| VAE ELBO | $\mathcal{L}{\text{ELBO}} = \mathbb{E}}[\log p_\theta(\mathbf{x | \mathbf{z})] - \text{KL}(q_\phi|p)$ |
| VAE总损失 | $\mathcal{L}{\text{VAE}} = -\mathbb{E}}[\log p_\theta(\mathbf{x | \mathbf{z})] + \text{KL}(q_\phi|p)$ |
| 重参数化技巧 | \(\mathbf{z} = \boldsymbol{\mu}_\phi(\mathbf{x}) + \boldsymbol{\sigma}_\phi(\mathbf{x}) \odot \boldsymbol{\epsilon}, \ \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I})\) | 变分自编码器 |
| 互信息 | \(I(\mathbf{x}; \mathbf{h}) = \mathbb{E}\left[\log\frac{p(\mathbf{x}, \mathbf{h})}{p(\mathbf{x})p(\mathbf{h})}\right]\) | 信息论视角 |
小结
自编码器作为无监督学习的核心模型,涵盖了从基础欠完备结构到变分推断的丰富内容。通过在编码和解码过程中引入各种正则化技术,自编码器能够学习具有不同性质的潜在表示——稀疏的、去噪的、收缩的、或结构化的(VAE)。这些表示既可用于降维和特征学习,也可作为生成模型的基石。从信息论和流形学习的视角来看,自编码器的学习过程可以理解为在数据的内在低维流形上进行坐标化,并在信息瓶颈约束下最大化对原始信息的保留。随着深度生成模型的快速发展,自编码器(尤其是VAE)将继续在表示学习和生成建模领域发挥重要作用。