景德镇的瓷坊里,老师傅要出远门,只留下一句话:“这些货,你自己看。”学徒面前是一屋子没有标签的瓷器——没有师父逐件指点,他只能自己琢磨:把一只花瓶的花纹遮住一半,凭另一半推断被遮住的纹样;把两只几乎一样的杯子放在一处,分辨哪只釉面更润、哪只胎质更细。反反复复练下来,他练出了一双“火眼金睛”——任何瓷器扫一眼,器型、釉色、大类归属一目了然。这门“自己出题、自己检验”的功夫,正是自监督学习(Self-Supervised Learning)的缩影:不依赖人工标注,而是从数据本身构造“练习题”(代理任务),让模型在解题中学会通用的特征表示。读完这篇文章,你会理解自监督学习的范式全景:为什么它能撬动海量无标注数据,代理任务如何设计,对比学习与掩码重建两条主线如何运作,以及预训练到微调的完整工程链路。

岗位关联

对 AI 从业者而言,自监督学习是降低标注依赖的核心武器。掌握它,意味着你能把无标注数据变成模型的“自学教材”,在大模型与多模态时代大幅降低数据成本、提升下游任务上限。

目录
  1. 可视化演示
  2. 范式总览
  3. 核心机制
  4. 代理任务设计
  5. 对比学习
  6. 掩码重建
  7. 训练与应用
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示对比学习中正负样本的吸引与排斥、掩码重建的编码解码流程以及预训练到微调的迁移学习,直观理解自监督学习的三大核心范式。

本节配有交互动效(进入视口后自动加载,约 3KB)。

对比学习 拉近正样本对(同源增强),推远负样本对(不同源),学习有判别力的特征表示 L=-log(exp(sim(z,z⁺))/∑exp(sim(z,zₖ))) 粉色锚点,绿色正样本被吸引靠近,红色负样本被排斥远离

范式总览

故事回到瓷坊。小匠发现,师父留下的瓷器虽然没人告诉他“这是花瓶”还是“这是茶盏”,但它们自身的形态、纹样、釉色都在透露出规律。他渐渐意识到:这些器物本身就可以当“老师”——把一只瓶子转个角度观察,把一片花纹遮住又掀开,答案就藏在数据的内部结构里。这种“让数据自己出题、自己当考官”的学习方式,就是自监督学习的灵魂。

在深度学习的分类谱系中,自监督学习是有监督学习与无监督学习之间的一座桥梁。它与传统监督学习最大的分野在于:监督学习需要人工标注的标签(老师逐题批改),自监督学习没有标签(师父不在),但它会构造一个人工定义的“代理任务”(自己编的练习题),从数据中自动生成“伪标签”(自己算出的答案)。与广义无监督学习(如聚类、降维)相比,自监督有一个明确的预测目标,因而训练更稳定、特征更有区分度。从 2013 年的 Word2Vec 利用上下文预测词,到 2018 年 BERT 的掩码语言建模,再到 2020 年的 SimCLR 与 2021 年的 MAE,这条脉络走过了“从文本到图像、从判别到生成”的演进之路,也确立了“预训练 + 微调”这一现代深度学习的基本工作流。

自监督核心价值可用一个损失公式概括:让模型在伪标签的指引下更新参数。设 $f_\theta$ 为特征编码器,$x_i$ 为第 $i$ 个无标注样本,$\phi(x_i)$ 为从数据自动生成的伪标签,则自监督训练目标是:

回到瓷坊的语境:小匠每做一道自编练习题,就相当于计算一次“我的判断”与“数据给出的参考答案”之间的差距。反复修正,手感和眼力(特征表示)就练出来了。当然,自监督也有挑战:代理任务设计不当会让模型学到捷径而非语义,同时大规模预训练对算力和数据量的要求都很高,评估一个表征好坏的维度也比单一准确率复杂得多。

