跳转至

第十五章:表示学习

1. 概述:什么是表示学习

表示学习(Representation Learning) 是深度学习核心理念之一,其核心目标是让机器能够自动从数据中学习出有效的特征表示,而非依赖人工设计的特征。在传统机器学习中,特征工程往往需要领域专家的大量知识和经验;而表示学习则通过端到端的学习方式,让模型自行发现适合任务的特征表示。

一个好的表示应当具备以下特性:语义丰富性(捕获数据的潜在语义结构)、抽象层次性(从底层细节到高层概念的多层次组织)、泛化能力(对未见过的数据具有良好适应性)以及计算效率(便于后续推理和计算)。

现代深度学习的几乎所有成功都可以追溯到表示学习的成功:卷积神经网络之所以能够在图像任务上取得突破,正是因为它学习到了从边缘、纹理到物体部件的层级表示;循环神经网络之所以能够处理序列数据,是因为它建立了从词汇到句法再到语义的层级表示。


2. 贪心逐层预训练与无监督预训练

2.1 贪心逐层预训练的思想

贪心逐层预训练(Greedy Layer-Wise Pretraining) 是深度学习早期最重要的训练策略之一。其核心思想是:将深层网络的训练分解为一系列逐层进行的子问题,每一层都作为一个自编码器或类似的单层模型进行训练,层层叠加形成最终网络。

这一方法的动机源于深度网络训练的困难。当网络层数较多时,梯度消失和梯度爆炸问题严重,全局反向传播往往难以收敛。贪心逐层预训练通过逐层初始化网络参数,提供了一个良好的起点,使得后续的全局微调能够正常进行。

具体而言,假设我们有一个 \(L\) 层的神经网络。贪心逐层预训练的过程如下:

\[ \mathbf{h}^{(1)} = f_1(\mathbf{x}; \boldsymbol{\theta}_1) \\ \mathbf{h}^{(2)} = f_2(\mathbf{h}^{(1)}; \boldsymbol{\theta}_2) \\ \vdots \\ \mathbf{h}^{(L)} = f_L(\mathbf{h}^{(L-1)}; \boldsymbol{\theta}_L) \]

每一层 \(l\) 的训练目标是最小化重构误差:

\[ \mathcal{L}_l = \|\mathbf{h}^{(l)} - \mathbf{h}^{(l-1)}\|^2 \]

2.2 无监督预训练

无监督预训练(Unsupervised Pretraining) 是贪心逐层预训练的一种具体形式,它利用无标签数据学习特征表示。在深度学习的早期阶段,获取大量标注数据往往成本高昂,而无标签数据则相对丰富。无监督预训练正是利用这一特点,先在无标签数据上学习初步的表示,再在少量标注数据上进行微调。

典型的无监督预训练使用自编码器(Autoencoder)限制玻尔兹曼机(Restricted Boltzmann Machine, RBM) 作为单层模型。自编码器通过编码器将输入压缩到低维潜在空间,再通过解码器重构原始输入:

\[ \mathbf{h} = f_{\text{enc}}(\mathbf{x}; \mathbf{W}_{\text{enc}}, \mathbf{b}_{\text{enc}}) \\ \hat{\mathbf{x}} = f_{\text{dec}}(\mathbf{h}; \mathbf{W}_{\text{dec}}, \mathbf{b}_{\text{dec}}) \\ \mathcal{L}_{\text{AE}} = \|\mathbf{x} - \hat{\mathbf{x}}\|^2 \]

通过最小化重构误差,自编码器被迫学习到数据的主要变化因子,从而形成有用的表示。

2.3 预训练与微调

预训练完成后,通常会进行监督微调(Supervised Fine-Tuning) 阶段。在这一阶段,整个网络(通常是预训练网络堆叠一个最终分类层)会在少量标注数据上进行有监督学习,微调所有层的参数:

\[ \mathcal{L}_{\text{total}} = \mathcal{L}_{\text{supervised}}(\hat{\mathbf{y}}, \mathbf{y}) + \lambda \mathcal{L}_{\text{pretrain}} \]

