目前,人工智能的价值大多源于在海量数据集上训练的监督模型。这些数据集很多都依赖人工标记,过程枯燥、耗时,还容易出错,成本也高。而自监督学习(SSL)则是另一种学习范式,能让机器从未标记的数据中学习。本文将探讨 SSL 的工作原理,以及如何将其应用于计算机视觉领域,比较简单方法和前沿方法,还会介绍其在医学诊断中的应用,这一领域对 SSL 需求大,但正确应用也需要深入理解。
一、自监督学习是什么
Meta 首席 AI 科学家 Yann LeCun 认为,自监督学习是 “构建 AI 系统的背景知识和近似常识的最有前途的方法之一”。自监督学习的核心是在无注释数据上训练模型。
(一)与其他学习范式的区别
我们先来看看另外两种学习范式:监督学习和无监督学习。监督学习中,模型会同时得到输入数据和相应标签,任务是找到输入与标签之间的映射关系,以便能推广到新数据上。比如教模型识别猫的图片,就会给它看大量猫的图片(输入),并告诉它这是猫(标签)。
无监督学习则只有输入,没有标签。学习目标是探索输入数据中的模式,比如对相似示例进行聚类、降低数据维度或检测异常值等。就像把一堆水果混在一起,无监督学习能把苹果、香蕉等各自归为一类。
自监督学习处于两者之间。它和无监督学习一样,都从未标记数据中学习;但又具有监督学习的特性,因为模型在训练过程中会自己创建伪标签来辅助学习。
(二)自监督学习的发展历程
自监督学习并非全新概念,过去在自然语言处理(NLP)中广泛用于训练大型语言模型,像 BERT 或 GPT。在这些模型训练时,会给原始文本,让模型预测前一个标记的下一个标记,这样每个训练示例的伪标签就是句子中的下一个单词。
近三年,自监督学习在计算机视觉领域取得重大突破,Google、DeepMind 和 Meta 等机构都有相关成果。虽然技术不断发展,但原理始终不变:模型通过对图像部分区域进行蒙版后预测,或旋转图像并预测旋转角度等方式创建伪标签。
了解了自监督学习的基本概念,接下来看看它在医学应用中特别有用的原因。
二、医学数据中的稀缺注释
医疗领域会产生海量图像。IBM 数据显示,高达 90% 的医疗数据是图像形式,这些数据来自 X 光等各种检查。世界卫生组织数据表明,每年 X 光检查达 36 亿次。
这么多数据,看似是机器学习算法的理想应用场景,但传统监督机器学习模型不仅需要训练示例,还需要注释或标签。比如用 X 光图像训练模型时,得告诉它图像中对应的医疗病症。
可在医学领域,注释是稀缺资源,获取难度大。通常需要专家医生标注,而医生时间宝贵,更应花在患者治疗上。这时,自监督学习就派上用场了。
三、自监督学习解决稀缺注释问题
在注释稀缺的情况下,比如识别 X 光图像中的病症,往往是数据多但标注少。
传统监督方法只能用少量带标签示例训练模型,而自监督学习能从未标记图像中学习。具体流程如下:
(一)自监督预训练
第一步,让自监督模型从未标记数据中生成伪标签并训练,这叫自监督预训练,模型要完成 “前提任务”,比如预测蒙版图像片段或旋转角度。通过这一步,模型能学习到未标记数据中的模式,虽不了解特定病症信息,但能知道某些 X 光图像与其他图像的差异,这就是在构建背景知识。
(二)有监督微调
第二步,用标记数据的一部分以常规监督方式对预训练模型进行微调。此时模型已有数据模式的背景知识,只需少量带标签示例,就能学习如何解决下游任务,比如检测 X 光图像中的病症。
四、前提任务
模型在预训练阶段要完成前提任务,文献中有很多种,只要能从输入数据创建伪标签就行,下面介绍几种常见方法。
(一)蒙版预测
对输入图像部分区域进行蒙版,然后让模型根据图像其余部分预测被蒙版的区域。
(二)变换预测
对图像进行旋转、颜色移动等变换,模型任务是预测变换参数,如旋转角度、颜色移动量等。
(三)拼图游戏
将输入图像切割成多个片段,随机重新排列,让模型找出正确的原始排列。
(四)实例区分
前提任务聚焦于实例区分,需要同一对象的多个不同视图,比如不同角度的同一只猫的照片。模型要识别两幅图像是否代表同一对象。
这些前提任务都是为了让模型学习数据中的结构和模式,而近年来对比学习方法效果更佳。
五、对比学习
对比学习的核心是将样本相互对比,了解样本间的共同模式和差异。
(一)监督对比学习
这种方法并非自监督学习独有,最早用于监督的少样本问题。比如办公楼安装自动门,只有每个员工的少量照片来训练模型,就可以训练一个模型判断两张图像是否是同一人,训练时会给模型三张图像:两张同一人的和一张不同人的,让模型学习前两张相似、与第三张不同。
(二)自监督对比学习
给模型呈现三张图像:
- 随机选取的训练数据集图像,即锚图像。
- 锚图像的变换版本,如旋转或颜色偏移后的图像,称为正例。
- 来自训练数据的另一张不同随机图像,称为负例。
模型学习目标是判断第一、二张图像相似,让它们的潜在表示接近;第三张与前两张不同,其潜在表示远离。接下来详细介绍一些自监督对比架构。
(三)三重损失
基于三重损失的模型是最简单的方法之一。通过主干模型(如 ResNet 或视觉变换器)处理锚点、正例和负例图像,得到它们的嵌入,再将嵌入输入三重损失函数,使模型在潜在空间中拉近锚点和正例图像,拉远锚点和负例图像。
(四)SimCLR
Google Research 在 2020 年提出简单对比学习框架(SimCLR)。模型接受锚图像及其变换版本(正例)两个输入,分别通过 ResNet 编码器、多层感知和可学习的非线性层,利用噪声对比估计(NCE)损失最大化两个嵌入的相似性,同时最小化与同一小批次中其他图像嵌入的相似性。SimCLR 在图像识别上效果不错,但批次大小需很大(最好 4096)且训练时间长,对个人和公司成本较高。
(五)MoCo
Facebook AI Research 团队的 Momentum Contrast(MoCo)改善了 SimCLR 的一些缺点。它有两个编码器网络,参数分别由在线编码器和正例编码器优化。在线编码器用常规梯度下降算法优化,动量编码器基于在线编码器权重的指数移动平均值更新。MoCo 保留动量编码器嵌入的存储器库,从中采样负例示例计算 NCE 损失,可将批次大小减小到 256。发布时,MoCo 在许多计算机视觉任务中超越了顶级监督模型。
(六)BYOL
DeepMind 的自助式生成隐变量(BYOL)基于 MoCo 构建,也有两个网络,一个根据另一个的权重进行移动平均值更新。与其他方法不同,BYOL 不用对比损失函数,而是让模型学会将正例示例和标准化的锚定到嵌入空间中的相同位置,即在线网络训练预测另一个网络的表示,无需负例示例和存储库。研究发现,BYOL 虽未直接对比不同图像,但实际上以间接对比方式学习。
(七)其他架构
还有许多现代自监督架构,如 Barlow Twins、SwAV、SimSiam 以及最新的 Tico 和 VICRegL 等,研究主要集中在模型对不同下游任务的可迁移性上。
六、选择变换
自监督学习解决了医疗数据稀缺标注问题,我们也了解了前提任务和对比架构。选择应用于锚图像的变换对自监督学习成功应用至关重要。
最新文献(如 SimCLR 和 MoCo 论文)建议使用随机裁剪、颜色抖动和模糊,认为这些变换在广泛下游任务中效果最佳。但实际情况没这么简单,不同变换会给模型引入不同不变性,不一定都适用。
(一)用于胸部 X 射线的变换
以 X 光图像为例,若忽略下游任务,只按建议用随机裁剪变换。图像中橙色圆圈代表肺部损伤区域,使用随机裁剪可能会把损伤区域裁掉,对比损失会让模型认为有损伤和无损伤的肺部相似,导致模型后续难以识别这类肺部损伤。对于灰度 X 光图像,颜色抖动和模糊变换也可能适得其反,因为灰度值或局部模糊可能指示特定病症。所以变换必须根据特定数据集和下游任务选择。
理论探讨后,我们看看自监督对比学习在 X 射线分类中的实际应用。
七、利用自监督学习进行 X 射线分类
我们使用 CheXpert 数据集,包含约 220,000 张胸部 X 光图像,标有十个互斥类别,代表不同医学状况和患者体内支持装置的存在。我们只用了其中 200,000 多张正面图像子集,随机选取约 200,000 张图像用于自监督预训练。经实验,确定对锚图像应用轻微随机旋转、水平翻转和随机透视变换。预训练时忽略这些图像的标签。
预训练后,用不同大小的带标签数据集(从 250 张到 10,000 张图像)以监督方式对模型进行微调。研究目标是观察模型性能随带标签集大小的变化。最后在一个包含 300 张手动标记图像的小测试集上测试模型(微调数据标签由数据集作者自动解析患者记录获得,可能有噪声;测试标签由医生手动标记,质量高)。
八、性能评估
我们比较了三种模型架构:
- 传统迁移学习方法,使用 ResNet18,仅在带标签微调集上以监督方式训练,代表不使用自监督学习、忽略未标记数据的情况。
- 简单三元组损失模型,使用 ResNet18 骨干结构,以对比方式用三元组损失预训练,并使用我们选择的变换。
- Meta 的 MoCo,同样使用 ResNet18 骨干结构和我们的变换集。
每个模型训练和测试十次,每次使用不同大小的带标签微调集,通过 ROC 曲线下面积(AUC)进行比较。
九、结果
自监督模型明显优于监督基线。具体来看:
- 带标签集最小时,自监督预训练增益最大,仅用 250 个带标签示例,比监督基线高出 10 个百分点。
- 即便标签数据集较大,自监督预训练仍能提升性能,10,000 个标签示例时,增益约 6 个百分点。
- 标签数据集较小时,MoCo 相对于基线的增益更大。
从数据类别频率看,自监督对每个类别都有帮助,对相对罕见类别帮助最大,这与标签集较小时改进更显著的结果一致。
十、结论
过去三年,计算机视觉的自监督学习取得巨大进展,对比架构不断提升标准。这带来两个重要影响:
- 有效利用未标记数据集的能力将改变许多注释数据稀缺的行业。
- 训练基础模型,让其从未标记数据中学习背景知识并迁移到不同下游任务,是 AI 泛化的重要一步。