🎓 总站 🏠 本课目录 01 图像基础 02 空间滤波 03 频率滤波 04 彩色处理 05 神经网络 06 表征学习 07 Transformer 08 CNN 09 目标识别 10 生成式模型
视觉计算 · 第6章

表征学习

从数据到嵌入(embedding)的编码学习:基于压缩(自编码器、对比学习、聚类、信息瓶颈)与基于预测(自监督、缺失填补)两大原则,以及 KL 散度、交叉熵、互信息等信息论工具。

📚 学习进度
0%

🎯学习目标

  • 理解表征学习问题:编码 f:𝒳→𝒵 与向量嵌入(embedding);
  • 掌握"好表征"应具备的性质,以及压缩原则与奥卡姆剃刀;
  • 熟悉自编码器、对比学习、聚类(k-means)等压缩方法;
  • 理解自监督学习、代理任务(pretext task)与缺失填补;
  • 掌握 KL 散度、交叉熵、信息熵、互信息与信息瓶颈原则;
  • 了解迁移学习与预训练(如 CLIP)。

1什么是表征学习

深度网络逐层变换数据点,每一层都是数据的一种不同表示。两个方向:

➡️

表征学习

前向:从观测数据 → 潜在嵌入(latent embedding)。学习编码器 f:𝒳→𝒵。

⬅️

生成式建模

反向:从潜在嵌入 → 观测数据。即解码 / 生成。

表示学习的目标是学习如何把数据点 $x \in \mathcal{X}$ 映射到抽象表示 $z \in \mathcal{Z}$,这种映射称为"编码",学得函数 $f:\mathcal{X} \to \mathcal{Z}$。通常 $x$、$z$ 都是高维向量,$z$ 被称为 $x$ 的向量嵌入(embedding)

数据 x𝒳 (高维/复杂) f 编码器 嵌入 z𝒵 (低维/简单) 表征学习 → ← 生成建模
图1 · 表征学习:编码器把复杂数据空间映射到简单嵌入空间
💡 通俗理解:表征学习 = 让机器学会"整理笔记"

核心意思:

表征学习 = 让机器学会"整理笔记",把乱七八糟的原始数据变成有用的特征

举个例子:

一张交通图片的表征:

原始数据 x(几百万个像素):
    像素(0,0) = (120, 130, 125)
    像素(0,1) = (115, 128, 122)
    ...(几百万个数字)

好的表征 z(512个数字):
    z[0] = 0.8(有车)
    z[1] = 0.2(有人)
    z[2] = 0.9(道路)
    z[3] = 0.1(建筑)
    z[4] = 0.7(是否拥堵)
    z[5] = 0.0(是否事故)
    ...

对比:
    原始数据x              表征z
    几百万个数字           512个数字
    信息很乱               信息整理好
    难以直接使用           容易用于分类/检测
    像"500页教科书"        像"1页复习笔记"

好的表征应该做到:

  • 更短:压缩信息(500页→1页)
  • 更整齐:相似东西靠近
  • 更清楚:不同因素分开
  • 更好懂:人能解释一部分

生活类比:

原始数据像一堆没整理的草稿纸;好的表征像整理好的笔记;模型像帮你整理笔记的助手。

2好表征应具备的性质

训练映射 f 的目的是让 z 具备某些理想属性,使 𝒵 成为比 𝒳 更简单、更抽象、组织更好的表示空间:

  • z 的维度低于 x(压缩);
  • z 的分布 p(z) 具有简单结构(如单位正态分布);
  • z 各维度是解耦的(disentangled)
  • z 是可解释的
💡 通俗理解:神经嵌入

核心意思:

神经嵌入 = 神经网络中间层输出的一串数字,就是数据的"特征表示"

举个例子:

图片 → 神经网络 → 中间特征 → 分类结果

    输入:猫的图片(224×224×3 = 150,528个数字)
    
    中间层(第10层):
    输出:512个数字 = 神经嵌入
    
    这512个数字里包含了:
    - 有毛茸茸的耳朵
    - 有尖尖的爪子
    - 有圆圆的眼睛
    - 是四条腿的动物
    ...
    
    输出层:
    根据这512个数字判断:是猫(概率0.95)

嵌入的作用:

  • 分类:根据嵌入判断类别
  • 检索:找嵌入相似的图片
  • 聚类:把嵌入相近的归为一类
  • 可视化:把高维嵌入降到2D/3D显示

嵌入 vs 原始数据:

    原始数据              嵌入
    150,528个数字         512个数字
    像素级信息            语义级信息
    "这个点是什么颜色"    "这是什么动物"
    难以比较              可以计算相似度