LSSL=1N∑i=1Nℓ(fθ(xi),  ϕ(xi))\mathcal{L}_{\text{SSL}} = \frac{1}{N} \sum_{i=1}^{N} \ell\left( f_\theta(x_i),\; \phi(x_i) \right)
这个公式说的是:把每个样本送入模型得到输出,和“数据自己生成的参考答案”比差距,差距越小越好。$\ell$ 是衡量差距的损失函数,可以是交叉熵,也可以是均方误差。
  1. 样本变量$x_i$ 表示第 $i$ 个无标注样本,比如一张没有标签的瓷器照片,$N$ 是样本总数。
    xi,i=1,…,Nx_i,\quad i=1,\dots,N
  2. 伪标签工厂$\phi(x_i)$ 是一个自动从数据生成答案的函数,对掩码任务它输出被遮住的像素,对旋转预测它输出旋转角度。
    ϕ(xi)∈Yauto\phi(x_i) \in \mathcal{Y}_{\text{auto}}
  3. 模型输出$f_\theta(x_i)$ 是参数为 $\theta$ 的编码器对样本的预测,$\theta$ 包含网络中所有可学习的权重。
    fθ:X→Yf_\theta: \mathcal{X} \to \mathcal{Y}
  4. 损失函数$\ell(\cdot,\cdot)$ 比较预测与伪标签的差距,差距越小代表模型越懂数据的结构。
    ℓ(a,b)≥0,ℓ(a,b)=0  ⟺  a=b\ell(a,b) \ge 0,\quad \ell(a,b)=0 \iff a=b
  5. 取平均$\frac{1}{N}\sum$ 把每个样本的损失加起来再平均,使梯度更新与批量大小解耦。
    1N∑i=1Nℓi\frac{1}{N}\sum_{i=1}^{N} \ell_i

核心机制

小匠的练习之所以有效,关键在于他懂得“出题”的章法。他不会出“这只花瓶多重”这种称一称就知答案的题,也不会出“作者当时心情如何”这种数据里根本没有答案的题。他出的每道题,都藏着一个可验证的信号:遮住花纹有原样可对照,转个角度有几何关系可校验。这个“可验证的信号”,就是自监督学习中的自监督信号(self-supervised signal)。

自监督信号由代理任务(pretext task)生成。代理任务并非最终目的,而是为训练特征而设的临时任务——好比小匠练拼图并不是为了以后专门拼图,而是通过拼图练出对纹样轮廓的记忆。整个执行过程遵循预训练范式:先在大规模无标注数据上做代理任务(预训练),学到通用特征后,再在小规模有标注数据上做目标任务(微调)。这正如学徒先靠自学练出通识眼力,师父回来后稍微点拨几句,他就能快速上手各类具体活计。

从数学上看,预训练阶段就是在无标注数据集上最小化代理任务损失,得到最优参数:

由此,模型完成的是特征学习:$f_\theta$ 的中间层输出被当作图像或文本的稠密向量表示(embedding)。这些向量具备“相似样本距离近、语义可线性分解”等优良性质,为下游任务省去了从零学习的痛苦。小匠练出的眼力沉淀在肌肉记忆(参数)中,任何新器物拿来,他都能快速抓住要害。

θ∗=arg⁡min⁡θ∑x∈DuL(fθ(x),  ϕ(x))\theta^{*} = \arg\min_{\theta} \sum_{x \in \mathcal{D}_u} \mathcal{L}\left( f_{\theta}(x),\; \phi(x) \right)
这个式子的意思是“翻遍所有可能的模型参数,挑出那个让所有无标注样本的代理任务损失总和最小的参数”。$\mathcal{D}_u$ 是没有标签的数据集,$\phi(x)$ 是自动生成的伪标签。
  1. 无标签数据集$\mathcal{D}_u$ 表示只有原始数据、没有人工标注的数据集,它正是自监督学习的“原材料仓库”。
    Du={x1,x2,…,xM}\mathcal{D}_u = \{x_1, x_2, \dots, x_M\}
  2. 模型参数$\theta$ 是编码器 $f_\theta$ 的可学习参数,可以理解为小匠的“手感”状态。
    θ∈Rd\theta \in \mathbb{R}^d
  3. 求最小$\arg\min_\theta$ 是“寻找使括号内数值最小的参数”的数学记号。
    θ∗=arg⁡min⁡θJ(θ)\theta^{*} = \arg\min_{\theta} J(\theta)
  4. 代理损失$\mathcal{L}\left( f_{\theta}(x), \phi(x)\right)$ 是代理任务的损失,衡量模型输出与伪标签之间的一致性。
    L:Y×Y→R≥0\mathcal{L}: \mathcal{Y} \times \mathcal{Y} \to \mathbb{R}_{\ge 0}

