自监督学习算法的介绍及应用

948 阅读26分钟

在过去的十年里,人工智能的研究和开发飞速发展,特别是在2012年ImageNet竞赛的结果之后。重点主要是监督学习方法,需要大量的标记数据来训练特定用例的系统。

在这篇文章中,我们将探讨自我监督学习(SSL)--机器学习界的一个热门研究课题。

什么是自我监督学习(SSL)算法?

**自我监督学习(SSL)**是一种不断发展的机器学习技术,准备解决过度依赖标记数据所带来的挑战。多年来,使用机器学习方法建立智能系统在很大程度上依赖于高质量的标注数据。因此,高质量标注数据的成本是整个训练过程中的一个主要瓶颈。

人工智能研究人员的首要任务之一是开发具有非结构化数据的自学机制,能够以较低的成本扩展通用人工智能系统的研究和开发。实际上,收集和标注各种不同的数据是不可能的。

为了解决这个问题,研究人员正在研究能够捕捉到数据中细微差别的自我监督学习(SSL)技术。

在我们进入自监督学习之前,让我们先了解一下用于构建智能系统的流行学习方法的一些背景。

1.监督学习

一种流行的学习技术,用于在特定任务的标记数据上训练神经网络。你可以把监督学习想象成一个教室,学生由老师用许多例子来教。例如,物体分类。

2.无监督学习

无监督学习是一种深度学习技术,用于寻找数据中的隐含模式,而不需要明确地在标记的数据上进行训练。与监督学习不同,它不需要注释和训练的反馈回路。例如,聚类。

Unsupervised Learning

无监督学习|来源

3.半监督学习

半监督学习是一种机器学习方法,其中我们有输入数据,而输入数据的一部分被标记为输出。它是监督学习和无监督学习的混合体。

Semi-supervised learning

半监督学习| 来源

半监督学习在我们有少量标记的数据点来训练模型的情况下很有用。训练过程可以使用一小块标记的数据,并对数据集的其余部分进行伪标记。

例如,一个学生被老师教了几个问题,他必须自己找出其余问题的解决方案。

4.4. 强化学习

强化学习 是一种用于训练人工智能代理在特定情况下使用奖励反馈策略学习环境行为的方法。

举例来说。把它想象成一个孩子在游戏中试图赢得一个阶段。

Reinforcement learning process

强化学习过程|来源

什么是自我监督的学习?

自监督学习是一个机器学习过程,模型训练自己从另一部分输入中学习其中的一部分。它也被称为预测性学习或借口学习。

在这个过程中,通过自动生成标签,无监督的问题被转化为有监督的问题。为了利用大量的无标签数据,设定正确的学习目标,从数据本身获得监督是至关重要的。

自监督学习方法的过程是将输入的任何隐藏部分从输入的任何未隐藏部分中识别出来。

Self-supervised learning

自监督学习|来源

例如,在自然语言处理中,如果我们有几个词,使用自我监督学习,我们可以完成句子的其余部分。同样,在视频中,我们可以根据现有的视频数据来预测过去或未来的帧。自监督学习利用数据的结构,在大型数据集上利用各种监督信号--所有这些都不依赖标签。

自监督学习和无监督学习之间的区别是什么?

许多人混淆了这两个术语,并将它们交替使用。然而,这两种学习技术有不同的目标。

自监督学习和无监督学习方法可以被认为是互补的学习技术,因为两者都不需要标记的数据集。无监督学习可以被认为是自监督学习的超集,因为它没有任何反馈回路。相反,自监督学习有很多监督信号,在训练过程中起到反馈作用。

一个更简单的说法是,"无监督 "学习技术非常注重模型而不是数据,而 "自我监督学习 "技术则相反。然而,无监督学习方法擅长聚类和降维,而自我监督学习是回归和分类任务的借口方法。

为什么我们需要自监督学习?

自监督学习的出现是因为其他学习程序中一直存在以下问题。

  • 高成本。大多数学习方法都需要标记的数据。在时间和金钱方面,高质量的标记数据的成本非常高。
  • 漫长的生命周期。 在开发ML模型中,数据准备的生命周期是一个漫长的过程。它需要根据训练框架进行清理、过滤、注释、审查和重组。
  • 通用人工智能: 自监督学习框架离将人类认知嵌入机器又近了一步。

现在我们来谈谈自监督学习在不同领域的效用。

自监督学习在计算机视觉中的应用

多年来,计算机视觉中学习方法的重点一直是完善模型结构,并假设我们有高质量的数据。然而,在现实中,如果不付出高昂的时间和精力成本,就很难拥有高质量的图像数据,从而导致次优的训练模型。

最近,很大一部分研究重点是在计算机视觉中开发跨不同应用的自监督方法。用无标签数据训练模型的能力加快了整个训练过程,使模型能够在不引入标签偏差的情况下学习潜在的语义特征。

训练一个自我监督的模型主要有两个阶段。

  1. 前期任务

我们用于预训练的任务被称为 "借口任务"。语境任务(也被称为监督任务)的目的是引导模型学习数据的中间表征。它对于理解潜在的结构意义很有帮助,有利于下游的实际任务。

生成模型可以被认为是自我监督的模型,但目标不同。例如,在GANs中,它们被用来为判别器生成真实的图像,而自我监督训练的目的是识别可用于各种任务的良好特征,而不仅仅是为了欺骗判别器。

  1. 下游任务

下游任务是 知识转移过程的前言模型到一个特定的任务。下游任务所提供的标记数据数量较少。

下游任务也被称为视觉领域的目标任务,可以是物体识别、物体分类、物体再识别等,这些任务是在前文模型上进行微调的。

研究人员针对不同的基于图像的任务提出了许多想法,使用SSL方法进行训练。

补丁定位

目标。幌 子任务的目的是利用自我监督的学习来识别图像中不同斑块之间的关系。

Patch localization in image

图像中的补丁定位 |来源

训练算法[论文]

  1. 从图像中随机抽取一个补丁。
  2. 最近的邻居。假设第一个补丁放在3×3网格的中间,第二个补丁从其8个相邻的位置取样。
  3. 引入诸如斑块之间的间隙、色差、下采样和上采样的斑块来处理像素化和颜色抖动的增强。这有助于模型不过度拟合某些低层次的信号。
  4. 该任务的目的是识别8个相邻位置中的哪一个是第二个补丁。该任务被设定为8个类别的分类问题。

在最终确定借口任务时,重要的是要确保它不像全局模式下的高层次潜在特征那样学习微不足道的模式。例如,像斑块之间的边界纹理这样的低级线索可以被认为是琐碎的特征。然而,对于某些图像来说,存在一个琐碎的解决方案。这种情况的发生是由于相机镜头效应,即色差,它的发生是由于不同波长的光的焦点的差异。

卷积神经网络能够通过检测洋红色(蓝+红)和绿色之间的差异来学习斑块的相对位置。近邻实验证明,由于斑块显示出类似的畸变,很少有斑块从绝对相同的位置检索出区域。

语境感知的像素预测

目标。使 用编码器-解码器,根据图像的整体背景,预测图像中未知斑块的像素值。

训练算法[论文]

  1. 预测任务是使用虚构的编码器-解码器架构进行训练。
  2. 编码器(Pathak, et al., 2016)使用带有涂黑区域的输入图像产生图像的潜在特征表示。
  3. 解码器使用来自编码器的潜在特征表示,并使用重建损失(MSE)估计丢失的图像区域。
  4. 编码器和解码器之间的通道式全连接层允许解码器中的每个单元对整个图像内容进行推理。

Context encoder architecture

上下文编码器架构 |来源

损失函数

训练中使用的损失函数是 重建损失和 对抗性损失。

重构损失

  • 重建(L2)损失负责捕捉与全图上下文有关的突出特征。
  • 重建损失被定义为输入图像x的归一化屏蔽距离
    • M:对应于被删除的图像区域的二进制掩码,输入像素的值为0,当一个像素不被考虑时为1。
    • F: 导致编码器输出的函数