生活类比:

神经嵌入像人的"印象"。你看到一只猫,脑子里不是记住每个像素,而是形成"毛茸茸、四条腿、会喵喵叫"的印象。这个印象就是"嵌入"。

💡 通俗理解:表征学习的目标

核心意思:

好的表征 = 压缩、整齐、解耦、可解释

目标1:压缩(维度低于原始数据)

原始:100,000个数字
表征:512个数字
保留重点,去掉废话

目标2:分布简单(摆放有规律)

相似的东西靠近:
- 轿车、公交车、货车 → 靠得近
- 车、道路、行人 → 有关系但不完全一样
- 车、香蕉、杯子 → 离得远

目标3:解耦(每个维度管一类信息)

不好的表征:
- 一个数字同时混着颜色、速度、位置

好的表征:
- z[0] 管颜色
- z[1] 管车型
- z[2] 管位置
- z[3] 管速度

目标4:可解释(人能看懂)

z[0] = 0.8 → 有车
z[1] = 0.2 → 有人
z[2] = 0.9 → 有路

生活类比:

压缩像把文章压缩成摘要;整齐像把书按类别放在书架上;解耦像把颜色、形状、大小分开记录;可解释像笔记写得让人看得懂。

💡 通俗理解:手工特征 vs 学习特征 手工特征(传统方法):人工设计特征提取规则,比如用SIFT找关键点、用HOG描述边缘。问题是费时费力,效果有限。
学习特征(深度学习):让模型自己学怎么提取特征,从数据中自动发现规律。效果好,能学到人想不到的特征。

类比:手工特征 = 老师划重点(可能划不准);学习特征 = 学生自己总结重点(更适合自己)。

端到端学习:输入原始数据 → 直接输出结果,中间的特征提取也自动学习,不需要人工设计特征。

3基于压缩的学习原则 ⭐

好的表示是简约的(parsimonious),只捕捉数据中对任务必需的本质特征。压缩的必要性体现在三层面:

层面含义
存储压缩表示占用更少内存
不变性压缩是对无关干扰因素(nuisance factors)保持不变性的方式
奥卡姆剃刀同等解释数据的假设中,最简单的往往最可能真实
⭐ 压缩的本质压缩 = "剥离伪相关"。在两种同样能拟合数据的表示中,优先选择压缩程度更高的那个。

表征学习器的类型

学习方法学习原则摘要
自编码 Autoencoding压缩移除冗余信息
对比学习 Contrastive压缩实现对观察变换的不变性
聚类 Clustering压缩把连续数据量化为离散类别
未来预测 Future prediction预测预测未来
缺失填补 Imputation预测预测缺失数据
代理任务 Pretext tasks预测预测数据的抽象属性

4自编码器(Autoencoders)

自编码器是一个把数据映射回其自身的函数,但中间必须经过一个低维表示瓶颈。它强制网络学到数据的紧凑编码(移除冗余)。

x Encoder z Decoder x̂≈x 低维瓶颈 重建损失
图2 · 自编码器:Encoder→瓶颈 z→Decoder,重建输入
💡 去噪自编码器给输入加噪声,要求网络重建出干净原图,迫使其学到更鲁棒的表示。

5对比学习(Contrastive Learning)

对比学习让表征被监督对特定观察变换保持不变性,产生只捕获不同数据"视图"之间共有属性的压缩表示。监督信号以正样本对负样本对的形式提供。

🔄

基于变换

同一图像的两个增强视图(裁剪/旋转/颜色抖动)应有相近嵌入(正对)。

🔗

基于共现

常一起出现的内容(如配对的图文)应有相近嵌入。

⭐ 正负样本对拉近正样本对的嵌入、推远负样本对的嵌入——以此学到对无关变换不变的本质特征。

6聚类与 k-means

聚类同样源于压缩原则:若能仅用一个离散类别标签很好地概括一个信号,这个概括就成为后续推理更轻量、更抽象的基础。

k-means:把数据点映射到整数(即聚类),映射方式使每个数据点尽可能接近其所属聚类的均值。可看作 Encoder(数据→聚类)+ Decoder(聚类→均值)的离散版自编码。

k-means:把数据点归到最近的聚类中心(均值)
图3 · 聚类:连续数据被量化为离散类别

7基于预测的原则与自监督学习

拥有视觉系统的意义在于能采取行动实现理想未来。预测泛指在给定观测下推断世界的任意属性(未来、过去、因果等)。视觉中大多数表征学习算法都在学习世界的压缩编码,同时这些编码要对未来有预测能力。

