对比学习中的4种经典训练模式
每天给你送来NLP技术干货!来自:圆圆的算法笔记对比学习是无监督表示学习中一种非常有效的方法,核心思路是训练query和key的Encoder,让这个Encoder对相匹配的query和key生成的编码距离接近,不匹配的编码距离远。想让对比学习效果好,一个核心点是扩大对比样本(负样本)的数量,即每次更新梯度时,query见到的不匹配key的数量。负样本数量越多,越接近对比...
每天给你送来NLP技术干货!
来自:圆圆的算法笔记
对比学习是无监督表示学习中一种非常有效的方法,核心思路是训练query和key的Encoder,让这个Encoder对相匹配的query和key生成的编码距离接近,不匹配的编码距离远。想让对比学习效果好,一个核心点是扩大对比样本(负样本)的数量,即每次更新梯度时,query见到的不匹配key的数量。负样本数量越多,越接近对比学习的实际目标,即query和所有不匹配的key都距离远。
对比学习目前有4种最典型的范式,分别为End-to-End、Memory Bank、Momentum Encoder以及In-Batch Negtive。这几种对比学习结构的差异主要体现在对负样本的处理上,4种方法是一种逐渐演进的关系。下面,我们来看看4种对比学习结构的经典工作。关于对比学习的损失函数,建议参考之前的文章表示学习中的7大损失函数梳理。
1
End-to-End
End-to-End是一种最直接的对比学习方法,对于一个query,每次采样一个正样本以及多个负样本,使用对比学习loss计算损失,正样本和负样本都进行梯度反向传播。下面介绍几篇End-to-End的对比学习经典论文。
第一篇是Unsupervised Embedding Learning via Invariant and Spreading Instance Feature(2019)。本文的目标是学习图像好的表示,满足相似的图像embedding离得近,不相似的图像embedding离得远的特点。具体的,希望同一个图像经过不同的数据增强方式进行转换后,能够具有embedding的不变性,同时不同图像的embedding有明显差异。
这篇文章在原来每个样本为一个类别的分类基础上进行了优化,将每个图像进行一种数据增强的转换后,去让转换前后的图像的embedding离得更近。首先采样一个batch的图像,然后对每一个图像使用一种数据增强方法进行转换。优化的目标是让每一个图像xi转换后的图像xi'能够被分为xi这个样本的类别。模型的训练仍然采用多个二分类的方式,每个样本的loss可以表示为:
最终采用底层共享参数的孪生网络结构进行模型训练。在训练阶段,每个样本的会使用该batch内其他样本作为负样本进行训练,并使用一种随机的argumentation策略生成一个正样本。
LEARNING DEEP REPRESENTATIONS BY MUTUAL INFORMATION ESTIMATION AND MAXIMIZATION(ICLR 2019,DIM)是另一个典型的End-to-End对比学习框架。本文提出在Deep InfoMax基础上进行对比学习,首先介绍一下Deep InfoMax。Deep InfoMax是一种无监督图像表示学习方法,目标是让输入样本和其经过Encoder后的表示互信息最大,互信息越大表明两个变量相关性越强,互信息可以采用InfoNCE、Jensen-Shannon MI estimator等方法求解。
具体实现上,随机采样一个图像,经过卷积得到feature map f(x),再经过网络得到一个图像的表示向量h(f(x)),整个过程相当于取了整个encoder中某一层的表示f(x),以及encoder的最终输出h(f(x)),让这两个表示的互信息尽可能大。同时随机选择其他图像,生成其feature map f(x')。这样f(x)和h(f(x))构成正样本,f(x')和h(f(x))构成负样本,再代入loss进行优化。基本思路采用了MINE的方法,去求一个下界。使用一个discriminator去判别输入是配对的feature map和representaion的联合概率分布还是不配对的feature map和representaion的边缘概率分布的乘积。
最终学习的是中间表示中某一个部分的信息和最终encoder得到feature的相关性,互信息可以理解为在是否获取encoder最终表示的情况下,我们能预测出的中间层某部分的表示会好多少。这是使用相对的预估能力而非绝对的预估能力进行评估。
Learning Representations by Maximizing Mutual Information Across Views(2019)扩展了DIM,学习一个图像的两种不同增强方式的互信息最小。DIM使用同一张图像最终层和中间层的表示计算互信息,而本文采用一个图像的不同增强后的view计算。
End-to-End方法的主要问题在于,采样的负样本数量受到GPU内存限制,因此这种方法的每次更新能够使用到的负样本数量非常有限,影响了对比学习效果。
2
Memory Bank
针对End-to-End负样本采样数量受GPU内存限制的问题,基于Memory Bank的方法进入人们视野。Memory Bank的核心思路是,将某一轮模型对数据集中所有样本的表示存储起来,这些样本在作为负样本时,可以不进行梯度更新,极大提升了每个batch负样本数量。
Memory Bank对比学习的主要论文是Unsupervised feature learning via non-parametric instance discrimination(ICLR 2018)。当进行图像分类时,如果两个类别的图像相似,那么模型更容易把这两类的预测搞混,softmax得分排第二的的类别往往是和待预测类别比较相似的。这说明模型在学习的过程中,能够从图像数据本身学出哪些图片表达相似的事物,而不需要引入标签。因此本文希望只利用无监督的图片,就学习出比较好的图像表示,将原来的分类问题进行一个扩展,每个图片视为一个类别,做多分类任务,这样无需有监督数据就能学习图像表示。同时,将softmax中每个类别对应的权重替换为每个样本的embedding结果,将原来的softmax去掉每个类别的权重参数w后变为了 non-parametric softmax,最终表示为:
然而一个图像为一个类别带来的问题是计算softmax多分类损失时,分类的类别数和样本数相同。因此本文提出利用InfoNCE loss来近似拟合softmax多分类损失,它与层次softmax、negative sampling都是解决类别较多时多分为问题的高效方法。InfoNCE loss将多分类问题转换为多个二分类问题,原来是预测当前样本属于哪个类别,转换成判断每个样本(一个正样本和多个负样本)是否和当前样本匹配,或区分数据样本和噪声样本。
为了提升运行效率,本文采用Model Bank的方法,每个样本的表示更新后会存储到model bank中。下次需要负样本的时候直接从model bank取该样本表示,而不会进行前向计算和反向传播。每个类别只有一个样本会导致模型训练不稳定,因此本文在损失函数中引入平滑项,让模型在t轮迭代计算的表示和t-1轮相似,引入两轮表示的L2正则。随着模型不断收敛,这一项L2正则会逐渐变为0,整体又变成原来的InfoNCE loss。
Model Bank方法的问题在于,Model Bank中存储的样本表示不是最新训练的encoder产出的,和当前encoder生成的表示有一定差异,导致模型训练过程存在问题,例如当前encoder产出的编码可能要和n轮迭代之前产出的encoder编码做比较。同时,Model Bank侧两次样本表示更新不具备连续性,也会导致训练不稳定
3
Momentum Encoder
Momentum Encoder主要为了解决Model Bank中每个样本缓存的表示和Encoder更新不一致的问题。Momentum Encoder的核心思路是,模型在key侧的encoder不进行训练,而是平滑拷贝query侧encoder的参数,如下面的公式:
这种更新方式保证了key侧参数的平滑性,且每次都能用最新的参数得到key侧样本的表示结果。典型的Momentum Encoder工作是Facebook提出的MoCo,论文Momentum Contrast for Unsupervised Visual Representation Learning。
4
In-Batch Negtive
In-Batch Negtive也是对比学习中经常采用的一种扩大负样本数量的方法。对于匹配问题,假设每个batch内有N个正样本对,那么让这N个正样本之间互为负样本,这样每个样本就自动生成了2*(N-1)个负样本。这种技巧提出的很早,在近期对比学习中又得到非常广泛的应用。
A Simple Framework for Contrastive Learning of Visual Representations(2020)就采用了In-Btahc Negtive的方法。此外,本文也提出了对比学习的一些关键发现,包括对数据的argumentation的方式、batch size的大小、生成的embedding进行normalize、对对比学习loss的temperature进行调节都对对比学习效果有重要影响。融合了上述优化,本文提出SimCLR对比学习框架,以最大化同一个图像经过不同argumentation后表示的相关性为目标。整个流程分为3个步骤,首先对图像进行两种不同的增强得到一对正样本,然后经过Encoder得到表示,最后将表示映射后计算对比学习loss,采用In-Batch Negtive的方法进行学习。
在图像和文本匹配的多模态领域,In-Batch Negtive也非常常用,例如Learning Transferable Visual Models From Natural Language Supervision提出的CLIP模型。In-Batch Negtive的优点是非常简单,计算量不会显著增加。缺点是负样本只能使用每个batch内的数据,是随机采样的,无法针对性的构造负样本。
5
总结
本文总结了对比学习的4种基本训练结构,包括End-to-End、Memory Bank、Momentum Encoder以及In-Batch Negtive,以及各自的优缺点。对比学习训练方式发展的核心是,如何实现量级更大、质量更好、更平稳的负样本表示。通过优化负样本,可以显著提升对比学习的效果。
📝论文解读投稿,让你的文章被更多不同背景、不同方向的人看到,不被石沉大海,或许还能增加不少引用的呦~ 投稿加下面微信备注“投稿”即可。
最近文章
EMNLP 2022 和 COLING 2022,投哪个会议比较好?
ACL'22 | 快手+中科院提出一种数据增强方法:Text Smoothing
下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套! 后台回复【五件套】
下载二:南大模式识别PPT 后台回复【南大模式识别】
投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。
记得备注呦
整理不易,还望给个在看!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)