代理任务设计

代理任务是自监督学习的“题库”。小匠深知,好题目的标准只有一个:不靠作弊、必须真正理解器物才能答对。自监督代理任务设计也遵循同一逻辑——任务应该“难而可解”:太难则信号过于稀疏,太易则模型走捷径。

最早的代理任务来自自然语言处理中的上下文预测。Word2Vec 的做法是给出一个词周围的词,让模型预测中间这个词——小匠看到一只花瓶的底座和瓶口,推测中间这段的弧度。BERT 更进一步,把句子中 15% 的词用特殊符号盖住,让模型根据双向上下文还原被掩词(Masked Language Model),相当于把整件瓷器的多处花纹同时遮住再整体推断。在视觉领域,拼图重排(Jigsaw Puzzle)把图像切成 3×3 或 9×9 的碎片,打乱顺序让模型还原排列方式,模型必须理解“碎片间的空间关系”才能还原。旋转预测更为直观:把同一图像旋转 0°、90°、180°、270° 四种角度,让模型判断旋转了多少。要判断旋转角度,模型必须先识别“图像中的物体朝向”——这逼着它学会什么是“正立的物体”。相对位置预测则是给模型两张随机裁剪的碎片,让它判断第二块相对第一块在什么方位。

旋转预测是一个经典的判别式代理任务。设 $x_i^{r}$ 表示第 $i$ 张图旋转了 $r$ 度后的版本,$r_i$ 是真实旋转角度(伪标签),模型需要最大化预测正确的概率:

设计代理任务时还要注意,任务不能与标签信息“合谋”。比如旋转预测要求模型识别“物体朝向”,但如果训练数据里大多数图像都是自然风景,模型可能偷懒地只根据天空的方向判断角度。小匠出题时也学会了这一点:不能出那种看一个局部就能猜出答案的题,要把题目设计得让模型必须动用全局理解。

Lrot=−1N∑i=1Nlog⁡p(yi=ri  |  fθ(xiri))\mathcal{L}_{\text{rot}} = -\frac{1}{N} \sum_{i=1}^{N} \log p\left( y_i = r_i \;\middle|\; f_{\theta}(x_i^{r_i}) \right)
这是交叉熵损失的一种写法。模型越能准确判断旋转角度,说明它越理解物体的“正立模样”,学到的特征就越有语义。
  1. 旋转样本$x_i^{r_i}$ 是把第 $i$ 张图像按角度 $r_i$ 旋转后的新样本,$r_i$ 从 $\{0°, 90°, 180°, 270°\}$ 中自动随机选取。
    xiri=Rotate(xi,ri)x_i^{r_i} = \text{Rotate}(x_i, r_i)
  2. 真实角度$y_i = r_i$ 是这次训练用的伪标签,它不需要人工标注,因为旋转操作是我们自己施加的。
    yi∈{0°,90°,180°,270°}y_i \in \{0°, 90°, 180°, 270°\}
  3. 概率输出$p(y_i = r_i \mid f_\theta(x_i^{r_i}))$ 是模型输出层经过 softmax 后,在真实旋转类别上的概率值。
    p=softmax(fθ(xiri))rip = \text{softmax}(f_\theta(x_i^{r_i}))_{r_i}
  4. 负对数$-\log p$ 值域为 $[0, +\infty)$,预测越准、概率越接近 1,损失越接近 0。
    −log⁡p→0  ⟺  p→1-\log p \to 0 \iff p \to 1

对比学习

随着题目越做越多,小匠悟出一个更高效的练法:与其费力还原每一处细节,不如练“区分”。把两件瓷器的照片放在一起,他要能说出“这两件是同一种釉色,那两件是不同的”。这种“同与不同”的判断题,就是对比学习(Contrastive Learning)的原始直觉——它不要求模型精确重建像素,只要求模型理解“什么是一类东西”。