自监督学习(Self-Supervised Learning)

  • 无监督问题转化为有监督的经验风险最小化问题;
  • 代理任务(pretext task):直接从原始数据本身"炮制/构造"出标签(预测目标)。
💡 缺失填补:统一的代理任务把一部分数据 mask 掉(observed vs masked),让网络预测被遮挡的内容。这是一种通用的自监督代理任务(图像上色、补全等都属此类)。

有趣的发现:在场景分类等任务上训练的深层 CNN,会自发涌现出物体检测器(Object Detectors Emerge in Deep Scene CNNs)。

8信息论与信息瓶颈 ⭐

KL 散度(相对熵 / 信息增益)

衡量从认知 $q(x)$ 到 $p(x)$ 我们的认知"更新了多少"。具有非负性、非对称性等性质:

$$D_{KL}(p \| q) = \sum p(x) \cdot \log\left[ \frac{p(x)}{q(x)} \right]$$     (离散)
性质:$$D_{KL}(p \| q) \geq 0$$,  $$D_{KL}(p \| q) \neq D_{KL}(q \| p)$$(非对称)
⭐ KL 与最大似然/交叉熵最小化 $D_{KL}(p_{\text{数据}} \| p_{\theta})$ 等价于极大似然。判别式模型只对条件概率 $p(y|x)$ 建模,最小化 KL 等价于最小化交叉熵(真实熵为常量)。
💡 通俗理解:KL散度 = 衡量两个分布有多"不同"

核心意思:

KL散度 = 衡量两个分布有多"不同",用分布Q近似分布P会损失多少信息

举个例子:

真实分布P(考试成绩):
    90-100分:30%
    80-89分:40%
    70-79分:20%
    60-69分:10%

你的估计Q:
    90-100分:20%
    80-89分:30%
    70-79分:30%
    60-69分:20%

KL散度计算:
    KL(P||Q) = Σ P(x) × log(P(x)/Q(x))
             = 0.3×log(0.3/0.2) + 0.4×log(0.4/0.3) + ...
             ≈ 0.05

KL散度的性质:

  • KL ≥ 0(永远非负)
  • KL = 0 当且仅当 P = Q(完全一样)
  • KL不对称:KL(P||Q) ≠ KL(Q||P)

在VAE中的应用:

希望学到的分布接近标准正态分布,用KL散度衡量"接近程度",KL越小,学到的分布越规整。

生活类比:

KL散度像"考试估分"的偏差。P = 真实成绩分布,Q = 你的估计,KL = 你的估计有多"离谱"。KL越小,你估得越准。

信息熵与交叉熵编码

$$H(X) = -\sum p(X) \cdot \log p(X)$$         熵:描述不确定性
理想码长 $$= -\log_2 p_j$$(对真实概率 $$p$$)
实际码长(按模型 $$q$$ 编码) → 交叉熵 $$H_{ce}(p,q) = -\sum p_j \cdot \log q_j$$
$$H_{ce}(p,q) - H(p) = D_{KL}(p \| q)$$    实际比理想多用的比特数

压缩编码核心:对出现概率大的符号用短码,概率小的用长码;平均码长下界即熵 $H(X)$。

💡 通俗理解:信息熵 = "不确定性"的度量

核心意思:

信息熵 = "不确定性"的度量,不确定性越高,信息量越大

举个例子:

抛硬币:

公平硬币(正反各50%):
    H = -0.5×log(0.5) - 0.5×log(0.5) = 1 bit
    最不确定,熵最大

假硬币(正面90%,反面10%):
    H = -0.9×log(0.9) - 0.1×log(0.1) = 0.47 bit
    比较确定,熵较小

作弊硬币(永远正面):
    H = -1×log(1) = 0 bit
    完全确定,熵为0

信息熵的意义:

  • 熵越大:越难预测,信息量越大
  • 熵越小:越容易预测,信息量越小
  • 熵为0:完全确定,没有新信息

在机器学习中:

分类问题:希望预测的熵小(确定是哪类);生成问题:希望生成的样本熵大(多样性强)。

生活类比:

信息熵像"惊喜程度"。抛公平硬币:结果很惊喜(熵大);抛假硬币:结果不太惊喜(熵小);抛作弊硬币:结果不惊喜(熵为0)。

互信息与信息瓶颈

互信息 $I(X;Y)$:衡量两变量依赖性,即从 $p(X)p(Y)$ 到 $p(X,Y)$ 的信息增益。

