【机器学习】业界干货 | 图解自监督学习,从入门到专家必读的九篇论文
共 4993字,需浏览 10分钟
·
2021-10-21 13:15
作者 | 对白 整理 | 对白的算法屋 编者寄语:
大家好,我是对白。
如果人工智能比作一块蛋糕,那么蛋糕的大部分是自监督学习,蛋糕上的糖衣是监督学习,蛋糕上的樱桃是强化学习。
Yann Lecun在他的演讲中引入了“蛋糕类比”来说明自监督学习的重要性。虽然这个类比是有争论的,但我们也已经看到了自监督学习的影响,在自然语言处理领域最新发展(Word2Vec,Glove, ELMO, BERT)中,已经接受了自监督,并取得了最佳的成果。
“如果人工智能是一块蛋糕,那么蛋糕的大部分是自监督学习,蛋糕上的糖衣是监督学习,蛋糕上的樱桃是强化学习(RL)。”
出于对自监督学习在CV、NLP和推荐领域应用的好奇,我通过最近工作中的学习心得,并查阅了大量的论文,希望能以最通俗易懂的方式给大家讲解清楚,自监督学习这项技术的魅力。
这篇文章是我对自监督学习的直观总结。
一、概览
1.1 基于上下文(Context based)
1.2 基于时序(Temporal based)
1.3 基于对比(Contrastive based)
二、主要方法
2.1 基于上下文(Context based)
Data Augmentation相关的方法会对通过对原始图片进行一些变换(颜色、旋转、裁切等)来扩充原始训练集合,提高模型泛化能力;
Multi-task learning将正常分类任务和self-supervised learning的任务(比如旋转预测)放到一起进行学习。
作者指出通过data augmentation或者multi-task learning等方法的学习强制特征具有一定的不变性,会使得学习更加困难,有可能带来性能降低。
因此,作者提出将分类任务的类别和self-supervised learning的类别组合成更多类别(例如 (Cat, 0),(Cat,90)等),用一个损失函数进行学习。
第一项和第二项分别对应图a和图b,第三项是正常的分类交叉熵损失,作为一个辅助loss。
论文二:《S4L: Self-Supervised Semi-Supervised Learning》
2.2 基于时序(Temporal based)
对于视频中的每一帧,其实存在着特征相似的概念,可以认为相邻帧特征是相似的,而相隔较远的视频帧是不相似的,通过构建这种position和negative的样本来进行自监督约束。
对于同一个物体的拍摄是可能存在多个视角(multi-view),对于多个视角中的同一帧,可以认为特征是相似的,对于不同帧可以认为是不相似的。
论文四:《Unsupervised Learning of Visual Representations Using Videos》
基于无监督追踪方法,首先在大量的无标签视频中进行无监督追踪,获取大量的物体追踪框。那么对于一个物体追踪框在不同帧的特征应该是相似的,而对于不同物体的追踪框中的特征应该是不相似的。
论文五:《Shuffle and learn: unsupervised learning using temporal order verification》
基于顺序约束的方法,可以从视频中采样出正确的视频序列和不正确的视频序列,构造成正负样本对然后进行训练。简而言之,就是设计一个模型,来判断当前的视频序列是否是正确的顺序。
2.3基于对比(Contrastive based)
Deep InfoMax 通过利用图像中的局部结构来学习图像表示,对比任务是对一对图像中的全局特征和局部特征进行分类。
全局特征是CNN的最终输出,局部特征是编码器中的中间层的输出。每个局部特征图都有一个有限的感受野。
对于一个 anchor image 𝑥,𝑓(𝑥)是来自一幅图像的全局特征,正样本𝑓(𝑥+)是相同图像的局部特征,负样本𝑓(𝑥−)是不同图像的局部特征。
本文探讨的简单思想是训练一个表示学习函数,即编码器,以最大化其输入和输出之间的互信息(MI)。作者以一种类似于对抗自动编码器的方式,将MI最大化和先验匹配结合起来,根据期望的统计特性约束表示。
为了得到一个更适合分类的表示,作者将图像的高层表示与局部patch之间的平均MI值最大化。
论文七:
《Representation Learning with Contrastive Predictive Coding》
CPC是一个基于对比约束的自监督框架,可以适用于文本、语音、视频、图像等任何形式数据的对比方法(图像可以看作为由像素或者图像块组成的序列)。
CPC通过对多个时间点共享的信息进行编码来学习特征表达,同时丢弃局部信息。这些特征被称为“慢特征”:随时间不会快速变化的特征。比如说:视频中讲话者的身份,视频中的活动,图像中的对象等。
CPC 主要是利用自回归的想法,对相隔多个时间步长的数据点之间共享的信息进行编码来学习表示,这个表示 c_t 可以代表融合了过去的信息,而正样本就是这段序列 t 时刻后的输入,负样本是从其他序列中随机采样出的样本。CPC的主要思想就是基于过去的信息预测的未来数据,通过采样的方式进行训练。
基于对比的自监督学习其实就是训练一个编码器然后在一个大的字典里确保和对应的key是相似的,和其它的是不相似的。
传统上字典的大小就是batch-size,由于算力的影响不能设置过大,因此很难应用大量的负样本。因此效率较低。
本文采用队列来存储这个字典,在训练过程中,每一个新batch完成编码后进入队列,最老的那个batch的key出队列,字典的大小与batchsize实现分离,这样可用的字典大小就可以远远大于batchsize,负样本的数目就会大大扩增,效率得到大幅提升。
动量更新主要是为了解决字典这部分数据在反向传播的时候更新参数的问题,因为反向传播需要在队列中所有的样本中进行传播。在这里作者使用了一种动量更新的方式缓慢平滑的更新参数:
2) 在表示和对比损失之间引入一个可学习的非线性变换,大大提高了学习表示的质量。
随机数据增强模块:随机剪裁之后Resize到同一尺寸,接着是随机颜色扰动,随机高斯模糊。随机剪裁和颜色扰动的组合对获得好性能至关重要。
用于从增强后的数据样本中提取表征向量的神经网络基础编码器。该框架能够无限制的适用不同的网络框架。作者们采用简单通用的ResNet。
神经网络projection head g(),用来将表征映射到对比损失应用的空间。
对比损失函数,用于对比预测任务。给定一个包含正样本对的数据集,对比预测任务目标是识别出正样本对。
往期精彩回顾 本站qq群554839127,加入微信群请扫码: