AI科技评论按:深度学习在计算机视觉、自然语言处理、语音识别等领域的广泛应用催生了人工智能的第四次爆发。然而,当前主流的监督式学习任务往往过度依赖于人工标注,即所谓「有多少人工就有多少智能」。因此,通过自监督的方式自动生成监督信号成为了越来越多人工智能从业者的选择。本文从图像、视频、控制三个角度分别介绍了自监督表征学习的最新进展,值得一读!
作者 | Lilian Wang 王荔
编译 | MrBear
对于给定的任务,在拥有足够的标签的情况下,监督式学习可以很好地解决该问题。想要得到好的性能,往往需要大量的数据标签,但是手动收集数据的成本很高(例如,ImageNet),而且也很难对数据集进行扩展。
考虑到无标签数据(例如,免费的文本、网络上所有的图像)的数据量远远超过了数量有限的人为标记的数据集,如果不使用这些无标签数据是一种极大的浪费。然而,无监督学习是很困难的,而且相较于监督式学习往往要低效得多。
如果我们可以在不花费成本的情况下为无标签数据打上标签,并且以有监督的方式训练无监督数据,那会怎么样呢?我们可以通过一种特殊的形式创建一个监督式学习任务,使用待预测部分之外的信息来预测某一个子集的信息,从而达到训练的目标。这样一来,所有需要的信息(包括输入数据和相应的标签)都具备了。这就是所谓的「自监督学习」。
这一思想已经被广泛应用于语言建模任务中。对于语言模型来说,一个默认的任务就是在给定之前的文字序列的情况下预测下一个单词。BERT 加入了两个辅助任务,它们都依赖于自己生成的标签。
图 1:构建自监督任务的方法总结(图片来源:LeCun 的演讲,https://www.youtube.com/watch?v=7I0Qt7GALVk),图中自上而下分别为:(1)根据所有待预测部分之外的信息预测任意一部分信息。(2)根据过去预测未来。(3)根据过去最近的情况预测未来。(4)根据现在预测过去。(5)根据底层信息预测顶层信息。(6)根据可见的信息预测不可见的信息。(7)假设有一部分输入数据未知,并且对其进行预测。
这里呈上一份精心收集的自监督学习论文列表:https://github.com/jason718/awesome-self-supervised-learning。如果你对此感兴趣,并想进行更加深入的研究,可以查阅这些论文。
请注意,本文并非仅仅关注自然语言处理(NLP)的语言建模或生成式模型,涉及的内容包括以下几大部分:
一、为什么要进行自监督学习?
二、 基于图像的自监督学习
- 变形
- 图块
- 着色
- 生成式建模
三、基于视频的自监督学习- 追踪
- 帧排序
- 视频着色
四、基于控制的自监督学习- 多视角度量学习
- 自主目标生成
五、 参考文献
一、为什么要进行自监督学习?
自监督学习使我们能够无需额外成本就可以利用根据数据得出各种标签,这个动机非常直接。生成一个带有「干净」(无噪声)的标签的数据集的成本是很高的,但无标签的数据却无时无刻不在产生。为了利用大量的无标签数据,一种解决方法是合理设置学习目标,以便从数据本身中得到监督信号。
自监督任务(也称为 pretext 任务)要求我们考虑监督损失函数。然而,我们通常不关心该任务最终的性能。实际上,我们只对学习到的中间表征感兴趣,我们期望这些表征可以涵盖良好的语义或结构上的意义,并且能够有益于各种下游的实际任务。
举例而言,我们可以随机旋转图像,并训练一个模型来预测每个输入图像是如何被旋转的。这个旋转预测任务是人为构造的,所以就像我们对待辅助任务一样,实际上的准确率并不重要。但是,我们期望该模型能够学习到用于真实世界任务的高质量的潜变量,例如,只用很少的带标签样本构建一个目标识别分类器。
一般来说,所有的生成式模型都可以被看做是自监督的,但是它们的目标各不相同:生成式模型重点关注创建各种各样逼真的图片,而自监督表征学习则关注生成对于多种任务普遍有帮助的良好特征。生成式模型并不是本文关注的重点,如果对此感兴趣可以参阅下面的博文:https://lilianweng.github.io/lil-log/tag/generative-model
二、基于图像的自监督学习
研究人员针对图像的自监督表征学习已经提出了很多的思路。一种常见的工作流程是:在一个或多个使用无标签图像的pretext 任务上训练模型,然后使用该模型的一个中间特征层,为 ImageNet 分类任务的多分类 Logistic 回归分类器提供输入。
最近,一些研究人员提出利用有标签的数据训练监督式学习,同时利用无标签数据数据,在共享权重的情况下,训练自监督的pretext 任务,例如,Zhai 等人于 2019 年发表的论文「S4L: Self-Supervised Semi-Supervised Learning」(论文链接:https://arxiv.org/abs/1905.03670)和 Sun 等人于2019 年发表的论文「Unsupervised Domain Adaptation through Self-Supervision」(论文链接:https://arxiv.org/abs/1909.11825)。
1、变形
我们期望图像上的细微变形不会改变其原始语义或几何形式。我们可以认为轻微变形后的图像与原始图像相同,因此期望学习到的特征对于变形操作具有不变性。
Dosovitskiy 等人于 2015 年发表的「Exemplar-CNN」(相关论文:https://arxiv.org/abs/1406.6909),使用无标签的图像图块创建了替代的训练数据集:
- 在不同位置和不同的尺度的图像上进行采样,得到 N 个 32*32 像素的图块。只从梯度较大的区域选取图块,因为这些区域包含了边缘,更有可能包含物体或物体的一部分。它们是「模范」图块。
- 通过应用各种各样的随机变换(例如,平移、旋转、缩放等)对每个图块进行变形。我们认为最终得到的所有变形后的图块都属于同一个代理类。
- Pretext 任务需要能够将一组替代类区分开来。我们可以任意创建所需的替代类。
图 2:左上角是一只可爱的鹿的原始图块。在应用了随机变换后,产生了各种变形后的图块。在 pretext 任务中,所有这些图块都应该被归为同一类。(图片来源,Dosovitskiy 等人于 2015 年发表的「Exemplar-CNN」)
旋转整张图像(Gidaris 等人于 2018 年发表的论文「Unsupervised Representation Learning by Predicting Image Rotations」,论文链接:https://arxiv.org/abs/1803.07728)是另一种有趣且低成本的方法,可以在保持语义内容不变的情况下修改输入图像。每个输入图像首先随机旋转 90 度的倍数,分别对应于 [0°,90°,180°,270°]。我们训练模型去预测应旋转了多少度,因此这是一个 4 分类问题。
为了识别出旋转了不同角度的同一张图像,模型必须学会识别高级目标部分(如头部、鼻子和眼睛),并识别出这些部分的相对位置,而不是仅仅识别出局部模式。Pretext 任务使模型以这种方式学习物体的语义概念。
图 3:通过旋转整张图像进行自监督学习的示意图。模型通过学习预测旋转了多少度。(图片来源:Gidaris 等人于 2018 年发表的论文「Unsupervised Representation Learning by Predicting Image Rotations」)
2、图块
第二类自监督学习任务从一张图像中抽取出多个图块,并要求模型预测出这些图块之间的关系。
Doersch 等人于 2015 年发表的论文「Unsupervised Visual Representation Learning by Context Prediction」(论文链接:https://arxiv.org/abs/1505.05192)将 pretext 任务形式化定义为预测同一张图像中随机两个图块之间的相对位置。为了识别出不同部分之间的相对位置,模型需要理解目标的空间环境。
我们通过下面的方式对训练使用的图块进行采样:
- 在不参考任何图像内容的情况下,随机采样第一个图块。
- 考虑第一个图块处于一个 3*3 网格的中央,则从与第一个图块相邻的周围 8 个位置中采样得到第二个图块。
- 为了避免模型仅仅捕获到低级的不重要的信号(例如,连接一条跨越边界的直线或将局部模式配对),我们通过以下方式引入额外的噪声:
(1)增加图块之间的间隙
(2)细小的抖动
(3)随机地对一些图块进行下采样,使其总像素为 100,然后对其进行上采样,从而实现对像素化的鲁棒性
(4)将绿色和品红色调成灰色,或随机丢弃 3 个颜色通道中的 2 个(详见下方对「色差」的介绍)
- 训练模型预测第二个图块将选用相邻的 8 个位置中的哪一个,这是一个 8 分类问题。
图 4:通过预测两个随机图块的相对位置进行自监督学习的示意图(图片来源:Doersch 等人于 2015 年发表的论文「Unsupervised Visual Representation Learning by Context Prediction」)
除了诸如边界模式或纹理等普通信号,我们还发现了另一个有趣且令人有点惊讶的平凡解,我们将其称之为「色差」。它是由穿过透镜的不同波长的光的焦距不同引起的。在此过程中,颜色通道之间可能存在微小偏移。
因此,该模型可以通过简单比较绿色和品红色在两个不同图块中被区分开来的程度,来学习识别出相对位置。这是一个简单的解决方案,与图像内容无关。预处理图像时,通过将绿色和品红转换成灰色或随机丢弃 3 个颜色通道中的 2 个,可以避免这种平凡解。
图 5:发生色差的示意图
由于我们已经在上述任务中为每一张图像设置了一个 3*3 的网格,为什么不使用所有 9 个图块而仅仅使用 2 个图块来使得任务更加困难呢?沿着这种思路,Noroozi 和 Favaro 于 2016 年设计了一个「jigsaw」拼图游戏作为 pretext 任务:训练模型将 9 个打乱的图块放回初始的位置。
卷积网络以共享的权重独立处理每个图块,并根据预定义的排列组合输出每个图块索引的概率向量。为了控制「jigsaw」拼图游戏的难度,该论文提出根据预定义的排列集合打乱图块,并对模型进行配置,以预测集合中所有索引的概率向量。
因为将输入的图块打乱的方式不会改变预测的正确顺序,因而使用具有排列不变性的图卷积网络(GCN)可以不必对同一个图块集进行多次打乱操作,从而提高训练速度,详情请参阅论文「PIC: Permutation Invariant Critic for Multi-Agent Deep Reinforcement Learning」(论文链接:https://arxiv.org/abs/1911.00025)。
图 6:通过解决 jigsaw 拼图问题进行自监督学习的示意图(图片来源:Noroozi 和 Favaro 于 2016 年发表的「Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles」)
另一个思路是,将「特征」或「视觉基元」视为一个标量值属性,该属性可以根据多个图块求和得到,也可以在不同图块间进行对比。然后,可以通过计数特征和简单的算术来定义不同图块之间的关系(可参考Noroozi 等人于 2017 年发表的论文「Representation Learning by Learning to Count」,论文链接:https://arxiv.org/abs/1708.06734)。
该论文考虑了两种不同的变换:
- 放缩:如果一个图像放大了 2 倍,视觉基元的数量应该保持不变。
- 平铺:如果图像平铺成了一个 2*2 的网格,视觉基元的数量之和应该是原始特征计数的 4 倍。
该模型将使用上述特征计数关系学习一个特征编码器 φ(.)。给定输入图像 x∈Rm×n×3,考虑下面两类变换操作:
- 下采样操作:D:Rm×n×3↦Rm/2×n/2×3 长和宽分别下采样为原始图像的二分之一
- 平铺操作:Ti:Rm×n×3↦Rm/2×n/2×3 从图像的 2*2 网格中抽取出第 i 个图块
我们期望通过学习得到:
因此,均方误差(MSE)损失可以写成:
为了避免平凡解 φ(x)=0,∀x,我们还加入了另一个损失项来放大两张不同的图像之间的特征差异:
其中 y 是与 x 不同的另一张输入的图片,c 是一个标量常数。最终的损失函数为:
图 7:通过计数特征进行自监督学习的示意图(图片来源:Noroozi 等人于 2017 年发表的「Representation Learning by Learning to Count」)
3、着色
着色可以被用作一个强大的自监督任务:训练模型对灰度输入图像进行着色;确切地说,我们的任务是将该图像映射到量化的色彩值输出的分布上(详见 Zhang 等人于 2016 年发表的「Colorful Image Colorization」,论文链接:https://arxiv.org/abs/1603.08511)。
模型的输出颜色在 CIE Lab 色彩空间中,而 Lab 色彩空间的设计初衷就是为了近似人类的视觉系统。相反,RGB 和 CMYK 则对物理设备的色彩输出进行了建模。
L 分量对应于人类对亮度的感知;L=0 代表全黑,而 L*=100 代表全白。
a* 分量代表绿色(负)到品红色(正)之间的值
b* 分量代表蓝色(负)到黄色(正)之间的值
由于着色问题的多模态特性,预测的概率分布在二值化的色彩值上的交叉熵损失优于原始颜色值的 L2 损失。ab 色彩空间被量化为 10 个等级。
为了平衡常用颜色(通常 ab 值较低,常见的背景如云彩、墙壁和灰尘会使用这些颜色)和罕见的颜色(这些颜色可能与图像中的关键物体有关),我们通过加重不常见颜色的加权项来重新平衡损失函数。这就像为什么我们需要「tf」和「idf」在信息检索模型中为单词打分。加权项被构造为:(1-λ) ×高斯核平滑的经验概率分布 + λ × 一个均匀分布,这两种分布都在量化的 ab 色彩空间上。
4、生成式建模
生成式建模的 pretext 任务是在学习有意义的潜在表征的同时重建原始输入。
去噪自动编码器(详见 Vincent 等人于 2018 年发表的「Extracting and Composing Robust Features with Denoising Autoencoders」,论文链接:https://www.cs.toronto.edu/~larocheh/publications/icml-2008-denoising-autoencoders.pdf)会学习根据部分损坏或带有随机噪声的图像恢复出原图像。这一设计的灵感源于这样一个事实:即使有噪声,人类也可以轻松地识别出图片中的对象,这表明算法可以提取关键的视觉特征,并将其与噪声分离。详情请参阅此博文:https://lilianweng.github.io/lil-log/2018/08/12/from-autoencoder-to-beta-vae.html#denoising-autoencoder。
我们训练上下文编码器(详见 Pathak 等人于 2016 年发表的论文「Context Encoders: Feature Learning by Inpainting」,论文链接:https://arxiv.org/abs/1604.07379)来填补图像中确实的一块。令 M^ 为一个二值掩膜,其值为 0 代表丢弃该像素,其值为 1 代表保留输入像素。我们使用一个 L2 重建损失和对抗性损失的组合来训练该模型。通过掩膜定义的删除区域的形状是任意的。
其中 E(.) 是编码器,而 D(.) 是解码器。
图 8:上下文编码器的示意图(图片来源:Pathak 等人于 2016 年发表的论文「Context Encoders: Feature Learning by Inpainting」)
当我们将掩膜应用于一张图像上时,上下文编码器会删除部分区域汇总所有颜色通道的信息。那么,如果我们只隐藏一部分颜色通道的信息会怎么样呢?「split-brain」自编码器(详见 Zhang 等人于 2017 年发表的论文「Split-Brain Autoencoders: Unsupervised Learning by Cross-Channel Prediction」,论文链接:https://arxiv.org/abs/1611.09842)根据其余的通道预测一个颜色通道的子集,从而做到这一点。
令带有 c 个颜色通道的数据张量 x∈Rh×w×|C| 为第 l 层网络的输入,它被分为两个不相交的部分 x1∈Rh×w×|C1| 和 x2∈Rh×w×|C2| ,其中 C1,C2⊆C。接着,我们训练两个子网络来完成两个互补的预测任务:网络 f1 根据 x1 预测 x2,而另一个网络 f2 则根据 x2 预测 x1。如果色彩值被量化了,这里使用的损失函数是 L1 损失或交叉熵损失。
这种分裂可能发生在 RGB-D 或 Lab* 色彩空间中,也可能发生在卷积神经网络(CNN)的每一层中,其中通道的数量可能是任意的。
图 9:「split-brain」自编码器的示意图。(图片来源:Zhang 等人于 2017 年发表的论文「Split-Brain Autoencoders: Unsupervised Learning by Cross-Channel Prediction」)
生成对抗网络(GAN)可以学习到从简单的潜变量到任意复杂数据分布的映射。许多研究已经表明,这种生成式模型的潜空间可以捕获数据中的语义变化。例如,当我们使用人脸数据训练 GAN 时,一些潜变量与面部表情、眼镜、性别等特征相关(详见 Radford 等人于 2016 年发表的论文「Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks」,论文链接:https://arxiv.org/abs/1511.06434)
双向 GAN(详见 Donahue 等人于 2017 年发表的论文「Adversarial Feature Learning」,论文链接:https://arxiv.org/abs/1605.09782)则引入了一种额外的编码器 E(.) 来学习从输入到潜变量 z 的映射。判别器 D(.) 在输入数据和潜在表征构成的联合空间(x,z)中做预测,从而将生成的数据对(x,E(x))与真实数据对(G(z),z)区分开来。我们训练该模型优化的目标为:minG,EmaxDV(D,E,G),其中生成器 G 和 编码器 E 学着生成足够逼真的数据和潜变量来骗过判别器,同时判别器 D 试图区分真实数据和生成的数据。
图 10:双向 GAN 工作原理示意图(图片来源:Donahue 等人于 2017 年发表的论文「Adversarial Feature Learning」)
三、基于视频的自监督学习
视频包含一系列语义上相关的帧。相邻的帧在时间上更接近,并且比距离更远的帧更具相关性。视频帧的顺序反映了推理和物理逻辑的某些规则。例如,物体的运动应该是流畅的,重力是向下的。
常见的工作流程是,在一个或多个带有无标签视频的 pretext 任务上训练模型,然后将该模型的一个中间特征层作为输入,在基于动作分类、分割或物体跟踪等下游任务中对模型进行调优。
原文发布时间:2019-11-29
本文作者: Lilian Wang 王荔
本文来自云栖社区合作伙伴“AI科技评论”,了解相关信息可以关注“AI科技评论”