对比学习的核心思想可以概括为一句话:拉近正样本对,推远负样本对。这里的正负样本需要从数据内部自动构造:对同一张图像做两种不同的随机增强(随机裁剪、颜色抖动、高斯模糊等),得到两个“视图”,它们共享同一语义类别,构成正样本对;而同一批(batch)内的其他图像则视为负样本。模型学习一个表征空间,在空间里正样本应当距离很近,负样本应当相距很远。SimCLR 是这一范式的代表作,其流程是:原图 → 两次随机增强 → 编码器提取特征 → 投影头映射到对比空间 → 计算对比损失。值得注意的是,数据增强在这里不是锦上添花,而是正样本对的信息来源,增强方式的丰富程度直接决定了模型学到的“不变性”——正如小匠只有看过不同光线、不同角度的瓷器,才能认出“同一件器物”的本质特征。

对比学习的标准损失函数是 InfoNCE。设 $z_i$ 与 $z_j$ 是同一图像的两个增强视图的表征,batch 中共有 $2N$ 个视图,$\mathrm{sim}(\cdot, \cdot)$ 为余弦相似度,$\tau$ 为温度系数:

z_i, z_j \in \mathbb{R}^{d},\quad \text{同源}

LInfoNCE=−log⁡exp⁡(sim(zi,zj)/τ)∑k=12N1[k≠i]exp⁡(sim(zi,zk)/τ)\mathcal{L}_{\text{InfoNCE}} = -\log \frac{ \exp\left( \mathrm{sim}(z_i, z_j)/\tau \right) }{ \sum_{k=1}^{2N} \mathbf{1}_{[k\neq i]} \exp\left( \mathrm{sim}(z_i, z_k)/\tau \right) }
InfoNCE 像一个“找朋友”游戏:分母把所有样本(朋友加路人)都列出来,分子只给真正的朋友加分。模型要让真正的朋友在众多路人都被认出,表征自然就变得有区分度。
  1. 正样本表征$z_i$ 和 $z_j$ 是同一张图经过两种不同增强后的特征向量,它们在语义上属于同一个“人”。

掩码重建

\mathcal{L}_{\text{MSE}} = \frac{1}{|\mathcal{M}|} \sum_{p \in \mathcal{M}} \left\| \hat{x}_p - x_p \right\|^2

> 这个公式衡量"重建的画"和"真实的画"在每个被遮像素上的差距。被遮位置越多,模型越需要依赖高层次的语义理解;损失越小,说明模型对图像结构的把握越精准。1. 被遮位置集合:$\mathcal{M}$ 是所有被掩码遮住的 patch 下标集合,$|\mathcal{M}|$ 是它的元素个数。$$\mathcal{M} = \{ p_1, p_2, \dots, p_m \}$$2. 原图真实值:$x_p$ 表示位置 $p$ 处的真实像素值(三通道颜色向量)。$$x_p \in \mathbb{R}^{3}$$3. 模型重建值:$\hat{x}_p$ 是解码器输出的重建像素值,与 $x_p$ 维度相同。$$\hat{x}_p = g_{\phi}\left(f_{\theta}(\text{可见} x)\right)_p$$4. L2 距离:$\left\| \hat{x}_p - x_p \right\|^2$ 是差向量的平方范式,即每个通道差值的平方和。$$\left\| a - b \right\|^2 = \sum_{c=1}^{3}(a_c - b_c)^2$$5. 归一化:除以 $|\mathcal{M}|$ 求平均,使损失不随掩码数量变化而失衡。$$\frac{1}{|\mathcal{M}|}\sum_{p \in \mathcal{M}}$$掩码重建学到的表征偏向"形状与纹理并重",它对下游检测、分割等需要空间结构的任务特别友好。小匠最终发现,"补全练习"虽耗时,但练出的全局观是其他练习无法替代的——这就是为什么 MAE 在视觉 Transformer 时代能成为预训练的强力基线。

训练与应用

瓷坊学徒的完整成长路径,从来不是一蹴而就。他先是大量自学(无监督预训练),等师父回来,再针对具体订单接受几轮手把手点拨(有监督微调),最后才能独立接活。自监督学习的工程落地,也遵循这条“两阶段流程”。

