第十五章:表示学习
1. 概述:什么是表示学习
表示学习(Representation Learning) 是深度学习核心理念之一,其核心目标是让机器能够自动从数据中学习出有效的特征表示,而非依赖人工设计的特征。在传统机器学习中,特征工程往往需要领域专家的大量知识和经验;而表示学习则通过端到端的学习方式,让模型自行发现适合任务的特征表示。
一个好的表示应当具备以下特性:语义丰富性(捕获数据的潜在语义结构)、抽象层次性(从底层细节到高层概念的多层次组织)、泛化能力(对未见过的数据具有良好适应性)以及计算效率(便于后续推理和计算)。
现代深度学习的几乎所有成功都可以追溯到表示学习的成功:卷积神经网络之所以能够在图像任务上取得突破,正是因为它学习到了从边缘、纹理到物体部件的层级表示;循环神经网络之所以能够处理序列数据,是因为它建立了从词汇到句法再到语义的层级表示。
2. 贪心逐层预训练与无监督预训练
2.1 贪心逐层预训练的思想
贪心逐层预训练(Greedy Layer-Wise Pretraining) 是深度学习早期最重要的训练策略之一。其核心思想是:将深层网络的训练分解为一系列逐层进行的子问题,每一层都作为一个自编码器或类似的单层模型进行训练,层层叠加形成最终网络。
这一方法的动机源于深度网络训练的困难。当网络层数较多时,梯度消失和梯度爆炸问题严重,全局反向传播往往难以收敛。贪心逐层预训练通过逐层初始化网络参数,提供了一个良好的起点,使得后续的全局微调能够正常进行。
具体而言,假设我们有一个 \(L\) 层的神经网络。贪心逐层预训练的过程如下:
每一层 \(l\) 的训练目标是最小化重构误差:
2.2 无监督预训练
无监督预训练(Unsupervised Pretraining) 是贪心逐层预训练的一种具体形式,它利用无标签数据学习特征表示。在深度学习的早期阶段,获取大量标注数据往往成本高昂,而无标签数据则相对丰富。无监督预训练正是利用这一特点,先在无标签数据上学习初步的表示,再在少量标注数据上进行微调。
典型的无监督预训练使用自编码器(Autoencoder) 或 限制玻尔兹曼机(Restricted Boltzmann Machine, RBM) 作为单层模型。自编码器通过编码器将输入压缩到低维潜在空间,再通过解码器重构原始输入:
通过最小化重构误差,自编码器被迫学习到数据的主要变化因子,从而形成有用的表示。
2.3 预训练与微调
预训练完成后,通常会进行监督微调(Supervised Fine-Tuning) 阶段。在这一阶段,整个网络(通常是预训练网络堆叠一个最终分类层)会在少量标注数据上进行有监督学习,微调所有层的参数:
无监督预训练为什么有效?理论上,有研究表明无监督预训练相当于一种正则化形式,它将参数空间限制在参数空间的一个良好区域内。经验上,预训练初始化使得网络更有可能收敛到一个较优的局部最小值。
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):这类方法通过度量源域和目标域表示之间的距离,并将其作为正则化项:
其中 \(d(\cdot, \cdot)\) 可以是最大均值差异(Maximum Mean Discrepancy, MMD):
基于对抗的方法(Adversarial-based Methods):域对抗神经网络(Domain Adversarial Neural Network, DANN)是这类方法的代表,它引入一个域判别器来区分源域和目标域的表示,同时鼓励特征提取器学习能够"欺骗"域判别器的域不变表示:
3.3 跨领域迁移的挑战
迁移学习虽然强大,但也面临诸多挑战。负迁移(Negative Transfer) 是最严重的问题之一:当源任务和目标任务差异过大时,迁移反而可能导致性能下降。此外,协变量偏移(Covariate Shift)、先验偏移(Prior Shift) 等分布差异问题也需要针对处理。
4. 半监督学习与表示学习
4.1 半监督学习的背景
半监督学习(Semi-Supervised Learning) 介于监督学习和无监督学习之间,它利用大量无标签数据和少量有标签数据来训练模型。在现实应用中,无标签数据往往比有标签数据丰富得多,如何充分利用无标签数据是半监督学习的核心问题。
表示学习为半监督学习提供了一种自然的解决方案:通过无监督学习从无标签数据中学习出良好的表示,这些表示能够捕获数据的潜在结构,从而帮助有监督学习任务。
4.2 基于表示的半监督学习
一种经典的半监督学习方法是首先在无标签数据上学习表示,然后在学习到的表示上训练分类器。这一方法的有效性可以用以下逻辑理解:好的表示应当使得同类样本在表示空间中接近,异类样本远离。因此,无标签数据可以帮助发现数据的内在几何结构:
4.3 典型方法
标签传播(Label Propagation) 是一种基于图的半监督学习方法,它通过在数据点之间构建相似性图,将标签从有标签点传播到无标签点。关键的传播规则为:
其中 \(\mathbf{S}\) 是归一化的相似性矩阵,\(\mathbf{Y}^{(0)}\) 是初始标签分布。
协同训练(Co-training) 是另一种经典的半监督学习方法,它假设每个数据实例可以从两个不同视角(特征集)进行描述,在每个视角上分别训练分类器,并相互标记对方的未标记数据。
自编码器与半监督学习:去噪自编码器(Denoising Autoencoder)通过在输入中添加噪声并训练网络重构原始无噪输入,这使得学习到的表示更加鲁棒。BERT等预训练语言模型也采用了类似的思想,通过掩码语言建模来学习丰富的语言表示。
5. 分布式表示 vs 非分布式表示
5.1 分布式表示的定义与优势
分布式表示(Distributed Representation) 是表示学习最重要的概念之一。在分布式表示中,一个概念由多个神经元或多个特征的组合来表示,而不是由单个神经元单独编码。这与大脑皮层的稀疏编码和并行分布式处理(PDP)理论密切相关。
分布式表示的核心优势在于其组合性(Compositionality) 和 泛化能力:
-
组合性: \(k\) 个特征可以组合表示 \(O(2^k)\) 个不同的概念。这是因为每个特征可以独立取多个值,而特征之间可以自由组合。
-
高效利用参数:若使用独热(one-hot)表示,编码 \(n\) 个概念需要 \(O(n)\) 个参数;而分布式表示只需要 \(O(n)\) 个参数,但可以编码指数级数量的概念。
-
鲁棒性:分布式表示对噪声和部分损伤具有更强的鲁棒性,因为信息分布在多个神经元上。
分布式表示的典型例子是词嵌入(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)将其转换为分布式表示:
这种方法既保留了独热表示的简洁性(每个输入位置明确),又获得了分布式表示的强大表示能力。
6. 解耦表示与不变特征学习
6.1 解耦表示的概念
解耦表示(Disentangled Representation) 指的是表示中的每个维度(或维度组)对应于数据的独立变异因素(Latent Factor)。例如,在人脸图像的表示中,一个维度可能对应于脸型的胖瘦,另一个维度对应于发型,再一个维度对应于肤色,等等。
解耦表示的学习是表示学习研究的一个重要目标。理想的解耦表示具有以下优点:可解释性(每个维度都有明确的语义含义)、可控性(通过操作特定维度来生成特定变化)、泛化性(学习到的变异因素可能泛化到未见过的组合)。
6.2 \(\beta\)-VAE 与解耦学习
变分自编码器(VAE)及其变体 \(\beta\)-VAE 是学习解耦表示的经典方法。标准 VAE 的目标函数为:
其中 \(\beta\) 控制潜在空间的正则化强度。较大的 \(\beta\) 值会促使潜在变量更加独立,从而学习到更解耦的表示。
6.3 不变特征学习
不变特征学习(Invariant Feature Learning) 旨在学习对某些变换(如旋转、平移、遮挡等)不敏感的表示。不变性的学习对于许多视觉和语音任务至关重要。
对比学习(Contrastive Learning) 是不变特征学习的重要方法。它通过拉近相似样本的表示、推远不相似样本来学习不变特征:
其中 \(\text{sim}(\cdot, \cdot)\) 是余弦相似度,\(\tau\) 是温度参数。
对抗训练(Adversarial Training) 也被用于学习不变特征。通过向输入中添加对抗扰动,并训练模型在这些扰动下保持输出不变,可以学习到对这类扰动不变的表示:
7. 多任务学习、课程学习与强化学习中的表示
7.1 监督预训练
监督预训练(Supervised Pretraining) 是指在一个相关任务上用有标签数据进行预训练,然后在目标任务上进行微调。与无监督预训练不同,监督预训练直接利用有标签数据学习与任务相关的表示。
监督预训练在计算机视觉领域尤为成功。ImageNet预训练模型被广泛用作各种视觉任务的初始化,即所谓的"迁移学习基线"。其有效性可以归因于:ImageNet分类任务需要的底层视觉特征(边缘、纹理、形状部件等)与大多数视觉任务共享。
7.2 课程学习
课程学习(Curriculum Learning) 是一种模仿人类学习过程的训练策略。它从简单的样本或任务开始,逐渐引入更复杂的样本或任务进行学习。课程学习可以看作是 一种自适应的课程安排(Curriculum Schedule)。
课程学习的基本思想可以用课程调度函数描述:设 \(p(t)\) 表示在训练步骤 \(t\) 选择"困难"样本的概率,课程学习通常要求 \(p(t)\) 随训练进行递减:
其中 \(T\) 是总训练步数,\(\epsilon\) 是最小概率。课程学习被证明可以加速收敛并提升最终性能,特别是在训练数据不平衡或任务较难的情况下。
7.3 多任务学习
多任务学习(Multi-Task Learning) 通过同时学习多个相关任务来提升每个任务的性能。共享表示是多任务学习的核心:不同任务共享底层的特征表示,任务特定的输出层则处理高层任务特定逻辑。
多任务学习的参数共享机制有两种主要形式:
硬参数共享(Hard Parameter Sharing):所有任务共享底层的隐藏层,仅在输出层有任务特定的参数。这是目前最常用的多任务学习方式。
软参数共享(Soft Parameter Sharing):每个任务有自己的参数,通过正则化损失鼓励不同任务的参数相似:
多任务学习的挑战包括:任务冲突(不同任务可能需要相互冲突的表示)、任务权重(如何平衡不同任务的重要性)等。
7.4 表示学习在强化学习中的应用
在强化学习(Reinforcement Learning) 中,表示学习发挥着至关重要的作用。强化学习的一个核心问题是维度灾难:状态空间和动作空间可能非常大,直接在原始状态空间上学习值函数或策略往往不可行。
深度强化学习(Deep Reinforcement Learning) 通过使用深度神经网络来学习状态的表示,从而解决维度灾难问题。Deep Q-Network(DQN)使用卷积神经网络学习游戏画面的表示:
其中 \(\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. 总结与展望
表示学习是深度学习的基石,它回答了"如何让机器自动学习到好的特征表示"这一根本问题。从早期的贪心逐层预训练到现代的大规模预训练模型,表示学习经历了深刻的演进。
核心洞见:好的表示应当是解耦的(不同维度对应独立因素)、不变的(对无关变换保持稳定)、可组合的(底层特征可组合成高层概念)、可迁移的(能够跨任务、跨领域泛化)。
未来方向包括:学习更加可解释的表示、理解表示学习的理论基础、建立表示学习与因果推断的联系、以及在更大规模、更多模态数据上的自监督学习。
表示学习的进步将继续推动人工智能的发展,因为智能的本质之一就是能够学习有用的表示。