X 表征学习 Z 分类器 Y min I(z;x) max I(z;y)
图4 · 信息瓶颈:从 X 学表征 Z 用于预测 Y
⭐ 信息瓶颈原则优化目标 $\min \beta \cdot I(z;x) - I(z;y)$:让 $Z$ 对 $Y$ 的信息 $I(z;y)$ 最大(充分),同时对 $X$ 的信息 $I(z;x)$ 最小(最小充分统计)。若 $y \perp x | z$,则称 $Z$ 对预测 $Y$ 是充分的
💡 通俗理解:信息瓶颈 = 只保留"有用的"信息

核心意思:

信息瓶颈 = 只保留"有用的"信息,丢弃"无关的"信息

举个例子:

输入X = 教科书全部内容(500页)
输出Y = 考试答案(10页)

信息瓶颈的目标:
    找到一个表征Z,使得:
    1. Z保留了关于Y的所有有用信息(考试要考的)
    2. Z丢弃了关于X的无关信息(考试不考的)

类比:
    X = 教科书500页
    Y = 考试答案10页
    Z = 复习笔记1页

    好的Z应该:
    - 保留:考试要考的所有知识点
    - 丢弃:考试不考的废话

压缩 vs 保留的平衡:

压缩太多:可能丢失重要信息(考到没记的)
压缩太少:还有无关干扰(记了不考的)
最佳点:刚好保留所有有用信息

在深度学习中:

每一层都在做"信息瓶颈",逐层压缩,保留任务相关信息,最后一层得到最精炼的表征。

生活类比:

信息瓶颈像"划重点"。老师划重点:只保留考试要考的。划得太少:可能漏掉考点。划得太多:复习负担重。划得刚好:复习效率最高。

9迁移学习与预训练

表征学习的重要价值在于得到的嵌入可迁移:先在大规模数据上预训练一个通用表征,再迁移到下游小数据任务上微调。

CLIP(多模态预训练)用图文对比学习,把复杂的图像数据空间和文本映射到同一个简单嵌入空间,学到跨模态、强可迁移的表征(Radford*, Kim* et al., ICML 2021)。
概念说明
预训练 (Pre-training)在大规模数据上学通用表征
迁移学习 (Transfer)把预训练表征迁移到下游任务
微调 (Fine-tuning)在下游小数据上调整参数
嵌入 (Embedding)数据的低维向量表示,可复用

重点例题

例题1:为什么"压缩"能带来好的表征? 答:① 压缩剥离了与任务无关的伪相关/干扰因素,得到对 nuisance factors 不变的本质特征;② 体现奥卡姆剃刀——同等解释数据时最简单者最可能真实;③ 更省存储。因此在同样拟合数据的两种表示中应选压缩程度更高者。
例题2:信息瓶颈的优化目标是什么? 目标 $\min \beta \cdot I(z;x) - I(z;y)$。直观:让表征 $Z$ 保留对标签 $Y$ 有用的信息($I(z;y)$ 大),同时尽量丢弃 $X$ 中无关信息($I(z;x)$ 小),从而得到最小充分统计。
例题3:KL 散度、交叉熵、熵三者关系? $H_{ce}(p,q) = H(p) + D_{KL}(p \| q)$。其中 $H(p)$ 是真实分布的熵(常量),$D_{KL} \geq 0$ 是用模型 $q$ 编码相对最优编码多花的比特。最小化交叉熵 = 最小化 KL = 极大似然。

🎯自测(点击展开)

表征学习和生成式建模分别是哪个方向?
表征学习:观测数据→潜在嵌入(前向编码);生成式建模:潜在嵌入→观测数据(反向解码)。
自编码器为什么要设一个低维瓶颈?
瓶颈迫使网络丢弃冗余、只保留重建所需的本质信息,从而学到压缩表征。
对比学习的监督信号以什么形式提供?
以正样本对(应相近)和负样本对(应推远)的形式提供。
自监督学习如何获得标签?
通过代理任务(pretext task)直接从原始数据自身构造标签,无需人工标注。
KL 散度为什么是非对称的?
D_KL(p‖q)≠D_KL(q‖p),因为它衡量"用 q 近似 p"的代价,与方向有关。
信息瓶颈中"Z 对 Y 充分"是什么意思?
若 y⊥x|z,即 Z 已包含 X 中关于 Y 的全部信息,则称 Z 对预测 Y 充分。

📝强化题库

选择题点选即时判分;填空题输入后"检查"或"显示答案"。

已答 0/0答对 0正确率
已答 0/0答对 0