第一阶段:在无标注的大规模数据上,用代理任务训练编码器。第二阶段:丢弃代理任务的头(分类头/重建头),把编码器保留下来,在下游任务的小规模有标注数据上做微调(fine-tuning)——具体做法通常是在编码器后接一个新的任务头,然后整体或部分参数继续训练。数据增强在第一阶段尤为重要:对比学习依赖不同的增强视图构造正样本,掩码重建依赖掩码策略生成训练信号,增强的多样性直接决定特征泛化能力。评估方式上,业界常用“线性探测”(Linear Probe):冻结预训练表征,只训练一个线性分类层,看能达到多高的分类准确率——这能干净地检验表征的质量,避开微调带来的干扰。更全面的评估还包括端到端微调后在目标检测、语义分割等任务上的迁移表现。

线性探测的评估指标可形式化为:设 $z_m$ 是冻结表征,$W_c$ 是类别 $c$ 的线性分类权重,$y_m$ 是真实类别标签,则线性探测准确率为:

在真实项目中,自监督预训练已经渗透到广泛领域:从 BERT 对海量网页文本的掩码语言建模,到 CLIP 用图文对比学习打通视觉与语言,再到医学影像中用 MAE 在无标注切片上预训练。小匠的故事在每个领域反复上演:先用免费的数据把“眼力”练到极致,再用珍贵的数据做精准点拨。这就是自监督学习范式最朴素的工程哲学。

Alinear=1M∑m=1M1[arg⁡max⁡c Wc⊤zm=ym]A_{\text{linear}} = \frac{1}{M} \sum_{m=1}^{M} \mathbf{1}\left[ \arg\max_{c} \, W_c^{\top} z_m = y_m \right]
这个公式统计的是"在冻结特征上只学一层线性分类,能猜对多少样本"。准确率越高,说明预训练表征与语义类别的对齐程度越好。
  1. 冻结表征$z_m$ 是编码器在第 $m$ 个样本上输出的特征向量,它不参与这一步训练,保持固定。
    zm=fθ∗(xm),θ∗ 冻结z_m = f_{\theta^{*}}(x_m),\quad \theta^{*}\ \text{冻结}
  2. 线性分类权重$W_c$ 是第 $c$ 类的权重向量,它和表征做内积得到该类的得分。
    Wc∈RdW_c \in \mathbb{R}^{d}
  3. 得分与取最大$W_c^{\top} z_m$ 越大表示越像第 $c$ 类,$\arg\max_c$ 取得分最高的那个类别作为预测。
    y^m=arg⁡max⁡cWc⊤zm\hat{y}_m = \arg\max_{c} W_c^{\top} z_m
  4. 指示函数$\mathbf{1}[\cdot]$ 在括号内条件成立时为 1,否则为 0,用来判断预测是否等于真实标签。
    1[真]=1,1[假]=0\mathbf{1}[\text{真}] = 1,\quad \mathbf{1}[\text{假}] = 0
  5. 求平均$\frac{1}{M} \sum$ 统计所有样本中预测正确的比例,即准确率。
    A∈[0,1]A \in [0, 1]

AI 应用场景

场景一:医学影像的无标注预训练

阶段:模型预训练

解决的问题:医学影像数据(CT、MRI、病理切片)标注极度依赖专家医生,一份精细标注动辄数百元,且稀缺病种的标注样本更少。传统监督训练在小样本上极易过拟合,模型难以泛化。

具体案例:某三甲医院积累了 50 万张无标注的肺部 CT 切片。算法团队用 MAE 在这些切片上做掩码重建预训练,让模型先学会“看懂肺部结构”,然后只用了 2000 张专家标注的结节图像做微调,便达到了此前用 2 万张标注数据训练的检测性能。自监督预训练把标注成本压缩了近一个数量级。

场景二:工业质检的异常发现

阶段:特征表示学习

解决的问题:产线上的缺陷(划痕、凹坑、异物)种类繁杂且出现频率极低,传统监督学习需要费尽心力收集并标注大量缺陷样本,且样本不均衡严重。自监督对比学习可以从海量正常产品图像中学习“什么是正常”的精细表征。