无监督预训练为什么有效?理论上,有研究表明无监督预训练相当于一种正则化形式,它将参数空间限制在参数空间的一个良好区域内。经验上,预训练初始化使得网络更有可能收敛到一个较优的局部最小值。


3. 迁移学习与域适应

3.1 迁移学习的核心思想

迁移学习(Transfer Learning) 是表示学习最重要的应用场景之一。其核心思想是将在一个任务(源任务)中学习到的表示或知识迁移到另一个相关任务(目标任务)中,从而加速目标任务的学习或提升其性能。

迁移学习之所以有效,是因为不同的任务之间往往共享着底层的特征表示。例如,识别猫和识别狗都需要理解边缘、纹理、形状等底层视觉概念;识别英语句子和法语句子都需要理解词法、句法等语言结构。因此,在一个任务中学习到的表示往往对另一个任务也是有用的。

形式化地,假设源任务为 \(\mathcal{T}_s\),目标任务为 \(\mathcal{T}_t\),源域为 \(\mathcal{D}_s\),目标域为 \(\mathcal{D}_t\)。迁移学习的目标是:利用 \(\mathcal{D}_s\)\(\mathcal{T}_s\) 中获得的知识来提升目标预测函数 \(f_t(\cdot)\)\(\mathcal{D}_t\) 上的表现。

3.2 域适应

域适应(Domain Adaptation) 是迁移学习的一个重要子领域,它处理源域和目标域分布不同但任务相同的情况。例如,我们可能在一个大规模的图像数据集(如ImageNet)上训练模型,然后将该模型应用到另一个不同分布的图像数据集(如医学影像)上。

域适应的关键是消除域间的分布差异。常见的方法包括:

基于差异的方法(Discrepancy-based Methods):这类方法通过度量源域和目标域表示之间的距离,并将其作为正则化项:

\[ \mathcal{L}_{\text{domain}} = d(\mathbf{h}_s, \mathbf{h}_t) \]

其中 \(d(\cdot, \cdot)\) 可以是最大均值差异(Maximum Mean Discrepancy, MMD):

\[ \text{MMD}^2(\mathbf{h}_s, \mathbf{h}_t) = \left\| \frac{1}{n_s} \sum_{i=1}^{n_s} \phi(\mathbf{h}_s^{(i)}) - \frac{1}{n_t} \sum_{j=1}^{n_t} \phi(\mathbf{h}_t^{(j)}) \right\|^2 \]

基于对抗的方法(Adversarial-based Methods):域对抗神经网络(Domain Adversarial Neural Network, DANN)是这类方法的代表,它引入一个域判别器来区分源域和目标域的表示,同时鼓励特征提取器学习能够"欺骗"域判别器的域不变表示:

\[ \min_{\theta_f} \max_{\theta_d} \mathcal{L}_{\text{task}}(\theta_f) - \lambda \mathcal{L}_{\text{domain}}(\theta_f, \theta_d) \]

3.3 跨领域迁移的挑战

迁移学习虽然强大,但也面临诸多挑战。负迁移(Negative Transfer) 是最严重的问题之一:当源任务和目标任务差异过大时,迁移反而可能导致性能下降。此外,协变量偏移(Covariate Shift)先验偏移(Prior Shift) 等分布差异问题也需要针对处理。


4. 半监督学习与表示学习

4.1 半监督学习的背景

半监督学习(Semi-Supervised Learning) 介于监督学习和无监督学习之间,它利用大量无标签数据和少量有标签数据来训练模型。在现实应用中,无标签数据往往比有标签数据丰富得多,如何充分利用无标签数据是半监督学习的核心问题。

表示学习为半监督学习提供了一种自然的解决方案:通过无监督学习从无标签数据中学习出良好的表示,这些表示能够捕获数据的潜在结构,从而帮助有监督学习任务。

4.2 基于表示的半监督学习

一种经典的半监督学习方法是首先在无标签数据上学习表示,然后在学习到的表示上训练分类器。这一方法的有效性可以用以下逻辑理解:好的表示应当使得同类样本在表示空间中接近,异类样本远离。因此,无标签数据可以帮助发现数据的内在几何结构:

\[ \mathbf{h} = f(\mathbf{x}; \boldsymbol{\theta}) \\ \min_{\boldsymbol{\theta}} \mathcal{L}_{\text{unsupervised}}(\mathbf{x}; \boldsymbol{\theta}) + \alpha \mathcal{L}_{\text{supervised}}(\mathbf{h}, \mathbf{y}) \]

4.3 典型方法

标签传播(Label Propagation) 是一种基于图的半监督学习方法,它通过在数据点之间构建相似性图,将标签从有标签点传播到无标签点。关键的传播规则为:

\[ \mathbf{Y}^{(t+1)} = \alpha \mathbf{S} \mathbf{Y}^{(t)} + (1-\alpha) \mathbf{Y}^{(0)} \]

其中 \(\mathbf{S}\) 是归一化的相似性矩阵,\(\mathbf{Y}^{(0)}\) 是初始标签分布。

协同训练(Co-training) 是另一种经典的半监督学习方法,它假设每个数据实例可以从两个不同视角(特征集)进行描述,在每个视角上分别训练分类器,并相互标记对方的未标记数据。

自编码器与半监督学习:去噪自编码器(Denoising Autoencoder)通过在输入中添加噪声并训练网络重构原始无噪输入,这使得学习到的表示更加鲁棒。BERT等预训练语言模型也采用了类似的思想,通过掩码语言建模来学习丰富的语言表示。


5. 分布式表示 vs 非分布式表示

5.1 分布式表示的定义与优势

分布式表示(Distributed Representation) 是表示学习最重要的概念之一。在分布式表示中,一个概念由多个神经元或多个特征的组合来表示,而不是由单个神经元单独编码。这与大脑皮层的稀疏编码和并行分布式处理(PDP)理论密切相关。

分布式表示的核心优势在于其组合性(Compositionality)泛化能力

  1. 组合性\(k\) 个特征可以组合表示 \(O(2^k)\) 个不同的概念。这是因为每个特征可以独立取多个值,而特征之间可以自由组合。

  2. 高效利用参数:若使用独热(one-hot)表示,编码 \(n\) 个概念需要 \(O(n)\) 个参数;而分布式表示只需要 \(O(n)\) 个参数,但可以编码指数级数量的概念。

  3. 鲁棒性:分布式表示对噪声和部分损伤具有更强的鲁棒性,因为信息分布在多个神经元上。

分布式表示的典型例子是词嵌入(Word Embedding)。在词嵌入空间中,"king" - "man" + "woman" ≈ "queen",这正是分布式表示组合性的体现。

5.2 非分布式表示

与分布式表示相对的是非分布式表示(Non-Distributed Representation),也称为局部表示(Localist Representation)独热表示(One-Hot Representation)。在非分布式表示中,每个概念由一个独立的神经元或特征来标识。

非分布式表示的典型例子是传统的聚类方法:每个样本被分配到一个簇中,用一个 \(n\) 维向量表示,其中只有一个位置为1,其余为0。非分布式表示的主要问题是:无法捕获概念之间的相似性和关系,且参数量随概念数线性增长。

5.3 混合表示与嵌入

现代深度学习往往采用混合表示(Hybrid Representation) 的策略。典型的做法是将非分布式表示(独热向量)作为网络的输入,然后通过嵌入层(Embedding Layer)将其转换为分布式表示:

\[ \mathbf{h} = \mathbf{E} \mathbf{x}, \quad \mathbf{x} \in \{0,1\}^n, \quad \mathbf{E} \in \mathbb{R}^{d \times n} \]

这种方法既保留了独热表示的简洁性(每个输入位置明确),又获得了分布式表示的强大表示能力。


6. 解耦表示与不变特征学习

6.1 解耦表示的概念

解耦表示(Disentangled Representation) 指的是表示中的每个维度(或维度组)对应于数据的独立变异因素(Latent Factor)。例如,在人脸图像的表示中,一个维度可能对应于脸型的胖瘦,另一个维度对应于发型,再一个维度对应于肤色,等等。

解耦表示的学习是表示学习研究的一个重要目标。理想的解耦表示具有以下优点:可解释性(每个维度都有明确的语义含义)、可控性(通过操作特定维度来生成特定变化)、泛化性(学习到的变异因素可能泛化到未见过的组合)。

6.2 \(\beta\)-VAE 与解耦学习

变分自编码器(VAE)及其变体 \(\beta\)-VAE 是学习解耦表示的经典方法。标准 VAE 的目标函数为:

\[ \mathcal{L}_{\text{VAE}} = \mathbb{E}_{q(\mathbf{h}|\mathbf{x})}[\log p(\mathbf{x}|\mathbf{h})] - \beta \cdot D_{\text{KL}}(q(\mathbf{h}|\mathbf{x}) \| p(\mathbf{h})) \]

其中 \(\beta\) 控制潜在空间的正则化强度。较大的 \(\beta\) 值会促使潜在变量更加独立,从而学习到更解耦的表示。

6.3 不变特征学习

不变特征学习(Invariant Feature Learning) 旨在学习对某些变换(如旋转、平移、遮挡等)不敏感的表示。不变性的学习对于许多视觉和语音任务至关重要。

对比学习(Contrastive Learning) 是不变特征学习的重要方法。它通过拉近相似样本的表示、推远不相似样本来学习不变特征:

\[ \mathcal{L}_{\text{contrastive}} = -\log \frac{\exp(\text{sim}(\mathbf{h}_i, \mathbf{h}_j)/\tau)}{\sum_{k \neq i} \exp(\text{sim}(\mathbf{h}_i, \mathbf{h}_k)/\tau)} \]

其中 \(\text{sim}(\cdot, \cdot)\) 是余弦相似度,\(\tau\) 是温度参数。

对抗训练(Adversarial Training) 也被用于学习不变特征。通过向输入中添加对抗扰动,并训练模型在这些扰动下保持输出不变,可以学习到对这类扰动不变的表示:

\[ \min_{\boldsymbol{\theta}} \mathbb{E}_{(\mathbf{x}, y) \sim p_{\text{data}}} \max_{\boldsymbol{\delta} \in \Delta} \mathcal{L}(\mathbf{x} + \boldsymbol{\delta}, y; \boldsymbol{\theta}) \]

7. 多任务学习、课程学习与强化学习中的表示

7.1 监督预训练

监督预训练(Supervised Pretraining) 是指在一个相关任务上用有标签数据进行预训练,然后在目标任务上进行微调。与无监督预训练不同,监督预训练直接利用有标签数据学习与任务相关的表示。

监督预训练在计算机视觉领域尤为成功。ImageNet预训练模型被广泛用作各种视觉任务的初始化,即所谓的"迁移学习基线"。其有效性可以归因于:ImageNet分类任务需要的底层视觉特征(边缘、纹理、形状部件等)与大多数视觉任务共享。

7.2 课程学习

课程学习(Curriculum Learning) 是一种模仿人类学习过程的训练策略。它从简单的样本或任务开始,逐渐引入更复杂的样本或任务进行学习。课程学习可以看作是 一种自适应的课程安排(Curriculum Schedule)。

课程学习的基本思想可以用课程调度函数描述:设 \(p(t)\) 表示在训练步骤 \(t\) 选择"困难"样本的概率,课程学习通常要求 \(p(t)\) 随训练进行递减:

\[ p(t) = \max\left(1 - \frac{t}{T}, \epsilon\right) \]

其中 \(T\) 是总训练步数,\(\epsilon\) 是最小概率。课程学习被证明可以加速收敛并提升最终性能,特别是在训练数据不平衡或任务较难的情况下。

7.3 多任务学习

多任务学习(Multi-Task Learning) 通过同时学习多个相关任务来提升每个任务的性能。共享表示是多任务学习的核心:不同任务共享底层的特征表示,任务特定的输出层则处理高层任务特定逻辑。

多任务学习的参数共享机制有两种主要形式:

硬参数共享(Hard Parameter Sharing):所有任务共享底层的隐藏层,仅在输出层有任务特定的参数。这是目前最常用的多任务学习方式。

软参数共享(Soft Parameter Sharing):每个任务有自己的参数,通过正则化损失鼓励不同任务的参数相似:

\[ \mathcal{L}_{\text{multi-task}} = \sum_{i=1}^{T} \mathcal{L}_i(\boldsymbol{\theta}_i) + \lambda \sum_{i<j} \|\boldsymbol{\theta}_i - \boldsymbol{\theta}_j\|^2 \]