对抗性损失

  • 对抗性损失的建模是为了使预测看起来真实,并学习它所训练的输入数据的潜在空间。
  • 只有生成器G是针对输入掩码的条件,因为判别器D能够利用被修补的区域和原始语境的永久不连续性。

联合损失

  • 联合损失是利用结合重建和对抗性损失开发的
  • 然而,在实验过程中,作者意识到,只用对抗性损失进行画图效果最好。

通过辅助监督和学习强特征表征,使用SSL方法实现了语义内绘。早在2016年,这篇论文就是在训练竞争性图像模型中使用SSL方法的早期先驱者之一。

自监督学习在自然语言处理中的应用

在SSL成为主流计算机视觉研究的一部分之前,SSL已经负责在自然语言处理(NLP)领域取得了巨大的进步。 从文档处理应用、文本建议、句子完成等等,语言模型几乎无处不在。

然而,这些模型的学习能力自 词语2Vec2013年发表的论文,彻底改变了NLP领域。词嵌入方法的想法很简单:我们可以要求模型根据先前的上下文来预测下一个词,而不是要求它预测下一个词。

由于这样的进步,我们能够通过词嵌入的分布获得有意义的表示,可以用于许多场景,如句子完成、词的预测等。今天,NLP中最流行的SSL方法之一是 BERT。

在过去的十年里,自然语言处理领域出现了惊人的研究和发展的流入。让我们把其中一些重要的提炼出来,如下。

下一句话预测

在下一句预测(NSP)中,我们从一个文档中挑选两个同时出现的句子,以及一个来自相同或不同文档的随机句子,例如句子A、句子B和句子C,然后我们问模型句子A相对于句子B的相对位置?我们对所有的组合都这样做。

考虑以下情况。

  1. 完成学业后,迈克回家了。
  2. 经过近50年的时间,载人登月的任务终于开始了。
  3. 一回到家,迈克就看Netflix来放松。

如果我们要求一个人重新排列任何两个符合我们逻辑理解的句子,他们很可能会选择 句子1其次是 第3句.

这里的模型的主要目的是根据长期的上下文依赖关系来预测句子。

变换器的双向编码器表示法(BERT)谷歌人工智能团队的研究人员发表的一篇论文,在谈到自然语言推理(MNLI)、问题回答(SQuAD)等若干NLP任务时,已经成为一个黄金标准。

对于这样的下游任务,BERT提供了一个很好的方法来捕捉句子之间的关系,而这是通过其他语言建模技术无法实现的。以下是它对下句预测的作用。

  1. 为了使BERT处理各种下游任务,输入表示法能够毫不含糊地表示一对句子,这些句子被打包成一个序列。一个 "序列 "指的是BERT的输入标记序列。

  2. 每个序列的第一个标记总是一个特殊的分类标记([CLS])。与该标记相对应的最终隐藏状态被用作分类任务的聚合序列表示。

  3. 我们以两种方式来区分这些句子。首先,我们用一个特殊的标记([SEP])将它们分开。第二,我们给每个标记添加一个学习的嵌入,表明它是属于句子A还是句子B。

  4. 我们将输入嵌入表示为E,将特殊[CLS]标记的最终隐藏向量表示为C,将第1个输入标记的最终隐藏向量表示为Ti。 这个向量C被用于下一句话预测(NSP)

这个任务可以从下面的例子中理解。

BERT

如果你想利用BERT模型来完成这个任务,你可以参考Hugging Face的文档,了解如何做。

自动回归式语言建模

虽然像BERT这样的自动编码模型利用自监督学习来完成句子分类(下一个或不下一个)等任务,但自监督方法的另一个应用在于文本生成领域。

像GPT(Generative Pre-trained Transformer)这样的自回归模型在经典的语言建模任务上进行了预训练--在阅读了所有先前的单词后预测下一个单词。这样的模型对应于转化器的解码器部分,在完整的句子上面使用了一个掩码,这样注意力头就只能看到文本中之前的内容,而不能看到后面的内容。

让我们通过观察GPT的训练框架来深入了解这些模型的工作原理。

训练程序由两个阶段组成。

  1. 无监督的预训练

第一阶段是在一个大的文本语料库上学习一个高容量的语言模型。

给定一个无监督的语料库U={u1, . .,un},我们使用一个标准的语言建模目标来最大化以下可能性。

Unsupervised Pre-training

其中k是上下文窗口的大小,条件概率P是用参数Θ的神经网络来模拟的。这些参数是用随机梯度下降法训练的。

这里正在训练的模型是语言模型的多层变换器解码器,它是变换器的一个变种。这个模型在输入的语境标记上应用了一个多头的自我注意操作,然后是位置的前馈层,以产生一个目标标记的输出分布。

Unsupervised Pre-training

其中U = (u-k, ... , u-1)是标记的上下文向量,n是层的数量,We是标记嵌入矩阵,Wp是位置嵌入矩阵。这种受限的自我关注,每个标记都可以关注其左边的上下文,这就把自我监督的方法带入了画面。

  1. 监督下的微调

在这一步,我们假设有一个标记的数据集C,其中每个实例由一连串的输入标记,x1, ....输入通过我们预先训练好的模型,以获得最终转化器块的激活hml,然后将其送入一个添加了参数的线性输出层,以预测y。

Supervised fine-tuning

这就给我们提供了以下的目标,使其最大化。

Supervised fine-tuning

将语言建模作为微调的辅助目标,通过--提高监督模型的泛化,加速收敛来帮助学习。具体来说,我们优化以下目标(权重为λ)。

Supervised fine-tuning

总的来说,我们在微调过程中唯一需要的额外参数是Wy和分隔符符号的嵌入。

(left) Transformer architecture and training objectives used in this work. (right) Input transformations for fine-tuning on different tasks

*(左) 本工作中使用的变换器结构和训练目标
(右) 在不同任务上进行微调的输入变换 |来源
*

在上图中,左边是转化器架构和训练目标,右边是用于不同任务微调的输入转化。我们将所有结构化的输入转化为标记序列,由我们预先训练好的模型进行处理,然后是一个线性+softmax层。对于不同的任务,需要进行不同的处理,比如对于文本关联,我们将前提(p)、包含的文本和假设(h)、包含的文本、标记序列连接起来,中间有一个分隔符($)。

与最初的GPT模型相比,已经有了许多迭代的改进,要了解如何将其用于自己的用例,你可以参考这个页面

自监督学习的应用:工业案例研究

到目前为止,我们已经谈到了流行的模型是如何使用自我监督的方法进行训练的,以及你如何自己训练一个模型或使用现有库中的一个模型。

现在让我们来看看业界是如何利用这种技术来解决关键问题的。

1.1.Facebook的仇恨言论检测

"我们相信,自我监督学习(SSL)是建立背景知识和近似于人工智能系统中的一种常识的最有前途的方法之一。"

Facebook的AI科学家们

Facebook不仅通过基础的、开放的科学研究在许多领域推进自监督学习技术,而且他们还在生产中应用这一前沿工作,以迅速提高其产品中内容理解系统的准确性,以保证人们在其平台上的安全。

其中一个例子是XLM,Facebook人工智能在不依赖手工标记的数据集的情况下训练多种语言的语言系统,以提高仇恨言论检测。

Hate-speech detection at Facebook

这种自我监督学习的应用使他们的模型更加强大,他们的平台更加安全。让我们简单谈谈XLM是什么,以及它是如何能够带来如此大的变化的。

XLM

模型

它是一个基于变形金刚的架构,使用三种语言建模目标之一进行预训练。

  1. 休闲语言建模(CLM):对句子中给定的前几个词的概率进行建模,即P(wt |w1, . . . , wt-1, θ)。

  2. 屏蔽语言建模(MLM):BERT的屏蔽语言建模目标,即用[MASK]关键词屏蔽随机选择的标记,并试图预测它们。

  3. 翻译语言建模(TLM):新增加的内容,也是MLM的延伸,不考虑单语文本流,而是将平行句子连接起来,如下图所示。源句和目标句中的词都被屏蔽了。为了预测英语句子中被掩盖的单词,该模型可以关注周围的英语单词或法语翻译,鼓励该模型对准英语和法语的表述。如果英语的语境不足以推断出被掩盖的英语单词,该模型也可以利用法语语境。

