直觉:区别不在算法,在「监督信号从哪来」
很多人把这三者当成三类算法。更准的视角是:它们的根本差异在于训练信号(标签)从哪里来。
- 监督学习:标签由人提供, 成对。
- 无监督学习:没有标签,只能从数据自身的结构里找规律。
- 自监督学习:没有人工标签,但从数据自身构造出「伪标签」,把无标签问题转化成监督形式来解。
自监督是过去十年最重要的范式转变——它让我们能在几乎无限的无标签数据上,用监督学习的成熟机器去训练,从而支撑起大规模预训练。下面把三者的目标函数、数据流和工程取舍逐一拆开。
机制:三种范式的目标函数
监督学习
给定带标签数据,最小化预测与真值的差距:
信号清晰、收敛快,但标签是瓶颈——人工标注昂贵、慢、且有歧义。
无监督学习
只有 ,目标是建模数据本身的结构。典型两类:
聚类(如 k-means)最小化簇内方差:
降维(如 PCA)寻找保留最大方差的低维子空间;密度估计则直接建模 。没有「正确答案」,评估困难是无监督的天然痛点——簇划得「好不好」往往没有客观标尺。
自监督学习
精髓是设计一个预设任务(pretext task),从 自动切出输入和目标。形式上仍是监督损失,只是 来自 自身:
两大流派:
- 生成式/掩码式:遮住一部分,让模型预测被遮的部分。语言模型预测下一个词,或还原被 mask 的词,本质都是 或 。
- 对比式:同一样本的两个增强视图互为正例,不同样本为负例,拉近正例、推远负例。InfoNCE 损失是代表:
其中 是温度, 是编码后的表示。直觉:让模型学会「什么变换不改变语义」,从而学到鲁棒表示。
代码:自监督如何「凭空造标签」
以掩码语言建模为例,看伪标签是怎么来的:
1 | import random |
关键洞察:标签 labels[i] = tok 直接来自数据自身。一份纯文本语料因此能产生海量监督样本,无需一个人工标注者。这正是大规模预训练得以成立的根基。
工程权衡:为什么是「自监督预训练 + 监督微调」
现代主流范式是两阶段的:
1 | 海量无标签数据 ──自监督预训练──► 通用表示/基座模型 |
背后的权衡逻辑:
| 维度 | 监督 | 无监督 | 自监督 |
|---|---|---|---|
| 标签成本 | 高(人工) | 无 | 无(自动构造) |
| 可用数据量 | 受标注限制 | 海量 | 海量 |
| 信号质量 | 高、直接 | 弱、间接 | 较强、可端到端学表示 |
| 评估 | 直接(看任务指标) | 困难 | 间接(看下游迁移效果) |
| 典型产物 | 任务专用模型 | 簇/低维/密度 | 通用表示 |
几个实践要点与误区:
- 预训练任务要和数据「形状」匹配:掩码式适合双向理解(编码器),自回归式适合生成。选错 pretext task,学到的表示对下游没用。
- 对比学习对负样本和批大小敏感:负样本太少表示会坍缩,常需大 batch 或负样本队列;增强策略选得不好,模型会学到捷径而非语义。
- 「无监督」和「自监督」别混用:聚类、PCA 这类是无监督(没有任何标签也不构造标签);预测下一个词是自监督(构造了伪标签)。自监督是无监督的子集这一说法常见,但工程上把它单列更清晰,因为它复用的是监督学习的整套优化机器。
- 自监督学到的表示需要下游验证:预训练损失下降不等于表示有用,必须用 linear probing 或微调在真实任务上检验迁移效果。
小结
三种范式的分水岭是监督信号的来源:监督学习靠人工标签,信号最强但最贵;无监督学习不用标签、挖掘内在结构,但评估困难;自监督学习从数据自身切出伪标签,把无标签数据转成监督问题,从而兼得「海量数据」与「监督式优化」两个优势。理解了这条主线,你就明白为什么当代基座模型几乎都走「自监督预训练 + 少量监督微调」——用自监督在无限数据上学通用表示,再用昂贵的人工标签在下游做精准对齐。