半监督学习:用少量标签撬动大量数据

真实世界里,标注贵、未标注多几乎是常态。半监督学习(Semi-Supervised Learning)正是为这种情形设计:它用一小撮有标签样本提供监督信号,同时借助海量无标签样本的结构信息(如聚类假设、流形假设)来提升泛化。

核心假设:相似的数据该有相似的标签

半监督有效的前提是数据不是随机散落的。平滑假设认为相邻的样本标签应一致;流形假设认为高维数据实际贴着一个低维流形,流形上相近的点标签也相近。正是这些结构让「从少量标签外推」成为可能,否则无标签数据毫无用处。

一致性正则:扰动不应改变预测

核心思路之一是对同一样本做轻微扰动(加噪、数据增强、dropout),要求模型的输出保持一致。这迫使决策边界避开数据密集区,落在空白地带。常见的 VAT、Mean Teacher 都属此类,本质是用无标签数据约束模型别在样本密集处乱切。

def semi_loss(logits_clean, logits_aug):
    # 有标签部分的普通交叉熵
    sup = cross_entropy(logits_clean[y_mask], y)
    # 无标签部分:干净与增广输出应一致
    unsup = mse(logits_clean, stop_grad(logits_aug))
    return sup + lambda_u * unsup

伪标签:先猜后学

伪标签(Pseudo-Labeling)更简单直接:用当前模型对无标签样本预测,把高置信度的结果当作「伪标签」再拿去训练。它相当于一种自训练,但要小心确认偏差——模型只会强化自己已有的判断。通常配合温度 sharpening 与阈值过滤来降低错误伪标签的影响。

小结

半监督学习在少量标注加上大量无标签数据的条件下训练,靠平滑与流形假设把标签信息外推,再用一致性正则或伪标签把无标签样本变成额外监督。它适合标注稀缺、未标注数据充裕的任务,但效果依赖数据本身的结构是否真的连贯。

参考与延伸阅读

  • Chapelle, Scholkopf, Zien. Semi-Supervised Learning(MIT Press, 2006)。该方向的经典教材。已核验。
  • 具体正则系数与伪标签阈值以各实现文档为准,不同任务的最优配置差异较大。待核实。
本文累计阅读