具体案例:某面板厂商每天采集 10 万张无缺陷屏幕照片,工程师用 SimCLR 式对比学习在这些无标注图上预训练编码器,再用少量缺陷样本(每类仅 50 张)做线性探测或微调,实现了 96.8% 的缺陷召回率。模型学会了“正常纹理”的流形,偏离流形的图像即判为异常候选。

场景三:NLP 大规模预训练

阶段:预训练 + 下游微调

解决的问题:自然语言数据天然无标注,人工标注意图分类、实体识别成本高。自监督的掩码语言建模(MLM)让模型在数万亿 token 上预训练,学到句法、语义与常识。

具体案例:BERT 在 33 亿词的 Wikipedia + BooksCorpus 上做掩码语言建模预训练,之后只需在情感分类、问答等任务上用几千条标注样本微调,就能超越此前需要海量标注数据的模型。当前 LLM 的“预训练 + 指令微调 + 人类对齐”三阶段,其源头正是自监督预训练范式。

Python 演示

python42 行
import numpy as np np.random.seed(42) # 模拟 20 张 8x8 的无标签图像images = np.random.rand(20, 8, 8) def apply_mask(images, mask_ratio=0.4):    # 随机遮住一部分像素, 返回被遮图像和掩码    masked = images.copy()    mask = np.random.rand(*images.shape) < mask_ratio    masked[mask] = 0.0    return masked, mask def reconstruct_base(masked, mask):    # 极简重建: 用可见像素的均值填充被遮位置    n = masked.shape[0]    flat = masked.reshape(n, -1)    flat_mask = mask.reshape(n, -1)    recon = flat.copy()    for i in range(n):        vis_mean = flat[i, ~flat_mask[i]].mean()        recon[i, flat_mask[i]] = vis_mean    return recon.reshape(masked.shape) masked, mask = apply_mask(images)recon = reconstruct_base(masked, mask)mse_loss = np.mean((recon - images) ** 2)print(f"mask ratio: {mask.mean():.2f}, recon MSE: {mse_loss:.4f}") def info_nce_loss(anchor, positive, negatives, tau=0.07):    # InfoNCE: 拉近正样本, 推远负样本    pos_sim = anchor @ positive / tau    neg_sims = negatives @ anchor / tau    logits = np.concatenate([[pos_sim], neg_sims])    logsumexp = np.log(np.sum(np.exp(logits)))    return float(-pos_sim + logsumexp) embeds = np.random.randn(6, 32)embeds /= np.linalg.norm(embeds, axis=1, keepdims=True)loss = info_nce_loss(embeds[0], embeds[1], embeds[2:])print(f"InfoNCE loss: {loss:.4f}")
目的:用 NumPy 实现自监督学习的两大核心模块——掩码重建的 MSE 损失与对比学习的 InfoNCE 损失,演示“从数据自身构造训练信号”的完整过程。
  1. mask = np.random.rand(*images.shape) < mask_ratio生成随机掩码矩阵,约 40% 的像素被置零,模拟 MAE 中的随机掩码策略。
  2. vis_mean = flat[i, ~flat_mask[i]].mean()计算第 i 张图可见像素的均值,作为最简单的“模型预测”填充被遮区域。
  3. mse_loss = np.mean((recon - images) ** 2)在被遮位置计算均方误差,这就是掩码重建的自监督信号。
  4. embeds /= np.linalg.norm(embeds, axis=1, keepdims=True)对表征做 L2 归一化,使点积等价于余弦相似度,这是对比学习的标准预处理。
  5. logsumexp = np.log(np.sum(np.exp(logits)))用 log-sum-exp 技巧稳定计算 softmax 分母,构成 InfoNCE 的分母部分。

常见误区

误区很多初学者把两者画等号,觉得“反正都不用人工标签,自监督就是无监督换了个说法”。

正解自监督学习确实属于无监督学习的大家族,但它有一个关键区别:自监督会从数据中构造伪标签和显式损失函数(如预测被遮像素、判断旋转角度),训练目标非常明确。而广义的无监督学习还包括聚类、降维、密度估计等方法,它们并没有“预测某个自动生成的答案”这一层。形象地说,学徒虽然没人教,但他手里有自己编的练习册和参考答案;而无监督学习更像是“观察瓷器,不做特定题的纯感悟”。

为何常见:两者都“不使用人工标签”这一共同表象太显眼,初学者容易忽略自监督“有目标函数”这一内在实质。

误区“我刚训练了旋转预测模型,它输出的是旋转角度,我的生产系统也要它输出旋转角度。”

正解代理任务只是为预训练服务的“练习题”,它的唯一目的是让编码器学到好特征。预训练完成后,代理任务对应的输出头会被抛弃,只保留编码器参数,接到下游任务的新输出头上进行微调。好比小匠拼命练拼图,不是为了考试时拼图,而是为了练出辨别纹样的眼力。若直接把旋转预测头用于生产,等于带了个没用的装饰物上阵。

为何常见:“预训练”和“微调”两阶段没有从直觉上分开,误以为代理任务是模型最终功能。

误区“模型已经在无标注数据上预训练过了,部署时是不是也完全不需要标注数据?”

正解自监督预训练产出的是通用特征表示,而不是具体任务的输出。要完成分类、检测、分割等任务,仍然需要少量有标注数据做微调,或者至少做一次线性探测来适配任务。它省的是“海量”标注,不是“所有”标注。如果任务本身就是检索或相似度计算,倒是可以零微调直接使用。

为何常见:“自监督 = 不需要标注”的过度简化在大众传播中很多,导致期望错位。

误区“对比学习的核心是 InfoNCE 损失,数据增强随便用一下常规操作就行。”

正解对 SimCLR 这类对比范式,数据增强是构造正样本对的唯一途径,增强的种类和强度直接决定模型学到什么不变性。裁剪让模型学会尺度不变,颜色抖动让模型学会光照不变。如果增强过于简单,正样本对太容易区分,模型几乎不用学任何语义就能把损失降到很低——这就是“捷径学习”。好增强像小匠把同一只瓷器放在晨光、烛火、阴天三种光线下看,他才能认出器物的本质。

为何常见:有监督学习中数据增强是辅助手段,这种惯性思维被直接搬到了对比学习里。

误区“MAE 和 GPT 都是大模型成功,那我把自监督模型无限放大,效果应该也能一直涨。”

正解自监督效果的上限由数据规模、数据多样性、代理任务设计、增强策略、算力等多个因素共同决定。在只有几万张图的小数据集上,盲目把 ViT 从 Base 扩到 Huge,不仅收益甚微,还容易过拟合或训练震荡。自监督的 scaling law 同样需要“数据与算力的同步增长”。小匠练得再好,瓷坊里只有十件器物,他的眼力天花板也有限。

为何常见:业界大模型新闻让大家记住了“大 = 强”,忽略了背后的数据与工程配套。

面试题

Q1. 自监督学习最核心的思想是什么?

单选题 · easy

  • A.完全依赖人工标签训练模型
  • B.从数据自身结构中挖掘信号← 正确答案
  • C.借助强化学习与环境交互
  • D.依赖对抗生成网络做增强

答案:B。自监督学习的本质是放弃人工标签,改为从数据自身构造伪标签和损失函数,选项 B 准确。A 是有监督学习,C 是强化学习,D 是生成模型的变体,均不符合自监督的定义。

Q2. 关于自监督学习中“代理任务”的说法,正确的是?

单选题 · easy

  • A.代理任务就是最终要部署的任务
  • B.代理任务只用于数据增强环节
  • C.代理任务为预训练自造练习题← 正确答案
  • D.代理任务必须使用人工标注结果

答案:C。代理任务是自监督学习为预训练设计的临时任务,如预测被掩词、判断旋转角度,目的是学到特征后丢弃它,选项 C 正确。A 混淆了代理任务与下游任务,B、D 与代理任务的“预训练辅助工具”属性不符。

Q3. 对比学习中“正样本对”通常指什么?

单选题 · mid

  • A.两张语义完全不相关的图像
  • B.同一图像的两个增强视图← 正确答案
  • C.同一批次中相邻的两张图
  • D.两张人工标注了相同类别的图