Cross-lingual language model pretraining

跨语言语言模型的意义|来源

因此,XLM是一个跨语言的语言模型,其预训练可以用CLM、MLM或MLM与TLM结合使用来完成。现在让我们来看看XLM带来的好处。

性能分析

  1. 跨语言分类

XLM为零散的跨语言分类提供了更好的句子编码器初始化,并且能够实现State-of-the-Art(SOTA)的性能,通过MLM方法获得71.5%的准确率。将MLM和TLM结合起来,性能进一步提高到75.1%。

  1. 机器翻译系统

与第一点类似,它为有监督和无监督的神经机器翻译系统提供了一个更好的初始化。用MLM目标进行的预训练在无监督系统的情况下显示出明显的改善,而同样的目标导致监督系统的SOTA性能,BLEU分数为38.5。

  1. 低资源语言的语言模型

对于低资源语言来说,利用类似但高资源语言的数据往往是有益的,特别是当它们共享相当一部分词汇的时候。XLM被发现可以通过利用印地语(一种相对流行的语言,有相当多的资源)的信息来改善尼泊尔语言模型(一种低资源语言),因为它们共享相同的Devnagari文字。

  1. 无监督的跨语言词汇嵌入

XLM超越了以前的跨语言词嵌入工作,在源词和其翻译之间达到了0.69的SOTA水平的皮尔逊相关分数。

有了这样的进步,XLM确实在自然语言处理方面有所建树。

2.谷歌的医学影像分析模型

在医学领域,训练深度学习模型一直是一项艰巨的任务,因为标记的数据有限,而且注释这些数据费时又费钱。为了解决这个问题,谷歌的研究团队推出了一种新颖的多实例对比学习(MICLe)方法,该方法在每个病人案例中使用多个基础病理图像,为自我监督学习构建更多信息的正向对。

Google’s medical imaging analysis model

谷歌的医学影像分析模型 |来源

关于图示的方法,有几件事需要注意。

  • 第1步是使用SimCLR进行的,SimCLR是谷歌设计的另一个框架,用于图像上的自我监督表示学习。我们很快就会讨论它。
  • 与步骤(1)不同,步骤(2)和(3)是针对任务和数据集的。

因此,让我们一步一步地来。

第1步:SimCLR框架

它代表了视觉表征对比学习的简单框架,它极大地推进了自我监督和半监督学习的技术水平,并在有限的类标记数据下实现了图像分类的新记录。

  • SimCLR首先在未标记的数据集上学习图像的通用表征,然后可以用少量的标记图像对其进行微调,以实现特定分类任务的良好性能(就像医学成像任务)。

  • 通用表征是通过同时最大化同一图像的不同转换视图之间的一致性和最小化不同图像的转换视图之间的一致性来学习的,采用的方法称为对比学习*。* 使用这种对比性目标更新神经网络的参数会使对应视图的表征相互 "吸引",而非对应视图的表征相互 "排斥"。

  • 首先,SimCLR从原始数据集中随机抽取例子,使用简单的增强组合对每个例子进行两次转换,创建两组相应的视图。

  • 然后,它使用一个基于ResNet架构的CNN计算图像表示。

  • 最后,SimCLR使用全连接网络(即MLP)计算图像表示的非线性投影,这放大了不变的特征,使网络识别同一图像的不同变换的能力最大化。

训练有素的模型不仅能很好地识别同一图像的不同变换,而且还能学习类似概念的表征(例如,椅子与狗),以后可以通过微调将它们与标签联系起来。

第二步:MICLe

在用SimCLR对无标签的自然图像进行初始预训练后,模型被训练成能够捕捉到医学图像数据集的特殊性。这也可以用SimCLR来完成,但这种方法只能通过增强来构建阳性对,而不能轻易利用病人的元数据来构建阳性对。因此,这里使用了MICLe。

  • 给定一个病人病例的多张图像,MICLe通过从同一病人病例的两张不同的图像中提取两个作物来构建一个用于自我监督的对比学习的阳性对。这些图像可能是从不同的观察角度拍摄的,显示的是具有相同基本病理的不同身体部位。

  • 这为自监督学习算法提供了一个很好的机会,可以直接学习对视角、成像条件和其他干扰因素变化具有鲁棒性的表征。

第三步:微调

  • 在微调过程中对模型进行端到端的训练,使用预先训练好的网络的权重作为下游监督任务数据集的初始化。
  • 在微调过程中,对两个任务(皮肤病学和胸部X射线)中的图像进行了随机颜色增强、裁剪与调整大小、模糊、旋转和翻转。
  • 对于预训练策略和下游微调任务的每个组合,都进行了广泛的超参数搜索。

性能分析

  1. 自监督学习利用了未标记的特定领域的医学图像,并明显优于监督的ImageNet预训练。

Comparison of supervised and self-supervised pre-training, followed by supervised fine-tuning using two architectures on dermatology and chest X-ray classification.

监督和自我监督预训练的比较,然后使用两种架构对皮肤科和胸部X光分类进行监督微调。

  1. 自我监督的预训练模型可以更好地概括分布的变化,MICLe预训练带来的收益最大。这是一个有价值的发现,因为分布变化下的泛化对于临床应用来说是至关重要的。

Evaluation of models on distribution-shifted datasets

在分布转移的数据集上对模型的评估 |来源

  1. 使用自监督模型进行预训练可以弥补医学图像分类的低标签效率,在所有的采样标签部分中,自监督模型的表现一直优于监督基线。事实上,MICLe只用了ResNet-50(4倍)的20%的训练数据和ResNet152(2倍)的30%的训练数据就能与基线相匹配。

Top-1 accuracy for dermatology condition classification for MICLe, SimCLR, and supervised models under different unlabeled pretraining dataset and varied sizes of label fractions

MICLe、SimCLR和监督模型在不同的无标签预训练数据集和不同大小的标签部分下的皮肤病条件分类准确率排名第一。

自监督学习的挑战

到目前为止,我们已经谈到了自监督学习是如何在机器学习社区的几乎所有领域取得进展的,但它也有一些缺点。自监督学习正试图实现 "一种方法解决所有问题 "的方法,但它离这种实现还很远。在SSL领域的一些关键挑战是。

  • **准确度。**虽然SSL技术的前提是不使用标记的数据,但这种方法的缺点是你要么需要大量的数据来产生准确的伪标签,要么在准确性上打折扣。值得注意的是,在最初的训练中,产生的不准确的标签会产生反作用。

  • 计算效率。由 于训练的多个阶段(1.生成伪标签 2.在伪标签上训练),与监督学习相比,训练一个模型所需的时间很高。另外,目前的SSL方法需要大量的数据才能达到接近监督学习的准确度。

  • 前提任务。 为你的用例选择正确的借口任务是非常重要的。例如,如果你选择一个自动编码器作为你的借口任务,其中图像被压缩,然后再生,它也会试图模仿原始图像的噪声,如果你的任务是生成高质量的图像,这个借口任务将弊大于利。

主要启示

在这篇文章中,我们了解了什么是自我监督学习,为什么它正在受到青睐,以及与之相关的风险和挑战是什么。我们还讨论了使用这种方法训练出来的流行模型,以及深入了解自监督学习是如何被大型科技公司利用来解决一些真正紧迫的问题。

总结一下我们到目前为止所学到的东西。

  • 在我们处理与数据有关的挑战的情况下,自我监督学习是一个福音。其范围包括从准备数据集的低资源到耗时的注释问题。
  • 它的另一个优点是下游任务,即转移学习。模型可以在无标签的数据集上以自我监督的方式进行预训练,然后可以进一步针对特定的使用情况进行微调。
  • 作为前两点的结果,很明显,如果你想建立一个可扩展的ML模型,自监督学习是一个很好的方法。
  • 然而,与此同时,人们必须意识到使用这种方法的附带条件。

虽然我们试图在这篇文章中涵盖很多内容,但很明显,我们所讨论的内容并不详尽。关于自我监督学习,仍有很多东西需要学习。如果你想了解更多关于它的现状以及潜在的应用案例,你可以参考以下材料。

学习愉快!