0%

zhj 【NIPS 2020】 What Makes Good Views for Contrastive Learning

1 Abstract 概要

用数据的多个视图来做表示学习是当前自监督学习的热点。尽管这方面的应用很成功,但是很少有人研究怎么选择好的视图来做表示学习。本文运用理论和实证分析来更好地理解视图选择的重要性,得出的结论,在给定下游任务时,视图之间的互信息恰好都仅与下游任务有关,这时候下游任务能取得最好的结果。除此之外,本文还设计了一种半监督的方法,用来学习如何生成最好的视图。

2 什么是视图(view)?

视图的例子

从不同的角度看同样的事物,会有不同的视图。在自监督学习里面,视图可以是同一个物体不同的角度的图片;视频中的图片、声音和字幕;图片的不同通道;不同的数据增强方式获得不同的视图;生理信号的时频图;

视图之间的共享信息(mutual information, MI)

理解为视图之间共有的信息。

举例:

例1:下面三个视图中的数字3,是他们共享的信息。

image-20210113110206216image-20210113110239948image-20210113110331718

例2:下面两个视图中的背景,是他们共享的信息。

image-20210113110206216image-20210113111629299

在表示学习的应用中,一般有两个阶段:

1.表示学习阶段:使用不同的视图,进行自监督的表示学习,训练一个编码器$f$

2.下游任务:固定学习好的网络$f$参数,在$f$后面加一个线性层,参数为$w$,使用少量的有标签数据训练$w$。

由于表示学习阶段学到了数据中的语义信息,下游任务只需要少量的标签就可以取得较好的效果。

3 怎么样的视图是最好的视图?

用什么样的视图来做表示学习,才能使得下游任务取得最好的效果呢?

在本文的定义中,最好的视图是与下游任务息息相关的。在给定下游任务之后,视图之间的互信息恰好都仅与下游任务有关,这时候下游任务能取得最好的结果。例如,在例1中,视图之间共享的信息是数字,如果下游任务是数字识别,它们就是好的视图;如果下游任务是背景识别,那就不是好的视图。例2则相反。

用$I(a,b)$表示a和b的互信息,x表示输入,y表示标签,$v_1,v_2$是x的两个视图,则最好的视图应该是:

也就是$v_1,v_2$这两个视图,都包含了对下游任务有帮助的所有信息。

以下图有助于说明:

横轴是视图之间的互信息,纵轴是下游任务的效果。绿色是与下游任务有关的信息,粉红色是与下游任务无关的信息,视图重叠的部分是视图的共享信息。当视图之间共享的信息仅包含与下游任务有关的信息,此时下游任务的效果是最好的。

image-20210113115134473

最好的视图,就是视图之间的互信息恰好处于一个最佳点(Sweet Spot),视图之间的共享信息及不漏掉对下游任务用贡献的信息,也不包含对下游任务没有的信息。

下图b)分为3段:

  • 丢失信息:$I\left(\mathbf{v}{\mathbf{1}} ; \mathbf{v}{\mathbf{2}}\right)<I(\mathbf{x} ; \mathbf{y})$,missing info是丢失的有用信息,视图之间的互信息没有包含太多对下游任务有用的信息,所以效果不好;
  • 最佳点(Sweet Spot):$I\left(\mathbf{v}{\mathbf{1}} ; \mathbf{y}\right)=I\left(\mathbf{v}{\mathbf{2}} ; \mathbf{y}\right)=I\left(\mathbf{v}{\mathbf{1}} ; \mathbf{v}{\mathbf{2}}\right)=I(\mathbf{x} ; \mathbf{y})$,视图之间的共享信息就是全部对下游任务有用的信息。
  • 过多噪声:$I\left(\mathbf{v}{\mathbf{1}} ; \mathbf{v}{\mathbf{2}}\right)$,视图之间的互信息包含了太多对下游任务没用的信息,下游任务的泛化性能差。(可以参考)

所以,<下游任务性能-$I(v_1,v_2)$> 的图像普遍是一个倒立的U形(如下图右):

image-20210113120023277

本文的多个实验说明,图 <下游任务性能-$I(v_1,v_2)$> 普遍存在倒U型的图:

image-20210113115838448

image-20210113115903284

4 学习最好的视图

以往的视图都是人工设计的视图,这里提出了一个通用的生成最佳视图的半监督方法。

生成最好的视图:在将视图应用到表示学习之前,先设计另外一个神经网络(生成器g),用g来生成最好的视图。

流程是:

image-20210113122756215

4.1 无监督的生成视图方式:最小化$I\left(\mathbf{v}{\mathbf{1}} ; \mathbf{v}{\mathbf{2}}\right)$

定义生成器g,g是一个卷积核为1*1的卷积层加ReLU激活,$\hat{X}=g(X)$, 对于数据$X$,可以将$X$按通道切分为$\left{X{1}, X{2: 3}\right}$。

定义$\hat{X}{1}$,$\hat{X}{2: 3}$分别为两个视图;另外有$I{\mathrm{NCE}}\left(\hat{X}{1} ; \hat{X}{2: 3}\right)$是$I\left(\hat{X}{1} ; \hat{X}_{2: 3}\right)$的估计(文章中有定义)。

为了训练g,使得$I{\mathrm{NCE}}\left(\hat{X}{1} ; \hat{X}_{2: 3}\right)$最小,使用对抗训练的思想。

引如两个编码器$f1,f_2$,训练$f_1,f_2$最大化$I{\mathrm{NCE}}\left(\hat{X}{1} ; \hat{X}{2: 3}\right)$,与 GAN中的判别器相似。

同时,训练g,最小化$I{\mathrm{NCE}}\left(\hat{X}{1} ; \hat{X}_{2: 3}\right)$,形式化的目标函数为:

image-20210113131115473

结果如下图(a)所示:

可以看到,这么训练没有给出一个最佳的视图。虽然g生成的两个视图的互信息在减少,但是也丢失了许多对下游任务有用的信息。image-20210113125930802

半监督的生成视图方式:找到对下游任务有用的信息

假设我们有少量的下游任务标签y,引入两个分类器C1和C2,g不仅要最小化$I{\mathrm{NCE}}\left(\hat{X}{1} ; \hat{X}_{2: 3}\right)$,也要保证C1和C2分类正确。这样,就可以保留对下游任务有用的信息。

image-20210113131204656

形式化的损失函数:

5 总结一些启发

  1. 表示学习的视图之间的互信息仅包含对下游任务有用的信息,有助于提高下游任务的泛化性。[59,]
  2. 在表示学习中,适当引入一下标签来提高模型的泛化性。[75, 29, 34, 69].
  3. 使用标签生成最佳视图用于表示学习,提高模型的泛化性。(本文)
  4. 本文的寻找最佳视图的方式,同样适用于时序数据。