答案:B。对比学习不依赖人工语义类别,正样本对是“对同一张图做两次随机增强得到的两个视图”,因为它们的语义不变,选项 B 正确。A 是强负样本,C 的位置关系无语义意义,D 引入人工标注背离了自监督前提。

Q4. 下列哪些属于常见的自监督代理任务?

多选题 · mid

  • A.预测被掩盖的词或像素块← 正确答案
  • B.判断图像被旋转的角度← 正确答案
  • C.人工标注图像的类别信息
  • D.打乱拼图后还原正确顺序← 正确答案

答案:ABD。掩码预测(BERT/MAE)、旋转预测、拼图重排都是典型的自监督代理任务,共同点是伪标签由数据自动生成。C 是人工标注,属于有监督学习,不属于代理任务。

Q5. InfoNCE 损失函数的主要作用是什么?

单选题 · mid

  • A.衡量像素级别的重建误差
  • B.拉近正样本并推开负样本← 正确答案
  • C.调整模型参数初始化范围
  • D.计算分类任务的硬交叉熵

答案:B。InfoNCE 是一种对比损失,其分子提高正样本对的相似度,分母削弱所有负样本的相对相似度,整体效果是“拉近正、推开负”,选项 B 正确。A 是掩码重建的 MSE,C 是参数初始化策略,D 是有监督分类损失。

Q6. 在 SimCLR 中,数据增强为什么至关重要?

多选题 · hard

  • A.增强是正样本对的唯一来源← 正确答案
  • B.增强决定模型学到哪种不变性← 正确答案
  • C.增强可以被 InfoNCE 完全替代
  • D.增强能提供人工类别的监督信号

答案:AB。SimCLR 的正样本对来自同一图像的两次增强,增强方式决定了模型对裁剪、颜色、模糊等扰动的不变性,故 A、B 正确。损失函数与增强是协作关系,C 错误;增强不产生任何人工标签,D 错误。

Q7. MAE(掩码自编码器)中典型的掩码比例大约是多少?

单选题 · mid

  • A.10% 到 20% 左右
  • B.30% 到 40% 左右
  • C.75% 左右甚至更高← 正确答案
  • D.必须低于 50% 才能训练

答案:C。MAE 的核心发现之一是高掩码比例反而带来更好的表征,默认掩掉 75% 的 patch,让模型无法靠局部插值取巧,只能依赖全局语义理解。A、B 比例过低,模型走捷径;D 与 MAE 的实验结论相悖。

Q8. 自监督学习与无监督学习的关系是?

单选题 · easy

  • A.两者完全等同没有区别
  • B.自监督属于无监督学习分支← 正确答案
  • C.两者都必须使用人工标签
  • D.自监督属于有监督学习分支

答案:B。自监督学习不需要人工标签,因此归入无监督学习的大框架下,但它比广义无监督多了一个“自动构造伪标签和明确损失”的环节,故 B 正确、A 过于粗糙。C、D 明显错误。

Q9. 自监督预训练后,常用的评估方式有哪些?

多选题 · hard

  • A.冻结特征后做线性探测← 正确答案
  • B.端到端地在下游任务微调← 正确答案
  • C.只报告训练集上的损失值
  • D.迁移到检测分割等密集任务← 正确答案

答案:ABD。线性探测能排除微调干扰、干净地表征质量;端到端微调和迁移到检测、分割是衡量表征可迁移性的标准做法,故 A、B、D 正确。只报训练损失无法反映泛化能力,C 错误。

Q10. 自监督学习当前面临的最主要挑战是?

单选题 · hard

  • A.完全无法处理图像数据
  • B.代理任务难设计且算力开销大← 正确答案
  • C.效果与有监督学习毫无差异
  • D.下游任务完全不需要微调

答案:B。设计一个“难而可解”的代理任务需要领域洞察,超大规模无标注数据的预训练也需要大量算力,这是当前自监督落地的核心瓶颈,B 正确。A 明显错误,图像自监督(MAE、SimCLR)已非常成熟;C、D 与实际不符,自监督虽强但通常仍需微调。