多任务学习的挑战包括:任务冲突(不同任务可能需要相互冲突的表示)、任务权重(如何平衡不同任务的重要性)等。

7.4 表示学习在强化学习中的应用

强化学习(Reinforcement Learning) 中,表示学习发挥着至关重要的作用。强化学习的一个核心问题是维度灾难:状态空间和动作空间可能非常大,直接在原始状态空间上学习值函数或策略往往不可行。

深度强化学习(Deep Reinforcement Learning) 通过使用深度神经网络来学习状态的表示,从而解决维度灾难问题。Deep Q-Network(DQN)使用卷积神经网络学习游戏画面的表示:

\[ Q(\mathbf{s}, a; \boldsymbol{\theta}) = \mathbf{h}^T \mathbf{w}_a \]

其中 \(\mathbf{h}\) 是网络学到的状态表示,\(\mathbf{w}_a\) 是动作 \(a\) 对应的输出权重。

表示学习对强化学习的影响:良好的状态表示可以显著加速强化学习的探索,提高值函数的泛化能力。逆强化学习(Inverse Reinforcement Learning)则通过学习奖赏函数对应的表示来理解专家行为。

基于模型的强化学习(Model-Based RL) 中的表示学习尤为重要。学习环境模型的关键是学习能够支持预测的状态表示,这要求表示既保留预测未来状态所需的信息,又要对无关细节保持不变。


8. 公式汇总表

概念/方法 公式 描述
自编码器重构损失 \(\mathcal{L}_{\text{AE}} = \|\mathbf{x} - \hat{\mathbf{x}}\|^2\) 衡量输入与重构输出的差异
最大均值差异 \(\text{MMD}^2 = \left\| \frac{1}{n_s} \sum \phi(\mathbf{h}_s) - \frac{1}{n_t} \sum \phi(\mathbf{h}_t) \right\|^2\) 度量源域与目标域分布差异
标签传播 \(\mathbf{Y}^{(t+1)} = \alpha \mathbf{S} \mathbf{Y}^{(t)} + (1-\alpha) \mathbf{Y}^{(0)}\) 迭代传播标签到无标签样本
\(\beta\)-VAE $\mathcal{L}_{\text{VAE}} = \mathbb{E}[\log p(\mathbf{x} \mathbf{h})] - \beta D_{\text{KL}}(q||p)$
对比学习损失 \(\mathcal{L}_{\text{contrastive}} = -\log \frac{\exp(\text{sim}/\tau)}{\sum \exp(\text{sim}/\tau)}\) 拉近正样本、推远负样本
对抗训练目标 \(\min_{\boldsymbol{\theta}} \max_{\boldsymbol{\delta}} \mathcal{L}(\mathbf{x}+\boldsymbol{\delta}, y)\) 学习对对抗扰动不变的表示
课程学习调度 \(p(t) = \max(1 - t/T, \epsilon)\) 困难样本被选中的概率随时间递减
多任务软共享 \(\mathcal{L}_{\text{MTL}} = \sum_i \mathcal{L}_i + \lambda \sum_{i<j}\|\boldsymbol{\theta}_i-\boldsymbol{\theta}_j\|^2\) 通过正则化实现参数共享
词嵌入映射 \(\mathbf{h} = \mathbf{E} \mathbf{x}\) 独热向量到分布式表示的线性映射

9. 总结与展望

表示学习是深度学习的基石,它回答了"如何让机器自动学习到好的特征表示"这一根本问题。从早期的贪心逐层预训练到现代的大规模预训练模型,表示学习经历了深刻的演进。

核心洞见:好的表示应当是解耦的(不同维度对应独立因素)、不变的(对无关变换保持稳定)、可组合的(底层特征可组合成高层概念)、可迁移的(能够跨任务、跨领域泛化)。

未来方向包括:学习更加可解释的表示、理解表示学习的理论基础、建立表示学习与因果推断的联系、以及在更大规模、更多模态数据上的自监督学习。

表示学习的进步将继续推动人工智能的发展,因为智能的本质之一就是能够学习有用的表示。