InstDisc

InstDisc

文章标题:Unsupervised Feature Learning via Non-Parametric Instance-level Discrimination citation

作者:Zhirong Wu, Yuanjun Xiong, Stella Yu, Dahua Lin

发表时间:(CVPR 2018)

这篇论文提出了个体判别任务以及memory bank

把每一个 instance都看成是一个类别,也就是每一张图片都看作是一个类别,目标是能学一种特征能把每一个图片都区分开来

Approach


InstDisc 网络

通过一个卷积神经网络把所有的图片都编码成一个特征,这些特征在最后的特征空间里能够尽可能的分开

训练这个卷积神经网络使用的是对比学习

需要有正样本和负样本,根据个体判别这个任务,正样本就是这个图片本身(可能经过一些数据增强),负样本就是数据集里所有其它的图片

把所有图片的特征全都存到memory bank 里,也就是一个字典(ImageNet数据集有128万的图片,memory bank里要存128万行,也就意味着每个特征的维度不能太高,否则存储代价太大了,本文用的是128维)

前向过程

  • 假如batch size是256,有256个图片进入到编码器中,通过一个 ResNet50,最后的特征维度是2048维,然后把它降维降到128维,这就是每个图片的特征大小
  • batch size 是 256 的话意味着有256个正样本,负样本从 memory bank 里随机地抽一些负样本出来。本文负样本个数4096
  • 用NCE loss 计算对比学习的目标函数
  • 更新网络后,把 mini batch里的数据样本所对应的那些特征,在 memory bank 里进行更新;不停更新,最后学到这个特征尽可能的有区分性

CPC

文章标题:Representation Learning with Contrastive Predictive Coding) citation

作者:Aaron van den Oord, Yazhe Li, Oriol Vinyals

发表时间:(2018)


CPC 网络

CPC不仅可以处理音频,还可以处理图片、文字以及在强化学习里使用

输入 $x$(一个持续的序列),$t$ 表示当前时刻,$t-i$ 表示过去的时刻,$t+i$ 表示未来的时刻

把之前时刻的输入通过编码器$g_{enc}$,这个编码器返回一些特征,然后把这些特征放进一个自回归的模型$g_{ar}$,每一步最后的输出,就会得到图中红色的方块$c_t$(context representation,代表上下文的一个特征表示),如果这个上下文的特征表示足够好(它真的包含了当前和之前所有的这些信息),那它应该可以做出一些合理的预测,所以就可以用$c_t$预测未来时刻的这个$z_{t +1}、z_{t + 2}$(未来时刻的特征输出)

一般常见的自回归模型,就是 RNN 或者 LSTM的模型

对比学习的体现

  • 正样本:未来的输入通过编码器以后得到的未来时刻的特征输出,这相当于做的预测是 query,而真正未来时刻的输出是由输入决定的,相对于预测来说是正样本;
  • 负样本:比较广泛,比如可以任意选取输入通过这个编码器得到输出,它都应该跟预测是不相似的。

CPC V2用了更大的模型、用了更大的图像块、做了更多方向上的预测任务,把batch norm 换成了 layer norm,而使用了更多的数据增强。

InvaSpread

文章标题:Unsupervised Embedding Learning via Invariant and Spreading Instance Feature citation

作者:Mang Ye, Xu Zhang, Pong C. Yuen, Shih-Fu Chang

发表时间:(CVPR 2019)

一个编码器的端到端对比学习

可以被理解成是 SimCLR 的一个前身,它没有使用额外的数据结构去存储大量的负样本,它的正负样本就是来自于同一个 mini bach,只用一个编码器进行端到端的学习。

为什么它没有取得 SimCLR 那么好的结果呢?字典必须足够大,也就是说在做对比学习的时候,负样本最好是足够多,而本文的的 batch size 就是256,也就意味着它的负样本只有500多个,再加上它还缺少像 SimCLR 那样那么强大的数据增广以及最后提出的那个 mlp projector。


InvaSpread 思想

同样的图片通过编码器以后,它的特征应该很类似,不同的图片,它的特征出来就应该不类似,这就是题目中说的invariant和 spreading

对于相似的图片、相似的物体,特征应该保持不变性,但是对于不相似的物体或者完全不沾边的物体,特征应该尽可能的分散开

Method


InvaSpread 网络

前向过程

  • 如果 batch size 是256,一共有256个图片,经过数据增强,又得到了256张图片

    对于 $x_1 $这张图片来说, $\hat x_1$就是它的正样本,它的负样本是所有剩下的这些图片(包括原始的图片以及经过数据增强后的图片),

    正样本是256,负样本是$(256 - 1) \times 2$,就是除去样本本身之外 mini-batch 剩下的所有样本以及它经过数据增强后的样本。

    和 InstDisc 的区别:InstDisc中,正样本虽然是256,负样本却是从一个 memory bank 里抽出来的,用的负样本是4096甚至还可以更大

  • 通过编码器以后,再过一层全连接层进行降维至128维;图中绿色的球在最后的特征空间上应该尽可能的接近,但是这个绿色的球跟别的颜色的特征应该尽可能的拉远

  • 所用的目标函数也是 NCE loss 的一个变体

CMC

文章标题:Contrastive Multiview Coding citation

作者:Yonglong Tian, Dilip Krishnan, Phillip Isola

发表时间:(2019)

多视角下的对比学习

CMC正样本:一个物体的很多个视角

工作目的就是去增大互信息(所有的视角之间的互信息)


CMC 四个视角正样本和负样本

选取的是 NYU RGBD 这个数据集(这个数据集有同时4个view,也就是有四个视角:原始的图像$V_1$、这个图像对应的深度信息$V_2$(每个物体离观察者到底有多远)、SwAV ace normal $V_3$、这个物体的分割图像$V_4$)

CMC是第一个或者说比较早的工作去做这种多视角的对比学习,它不仅证明了对比学习的灵活性,而且证明了这种多视角、多模态的这种可行性。

open AI的clip模型:有一个图片,还有一个描述这个图片的文本,那这个图像和文本就可以当成是一个正样本对,就可以拿来做多模态的对比学习

局限性:当处理不同的视角或者说不同的模态时候,可能需要不同的编码器,因为不同的输入可能长得很不一样,这就有可能会导致使用几个视角,有可能就得配几个编码器,在训练的时候这个计算代价就有点高

Transformer有可能能同时处理不同模态的数据

0%