©原创 · 作者 | 张琨
学校 | 中国科学技术大学博士生
研究方向 | 自然语言处理
自监督学习(Self-Supervised Learning, SSL),或者自监督学习中的对比学习(Contrastive Learning,CL)在近两年成为人工智能研究的一个重要研究方向和方法。自监督学习或者对比学习能够充分利用数据本身的特性,在不需要标注的前提下实现对输入数据的准确表征学习,辅助增强了模型在下游任务中的性能。
为了进一步挖掘自监督学习或者对比学习的潜能,针对自监督学习,人们设计了更加精巧,和下游任务更相关的自监督任务用于模型训练;针对对比学习,不同的距离度量方法,不同的损失函数设计,不同的正负样本采样方法,是否使用已有的标签信息都是重要的研究方向。
本文针对对比学习,尤其是对比学习中利用更好的采样方式增强对比效果的一些工作进行简单介绍,希望能为大家带来一些微小的启发。
对比学习简介
什么是对比学习,简单来讲,对比学习就是通过数据之间的对比进行表示学习,目的就是为了获得更通用的知识,用于辅助下游任务。它与表示学习,度量学习相比,都是为了获得输入的更好表征,只是侧重点不同。
对比学习更侧重于学习方法,他的核心思想可以总结为在向量表征空间中将正样本(positive example)与锚点样本(anchor example)之间的距离拉近,将负样本(negative example)与锚点样本(anchor example)之间的距离拉远,通过这样的方式自然而言的就能够构建损失函数(triplet loss)进行模型训练。
因此重点就落到了如何定义正样本,负样本,为了避免对标签的要求,通用的做法是利用数据增强的方法(例如图像中的旋转,裁剪等)获得锚点样本的增强样本,作为正样本;而在同一批次的训练数据中,其他样本都可以认为是负样本。这样就实现了在不需要标签信息的条件下,利用数据本身的特点进行对比学习。以上就是对比学习的基本思想。下图是对比学习中的一个典型框架。
对比学习降低了对标签的依赖,让我们能够在不需要标签的条件下实现输入数据的准确表示。但从他的基本思想中也可以看出来,在样本的选择上仍然有些粗放。例如数据增强的样本都是正样本么?自然语言中有时候改掉一些词会直接导致整体语义的变化,通过替换词进行数据增强不一定能够保证正样本的真正性(true positive)。
负样本直接从同一个 batch 中进行选择,很直接的同一个 batch 中肯定包含属于同一类的样本,那么这种样本的真负性(true negative)该如何保证?为了解决这些问题,进一步挖掘对比学习的潜力,例如利用已有标签的方法实现更好的样本选择,当然也有很多其他的选择更好样本的方法被提出来。接下来,本文将对其中的一些代表性工作进行介绍。
监督对比学习
论文标题:
Supervised Contrastive Learning
收录会议:
NeurIPS 2020
论文链接:
https://arxiv.org/abs/2004.11362
代码链接:
https://github.com/google-research/google-research/tree/master/supcon
2.1 亮点
该工作 [1] 在对比学习中引入了标签信息,利用标签信息将对比学习的损失扩展为支持 multiple positive 和 multiple negative 的形式,以监督学习的设置实现了对比学习效果的提升。
作者通过梯度计算的角度说明了文中提出的 loss 可以更好地关注于 hard positives and negatives,从而获得更好的效果。
2.2 方法
首先是传统对比学习与本文提出的监督对比学习的比较,从图中可以看出,当小狗为对比锚点时,传统对比学习只能学习到单个小狗的特征,而同属于小狗但属于不同品种的小狗则会被作为负例,从而使得小狗这一类别的通用特征无法被整个模型学习到。
因此,如果将同属于小狗这一类别的样本也作为锚点的正例,那么模型不仅能够学习到单个小狗的通用特征(数据内特征),同时也能学习到同一类别的特征(类内特征),考虑到对比学习的基本思想,属于同一类的数据距离将会更近,类与类之间的差异将会更明显。为了实现这个效果,作者从损失函数上进行了相对修改,假设有 N 个