雷锋网AI科技评论按:深度学习在计算机视觉、自然语言处理、语音识别等领域的广泛应用催生了人工智能的第四次爆发。然而,当前主流的监督式学习任务往往过度依赖于人工标注,即所谓「有多少人工就有多少智能」。因此,通过自监督的方式自动生成监督信号成为了越来越多人工智能从业者的选择。本文从图像、视频、控制三个角度分别介绍了自监督表征学习的最新进展,值得一读!
对于给定的任务,在拥有足够的标签的情况下,监督式学习可以很好地解决该问题。想要得到好的性能,往往需要大量的数据标签,但是手动收集数据的成本很高(例如,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)的语言建模或生成式模型,涉及的内容包括以下几大部分:
一、为什么要进行自监督学习?
二、 基于图像的自监督学习
1. 变形
2. 图块
3. 着色
4. 生成式建模
三、基于视频的自监督学习
1. 追踪
2. 帧排序
3. 视频着色
四、基于控制的自监督学习
1. 多视角度量学习
2. 自主目标生成
五、 参考文献
自监督学习使我们能够无需额外成本就可以利用根据数据得出各种标签,这个动机非常直接。生成一个带有「干净」(无噪声)的标签的数据集的成本是很高的,但无标签的数据却无时无刻不在产生。为了利用大量的无标签数据,一种解决方法是合理设置学习目标,以便从数据本身中得到监督信号。
自监督任务(也称为 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),使用无标签的图像图块创建了替代的训练数据集:
1. 在不同位置和不同的尺度的图像上进行采样,得到 N 个 32*32 像素的图块。只从梯度较大的区域选取图块,因为这些区域包含了边缘,更有可能包含物体或物体的一部分。它们是「模范」图块。
2. 通过应用各种各样的随机变换(例如,平移、旋转、缩放等)对每个图块进行变形。我们认为最终得到的所有变形后的图块都属于同一个代理类。
3. 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:通过旋转整张图像进行自监督学习的示意图。模型通过学习预测旋转了多少度。(图片来源:Gida
ris 等人于 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 任务形式化定义为预测同一张图像中随机两个图块之间的相对位置。为了识别出不同部分之间的相对位置,模型需要理解目标的空间环境。
我们通过下面的方式对训练使用的图块进行采样:
1. 在不参考任何图像内容的情况下,随机采样第一个图块。
2. 考虑第一个图块处于一个 3*3 网格的中央,则从与第一个图块相邻的周围 8 个位置中采样得到第二个图块。
3. 为了避免模型仅仅捕获到低级的不重要的信号(例如,连接一条跨越边界的直线或将局部模式配对),我们通过以下方式引入额外的噪声:
(1)增加图块之间的间隙
(2)细小的抖动
(3)随机地对一些图块进行下采样,使其总像素为 100,然后对其进行上采样,从而实现对像素化的鲁棒性
(4)将绿色和品红色调成灰色,或随机丢弃 3 个颜色通道中的 2 个(详见下方对「色差」的介绍)
4. 训练模型预测第二个图块将选用相邻的 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)。
该论文考虑了两种不同的变换:
1. 放缩:如果一个图像放大了 2 倍,视觉基元的数量应该保持不变。
2. 平铺:如果图像平铺成了一个 2*2 的网格,视觉基元的数量之和应该是原始特征计数的 4 倍。
该模型将使用上述特征计数关系学习一个特征编码器 φ(.)。给定输入图像 x∈Rm×n×3,考虑下面两类变换操作:
1. 下采样操作:D:Rm×n×3↦Rm/2×n/2×3 长和宽分别下采样为原始图像的二分之一
2. 平铺操作: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 任务上训练模型,然后将该模型的一个中间特征层作为输入,在基于动作分类、分割或物体跟踪等下游任务中对模型进行调优。
1、追踪
一个物体的运动情况可以通过一系列视频帧进行追踪。在临近帧中捕获同一物体的方式之间的差异并不大,这些差异通常是由物体或摄像机的微小运动触发的。Wang 和 Gupta 在2015年的论文「Unsupervised Learning of Visual Representations using Videos」(论文链接:https://arxiv.org/abs/1505.00687)中提出了一种通过追踪视频中的移动物体来实现对视觉表征的无监督学习的方法。
他们在一个较小的时间窗口(例如 30 帧)内对图块进行精确的追踪。第一个图块 x 和最后一个图块 x+ 被选作训练数据点。如果我们直接训练模型最小化两个图块的特征向量之间的差距,该模型可能只能学着将所有图块映射到同一个值上。为了避免这种平凡解,和上面一样,我们加入了随机的第三个图块 x-。该模型通过使两个被追踪到的图块的距离在特征空间中比第一个图块和另一个随机的图块之间的距离更近,来学习表征,即 D(x,x−))>D(x,x+),其中 D(.) 代表余弦距离:
损失函数为:L(x,x+,x−)=max(0,D(x,x+)−D(x,x−)+M)+权值衰减正则项
其中,M 是控制两个距离之间最小差距的标量常数;论文中的 M=0.5。损失函数使得在最优情况下存在 D(x,x−)>=D(x,x+)+M。
这种形式的损失函数在人脸识别任务(其中数据集包含从各个相机角度拍摄的多人照片)中也被称为三元组损失(可参考相关论文「FaceNet: A Unified Embedding for Face Recognition and Clustering」:https://arxiv.org/abs/1503.03832)。令 xa 为某个特定人的「anchor」图像,xp 为从另一个角度拍摄的同一个人的正例图像,xn 为另一个人的负例图像。在嵌入空间中,xa 与 xp 的距离应该比 xn 与 xp 的距离更近:
「n-pair」损失(相关论文链接:https://papers.nips.cc/paper/6200-improved-deep-metric-learning-with-multi-class-n-pair-loss-objective)的形式与三元组损失略有不同,它也经常被用于学习机器人任务中的观测嵌入。更多相关的内容请参阅后续章节。
图 11:通过追踪视频中的物体进行自监督学习的方法概览。(a)在较短的轨迹中识别运动图块;(b)使用共享的权值,将两个相关联的图块和一个随机图块输入给一个卷积神经网络。(c)损失函数迫使相关图块之间的距离比随机图块之间的距离更近。(图片来源:Wang 和 Gupta 于2015年发表的论文「Unsupervised Learning of Visual Representations using Videos」)
我们通过下面的两步无监督光流方法追踪并抽取相关联的图块:
1. 获取「SURF」兴趣点并使用「IDT」获取每个 SURF 点的运动信息。
2. 给定「SURF」兴趣点的运动轨迹,将光流强度大于 0.5 像素的点分类为运动点。
在训练时,给定一对相关的图块 x 和 x+,在同一批中采样 K 个随机的图块{x−} ,从而构成 K 个训练三元组。经过几轮迭代后,我们使用困难负例挖掘让训练更困难并更高效。换句话说,我们将随机搜索最大化损失的图块,并使用它们更新梯度。
2、帧排序
视频帧会自然地按时间先后顺序排列。研究人员提出了一些自监督的任务,期望良好的表征可以学到正确的帧排序方式。
其中一种思路是:对帧的顺序进行验证(详见 Misra 等人于 2016 年发表的论文「Shuffle and Learn: Unsupervised Learning using Temporal Order Verification」,论文链接:https://arxiv.org/abs/1603.08561)。pretext 任务用以确定视频中的帧序列是否以正确的时间顺序排列(时序检验),模型需要追踪并推断物体在整个帧中的微小运动,才能完成此任务。
训练帧是从运动变化较大的窗口中采样得到的。每次采样得到 5 个帧(fa,fb,fc,fd,fe),时间戳的顺序为 a<b<c<d<e。除了这 5 个视频帧,我们还创建了一个正例元组(fb,fc,fd)和两个负例元组(fb,fa,fd)和(fb,fe,fd)。参数 τmax=|b-d| 控制正例训练实例的难度(即从更高到更难),而参数 τmin=(|a-b|,|d-e|)控制负例的难度(即从更低到更难)。
实验结果表明,将视频帧顺序检验的 pretext 任务作为一个预训练步骤,可以提升动作识别下游任务的性能。
图 12:通过验证视频帧的顺序学习表征的方法概览。(a)数据采样过程;(b)模型是一个三元组连体网络,其中所有输入帧共享权值。(图片来源:Misra 等人于 2016 年发表的论文「Shuffle and Learn: Unsupervised Learning using Temporal Order Verification」)
O3N(「Odd-One-Out 」网络;详见 Fernando 等人于 2017 年发表的论文「Self-Supervised Video Representation Learning With Odd-One-Out Networks」,论文链接:https://arxiv.org/abs/1611.06646)中的自监督任务也是以视频帧序列验证为基础。相比上面的任务来说,该任务的进步在于它从多个视频片段中选取除了不正确的序列。
给定 N+1 个输入视频片段,其中一个片段中的视频帧被打乱了,因此具有错误的帧顺序,而其余 N 个片段保持了正确的时间顺序。O3N 网络学着去预测被打乱的视频片段是哪一个。在他们的试验中,一共用到了 6 个输入片段,每个片段包含 6 个帧。
无论是在底层的物理学意义上(例如,重力将物体吸引到地上;烟雾升腾起来;水往下流)还是在高级的时间推理层面上(例如,鱼会向前游;你可以打破一个鸡蛋但不能将其复原),视频中的时间箭头都包含了非常有用的信息。因此,我们受此启发想到了另一个点子:无论视频是往前播放还是倒放,都可以通过预测时间箭头(AoT)来学习潜在表征(详见 Wei 等人于 2018 年发表的论文「Learning and Using the Arrow of Time」,论文链接:https://www.robots.ox.ac.uk/~vgg/publications/2018/Wei18/wei18.pdf)
为了预测时间箭头,分类器需要能够同时感知底层的物理意义和高级的语义。Wei 等人提出的 T-CAM(时序类激活映射)网络接收 T 组输入,每一组包含若干个光流帧。每一组经过卷积层处理后的输出会被连接起来,然后输入给二分类 Logistic 回归分类器,从而预测时间箭头。
图 13:通过预测时间箭头进行自监督学习的方法概览。(a)连接多组帧序列的卷积特征。(b)最顶层包含 3 个卷积层和一个平均池化层。(图片来源:Wei 等人于 2018 年发表的论文「Learning and Using the Arrow of Time」)
有趣的是,在数据集中存在一些人为的提示因素。如果处理不当, 它们可能导致我们得到不依赖于实际视频内容的普通分类器:
由于视频压缩,黑色的帧可能并不完全是黑色的,它们可能包含了某些时间序列的信息。因此,在实验中应该删除黑色的帧。
摄像机大幅的运动(例如垂直平移或放大/缩小),也为时间箭头提供了强烈的信号,但这与视频内容无关。处理阶段应该使摄像机运动稳定。
实验结果表明,将时间箭头(AoT)pretext 任务作为一个预训练步骤,可以提高动作分类下游任务的性能。请注意,这里仍然需要进行调优。
3、视频着色
Vondrick 等于 2018 年发表的论文「Tracking Emerges by Colorizing Videos」(论文链接:https://arxiv.org/abs/1806.09594)中,提出将视频着色作为一种自监督学习问题,从而产生了丰富的表征形式,这样的表征可以被用于视频分割和无标签视觉区域跟踪,而无需进行额外的调优。
与基于图像的着色、不同,这里的任务是通过利用视频帧之间色彩的自然时间一致性,将颜色从正常的参考帧复制到另一个灰度目标帧(因此,这两个帧在时间上不应相距太远)。为了一致地复制颜色,该模型旨在学习跟踪不同帧中的相关像素。
图 14:通过将一个参考帧的颜色复制给灰度图像目标帧进行视频着色。(图片来源:Vondrick 等人于 2018 年发表的论文「Tracking Emerges by Colorizing Videos」)
这个想法既简单又很巧妙。令 ci 为参考帧中第 i 个像素的真实颜色,cj 为目标帧中第 j 个像素的颜色。在目标帧中第 j 个像素的颜色的预测值 c^j 是所有参考帧中像素颜色的加权和,其中加权项用于度量下面的相似度:
其中 f 是学到的相应像素的嵌入;i’ 是参考帧中所有像素的索引。加权项实现了基于注意力的指示机制,这与匹配网络和指针网络的思路相类似。由于完整的相似度矩阵可能非常大,参考帧和目标帧都会被下采样。正如 Zhang 等人在 2016 年发表的论文「Colorful Image Colorization」(论文链接:https://arxiv.org/abs/1603.08511)中所做的那样,cj 和 c^j 之间的多分类交叉熵于量化的颜色一起使用。
基于参考帧被标记的方式,该模型可以被用来实时地完成诸如追踪分割结果或追踪人体姿态等基于颜色的下游任务(无需调优)。
图 15:使用视频着色技术进行追踪物体分割和人体姿态(图片来源:Vondrick 等人于 2018 年发表的论文「Tracking Emerges by Colorizing Videos」)
在现实世界中运行强化学习策略时(例如控制一个物理机器人的视觉输入),合理地跟踪状态、获得奖励信号或者判断是否真正实现了某个目标是十分重要的。这种视觉数据存在大量与真实状态无关的噪声,因此不能通过像素级的比较来推断出状态的等价性。自监督表征学习在学习有用的状态嵌入方面显示出了巨大的潜力,可以直接作为控制策略的输入。
本章讨论的所有例子都来自于机器人学习领域,主要是关于多个摄像机视角的状态表征和目标表征。
1、多视角度量学习
本文前面的章节已经多次提及了度量学习的概念。一个常见的设定是:给定一个样本的三元组(anchor sa,正样本 sp,负样本 sn),学习得到的表征嵌入 ϕ(s) 满足:sa 在潜空间中离 sp 较近,但是离 sn 较远。
Grasp2Vec(详见Jang 和 Devin 等人于 2018 年发表的论文「Grasp2Vec: Learning Object Representations from Self-Supervised Grasping」,论文链接:https://arxiv.org/abs/1811.06964)旨在根据自由的、无标签的抓取或欧东,学习一个在机器人抓取任务中的以物体为中心的视觉表征。「以物体为中心」通常意味着,无论环境或机器人看起来如何,如果两张图像包含相似的项,它们就应该被映射到相似的表征上,否则它们的嵌入应该距离很远。
图 16:关于 grasp2vec 学习以物体为中心的状态嵌入的方法的概念示意图(图片来源:Jang 和 Devin 等人于 2018 年发表的论文「Grasp2Vec: Learning Object Representations from Self-Supervised Grasping」)
一个抓取系统可以判断出它是否移动了一个物体,但是不能判断移动的究竟是哪个物体。Jang 等人设置了摄像机拍摄整个实验场景和抓取的物体的图片。在训练的早期,抓取机器人会随机抓取任何物体 o,从而产生一个图像的三元组(spre,spost,o):
o 是被抓取举到摄像机跟前的物体的图像
spre 是抓取前场景的图像,此时 o 在托盘中
spost 是抓取后场景的图像,此时 o 已经不再托盘中
为了学习以物体为中心的表征,我们希望 spre 和 spost 的嵌入之间的差异能够反映出图像中的目标 o 消失了。这个想法非常有趣,它与词嵌入领域观察到的关系非常类似,例如:distance(国王,女王)≈distance(男人,女人)
令 ϕs 和 ϕo 分别为场景和物体的嵌入函数。该模型通过使用 n-pair 损失最小化 ϕs(spre)−ϕs(spost) 和 ϕo(o) 之间的距离学习表征:
其中 B 代表一批(anchor,正样本)的样本对。
当我们将表征学习构造为一种度量学习时,往往选用 n-pair 损失。N-pair 损失将一个 mini-batch 中所有不在一对里面的正实例视为负例,而不是显式地处理一个(anchor,正样本,负样本)三元组。
嵌入函数 ϕo 非常适合使用一张图像表征一个目标。奖励函数能够量化实际抓住的物体 o 与目标之间的距离,我们将奖励函数定义为:r=ϕo(g)·ϕo(o)。请注意,计算奖励只依赖于学习到的潜在空间,并不涉及真实的位置,所以这种方法可以被用来训练真正的机器人。
图 17:Grasp2Vec 嵌入的定位结果。在预抓取场景中定位目标物体的热力图被定义为:ϕo(o)⊤ϕs,spatial(spre),其中 ϕs,spatial 为 ReLU 激活之后最后个 resnet 块的输出。第四列是一个失败的案例,而最后三列采用真实的图像作为目标。(图片来源,Jang 和 Devin 等人于 2018 年发表的论文「Grasp2Vec: Learning Object Representations from Self-Supervised Grasping」)
除了基于嵌入相似度的奖励函数,还有其它一些在 Grasp2Vec 框架下的技巧可以用来训练强化学习策略:
事后归因标签 P:通过将随机抓取的物体标记为正确目标来增强数据集,例如 HER(事后经验回放;详见 Andrychowicz 等人于 2017 年发表的论文「Hindsight Experience Replay」,论文链接:https://papers.nips.cc/paper/7090-hindsight-experience-replay.pdf)
辅助目标增强:通过使用未完成的目标重新标记变换操作,进一步增强回放缓冲区。在每一轮迭代中,抽样得到两个目标,并且用这两个目标来增加新的变换得到回放缓冲区中。
TCN(时间对比网络,详见 Sermanet 等人于 2018 年发表的论文「Time-Contrastive Networks: Self-Supervised Learning from Video」,论文链接:https://arxiv.org/abs/1704.06888)根据多个摄像机的视角拍摄的视频进行学习,作者直观上认为,同一场景同一时间的不同视点在嵌入时间不同的情况下,应该共享相同的嵌入(类似于FaceNet),即使是对于统一摄像机视点也应该是如此。因此,嵌入捕获的是底层状态的语义,而不是视觉相似性。TCN 嵌入使用三元组损失进行训练。
图 18:用于学习状态嵌入的时间对比方法的示意图。蓝色框包围的帧是从同一时间的两个不同摄像机视角中选取出来的 anchor 样本和正样本,而红色框包围的帧是在另一个时间选出的负样本。
TCN 嵌入抽取出了对于摄像机配置具有不变性的视觉特征。它可以被用来为基于演示视频和潜在空间观测值之间欧氏距离的模仿学习构建一个奖励函数。
我们还可以对 TCN 进行进一步的改进,同时从多个帧中学习嵌入,而不是根据单个帧学习,从而得到 mfTCN(多帧时间对比网络;详见 Dwibedi 等人于 2019 年发表的论文「Learning Actionable Representations from Visual Observations」,论文链接:https://arxiv.org/abs/1808.00928)。给定一组从多个同步的摄像机视点拍摄的视频 v1,v2,…,vk,在每一段视频中 t 时间的视频帧和以步长 s 选取出的之前的 n-1 个视频帧都被聚合了起来,并且被映射到了一个嵌入向量中,形成了一个大小为 (n-1)*(s+1)的回看时间窗口。每一帧首先通过了一个 CNN 提取底层特征,然后我们使用三维时序卷积对帧进行时间聚合。该模型使用 n-pair 损失进行训练。
图 19:训练 mfTCN 的采样过程(图片来源,Dwibedi 等人于 2019 年发表的论文「Learning Actionable Representations from Visual Observations」)
训练数据根据下面的方式采样得到:
1. 我们首先构建两对视频片段。每一对包含两个在同步的时间步上从不同摄像机视角拍摄的片段。这两组视频在时间上距离应该很远。
2. 以相同的步长,同时从从属于同一对的每一个视频片段中采样出一定数量的帧。
3. 将相同时间步上的帧作为 n-pair 损失中的正样本进行训练,而从属于不同对的样本作为负样本训练。
而 mfTCN 嵌入可以捕获场景中物体的位置和速度(例如在车摆系统中),也可以作为策略的输入。
2、自主目标生成
RIG(使用假想目标的强化学习;详见 Nair 等人于 2018 年发表的论文「Visual Reinforcement Learning with Imagined Goals」,论文链接:https://arxiv.org/abs/1807.04742)介绍了一种通过无监督表征学习训练一种以目标为条件的策略的方法。这种策略通过首先假想一些「虚构」目标然后试着实现它们的自监督方式进行学习。
图 20:RIG 的工作流程(图片来源:Nair 等人于 2018 年发表了的论文「Visual Reinforcement Learning with Imagined Goals」)
该任务是控制一个机器手把一个小球推到设想的位置。这个设想的位置(或称目标),会出现在图像中。在训练阶段,它通过 β-VAE 自编码器同时学习状态 s 和目标 g 的潜在嵌入,控制策略完全在潜在空间中进行操作。
假设 β-VAE 拥有一个编码器 qϕ,该编码器将输入状态映射到潜变量 z 上,而我们通过一个高斯分布对 z 建模,同时还有一个解码器 pψ 将 z 映射回输入状态。RIG 中的状态编码器被设置为 β-VAE 的均值。
这里的奖励是状态和目标嵌入向量之间的欧氏距离:r(s,g)=−‖e(s)−e(g)‖。类似于 Grasp2Vec,RIG 也通过重新标记潜在目标进行数据增强:准确地说,一半的目标是根据先验随机生成的,另一半目标是使用 HER 选择的。与 Grasp2Vec 一样,这里的奖励也不依赖于任何真实状态,仅仅依赖于学到的状态编码,因此它可以被用来训练真实的机器人。
图 21:RIG 的算法(图片来源:Nair 等人于 2018 年发表了的论文「Visual Reinforcement Learning with Imagined Goals」)
RIG 存在的问题是:假想出的目标图片缺乏物体变化。如果一个 β-VAE 仅仅使用一个黑球来训练,它就不能使用其它物体(比如形状和颜色不同的方块)来创建一个目标。受到 CVAE(条件 VAE,详见 Sohn,Lee 和 Yan 等人于 2015 年发表的论文「Learning Structured Output Representation using Deep Conditional Generative Models」,论文链接:https://papers.nips.cc/paper/5775-learning-structured-output-representation-using-deep-conditional-generative-models)的启发,一个后续的改进方案使用了 CC-VAE(以上下文环境为条件的变分自编码器,详见 Nair 等人于 2019 年发表的论文「Contextual Imagined Goals for Self-Supervised Robotic Learning」,论文链接:https://arxiv.org/abs/1910.11670)进行目标生成。
图 22:以上下文环境为条件的 RIG 的工作流程(图片来源:Nair 等人于 2019 年发表的论文「Contextual Imagined Goals for Self-Supervised Robotic Learning」)
一个 CVAE 是以上下文变量 c。它会训练一个编码器 qϕ(z|s,c) 和一个解码器 pψ(s|z,c),请注意它们都需要用到变量 c。CVAE 损失惩罚从输入状态 s 传过信息瓶颈的信息,但是允许从 c 传递到编码器和解码器的不受限的信息流。
为了创建合理的目标,CC-VAE 以一个起始状态 s0 为条件,从而使生成的目标与 s0 中的物体保持类型一致。这种目标一致性是很有必要的;例如,如果当前场景包含一个红色的小球,但是目标中包含一个蓝色的方块,这样就会迷惑我们的策略。
除了状态编码器 e(s)≜μϕ(s),CC-VAE 还会训练第二个卷积编码器 e0(.),将状态 s0 转换为一个紧凑的上下文表征 c=e0(s0)。我们故意让两个编码器 e(.) 和 e0(.) 不要共享权值,期望它们对图像变化的不同要素进行编码。除了 CVAE的损失函数,CC-VAE 加入了额外的项来学习将 c 重建为
图 23 :通过以上下文图像(第一行)为条件的 CVAE 生成的假想目标的示例,而 VAE 则不能捕获到物体的一致性(图片来源:「Contextual Imagined Goals for Self-Supervised Robotic Learning」)
在自监督表征学习过程中,存在一些常见的情况:
将多种 pretext 任务组合起来可以提升性能;
更深的网络可以提升表征的质量;
至今,监督式学习对比基准仍然优于其它方法。
[1] Alexey Dosovitskiy, et al. “Discriminative unsupervised feature learning with exemplar convolutional neural networks.” IEEE transactions on pattern analysis and machine intelligence 38.9 (2015): 1734-1747.
[2] Spyros Gidaris, Praveer Singh & Nikos Komodakis. “Unsupervised Representation Learning by Predicting Image Rotations” ICLR 2018.
[3] Carl Doersch, Abhinav Gupta, and Alexei A. Efros. “Unsupervised visual representation learning by context prediction.” ICCV. 2015.
[4] Mehdi Noroozi & Paolo Favaro. “Unsupervised learning of visual representations by solving jigsaw puzzles.” ECCV, 2016.
[5] Mehdi Noroozi, Hamed Pirsiavash, and Paolo Favaro. “Representation learning by learning to count.” ICCV. 2017.
[6] Richard Zhang, Phillip Isola & Alexei A. Efros. “Colorful image colorization.” ECCV, 2016.
[7] Pascal Vincent, et al. “Extracting and composing robust features with denoising autoencoders.” ICML, 2008.
[8] Jeff Donahue, Philipp Krähenbühl, and Trevor Darrell. “Adversarial feature learning.” ICLR 2017.
[9] Deepak Pathak, et al. “Context encoders: Feature learning by inpainting.” CVPR. 2016.
[10] Richard Zhang, Phillip Isola, and Alexei A. Efros. “Split-brain autoencoders: Unsupervised learning by cross-channel prediction.” CVPR. 2017.
[11] Xiaolong Wang & Abhinav Gupta. “Unsupervised Learning of Visual Representations using Videos.” ICCV. 2015.
[12] Carl Vondrick, et al. “Tracking Emerges by Colorizing Videos” ECCV. 2018.
[13] Ishan Misra, C. Lawrence Zitnick, and Martial Hebert. “Shuffle and learn: unsupervised learning using temporal order verification.” ECCV. 2016.
[14] Basura Fernando, et al. “Self-Supervised Video Representation Learning With Odd-One-Out Networks” CVPR. 2017.
[15] Donglai Wei, et al. “Learning and Using the Arrow of Time” CVPR. 2018.
[16] Florian Schroff, Dmitry Kalenichenko and James Philbin. “FaceNet: A Unified Embedding for Face Recognition and Clustering” CVPR. 2015.
[17] Pierre Sermanet, et al. “Time-Contrastive Networks: Self-Supervised Learning from Video” CVPR. 2018.
[18] Debidatta Dwibedi, et al. “Learning actionable representations from visual observations.” IROS. 2018.
[19] Eric Jang & Coline Devin, et al. “Grasp2Vec: Learning Object Representations from Self-Supervised Grasping” CoRL. 2018.
[20] Ashvin Nair, et al. “Visual reinforcement learning with imagined goals” NeuriPS. 2018.
[21] Ashvin Nair, et al. “Contextual imagined goals for self-supervised robotic learning” CoRL. 2019. 雷锋网雷锋网
via https://lilianweng.github.io/lil-log/2019/11/10/self-supervised-learning.html