CPC:通过辨认正确未来学习表示
把对比预测看作分类问题,并检查负样本采样隐含的假设。
Representation Learning with Contrastive Predictive Coding · van den Oord, Li & Vinyals · arXiv:1807.03748
Token Lab 原创学习解读 · 来源核对 2026-10-25 · 区分论文主张与合成教学例子。
01 · 论文提出了什么
CPC 利用自回归上下文,通过对比目标预测未来潜在表示。论文探索语音、图像、文本与强化学习环境。互信息解释依赖采样构造及目标假设。
一手来源:论文摘要 ↗学习指南与本课目录
LEARNING CONTRACT理解 → 实现 → 研究
目标:解释本课机制、复现一个例子、测试一个失败案例。读完不自动代表掌握。
- 理解层:写明假设、形状/单位和一个反例。
- 实现层:复算数值例子并检查边界。
- 研究层:在匹配预算下比较一个替代方法。
02 · 核心机制
Text / 原始公式
L = −log [exp(s₊/τ) / Σⱼ exp(sⱼ/τ)] ∂L/∂sⱼ = (pⱼ−1[j=+])/τ Under InfoNCE assumptions: I(X;C) ≥ log N − L_N
学习器不必重建每个像素或波形样本,也可以辨别合理后续。上下文应保留对这种辨别有用的信息。负样本定义了备选对象;分布不合适时,捷径也能解决分类任务,却没有学到预期表示。上式下界中的 N 包括正候选。
符号与直觉为教学解释,完整假设及实现细节请对照原论文方法。
机制图与逐步推导
| 符号 | 含义 |
|---|---|
| s₊ | 正候选匹配分数 |
| τ | 严格为正的温度 |
| N | 包括正例在内的候选总数 |
- 将损失改写为 −s₊/τ+logΣexp(sⱼ/τ)。log-sum-exp 求导得到 pⱼ/τ,正例另有 −1/τ。
- 分数 [2,1,0,−1]、
时概率约为 [0.643914,0.236883,0.087144,0.032059],分数梯度为 [−0.356086,0.236883,0.087144,0.032059]。 - 梯度和为零,因为给所有分数加同一常数不会改变分布。可以将此不变性作为数值实现检查。
比较解析梯度与中心差分,检查负采样器是否泄漏来源身份。
改变一个变量,解释结果为什么变。
原创教学计算,并非论文 benchmark 复现。条形在面板内相对缩放,具体数值与单位以标注为准。
04 · 手算一个例子
原创算例:四个候选分数为 [2,1,0,−1],第一个为正例,
05 · 设计实验
先用有限差分检查分数梯度。再故意加入假负样本,观察其排斥梯度。编码器 POC 应在构造样本对之前按来源身份划分数据,记录负采样器,并用留出 probe 评价冻结表示。比较下游指标,而不只对比损失。
写出一个假设,保存配置与原始结果,提出替代解释,只报告证据支持的结论。关联实验是本地起点,不是完整论文复现。
打开关联课程/实验 →06 · 局限与审稿式追问
分析提醒:辨别任务变容易可能是捷径更好,而不是语义更好。更多负样本可能引入假负样本并改变优化。不能把玩具 log N 减损失标为真实模型实测信息量。
移除假负样本降低损失,为什么仍不能证明检索更好?
即使 embedding 不变,删除分母项也会立即简化分类任务。检索质量需要独立固定候选集与留出相关性标签检验。
07 · 阅读原文
第 2.3 节与附录 A.1;在每个概率旁写出采样分布。
年份采用首次 arXiv 投稿年份。未锁定版本的链接随修订变化,复现报告请记录准确版本。此处 DeepSeek-R1 明确固定为 v1。
继续学习本主题
SimCLR:数据增强定义了“相似”
跟踪两个视图经过共享编码器与投影头,并审查这种不变性是否合理。
Chen et al. · arXiv:2002.05709