诸神黄昏时代的对比学习
继续创作,加快成长!这是我参加「日新方案 10 月更文应战」的第11天,点击查看活动详情
本文3404字,阅读大约需求7分钟
其实事实是这样的,教师这两天突然安排了一个比照学习的使命,其实我之前根本就没有触摸过比照学习。所以只好现学现卖,然后顺便跟咱们也分享一下我现学现卖的进程。提前阐明我是搞文本的,并不是搞图画的,所以这个真的是现学现卖。
由于比照学习开展至今东西,相关作业非常的多,仅靠一篇文章是讲不完的,所以我打算依照开展进程分红五个部分来写。
-
在比照学习双雄出来的一些作业。
-
比照学习双雄大放异彩的阶段。
-
比照学习翻开新思路的作业。
-
比照学习不再需求负样本的作业。
-
比照学习在NLP范畴的迁移。(与我现在的作业方向相关)
假如有问题,欢迎咱们批评指正。
这部分首要讲的是MoCo和simCLR出来之前的一些作业,那个时候没有实现“大一统”。所以使命比较限制,也比较杂乱。咱们百花齐放,作业层出不穷五光十色。
先来说一下大前提
预练习+微调的模式在图画范畴已经运用很久了,可是在文本范畴算是新起之秀。在之前的很长一段时刻里,由于文本里没有像ImageNet那样大规模的带有标示的数据集,因而预练习模型这个事情迟迟没有进展。直到GPT等预练习模型的呈现打破了僵局,证明咱们运用无标签的数据也能够进行预练习模型的探索。所以GPT这个作业算是NLP预练习模型开展的里程碑之作。
之后图画看到文本范畴的效果,图画也开始尝试搞无标示数据的练习了,就比方说今天要讲的关于学习便是运用无标示数据进行的。今天首要要讲4篇论文。由于我是现学现卖嘛,其实我也是看别人讲的。我是结合了亚马逊的朱教师的比照学习视频以及一些文章,然后自己又大略看了一下论文的原文。
比照学习的要点其实首要便是找出一种比照方法,怎样确认正负样本,剩下的都迥然不同。
InstDisc
论文地址:[1805.01978] Unsupervised Feature Learning via Non-Parametric Instance-level Discrimination (arxiv.org)
先来看一下这张图。这张图作者说咱们通过图片上面这个豹子进行学习。得出结果与它类似的图片是左边这一些,咱们能够看到左边都是什么花豹、猎豹、金钱豹。而右边是和它不类似的。得出这个结果的原因是什么呢?是由于他们的标签类似吗?不是的,是由于图片自身类似。由于图片自身类似而造成的分类结果的差异。所以由这个事情作者就提出了一个个别判别的使命来进行无监督学习。
作者是怎样设定这个个别判别使命的呢?
运用ImageNet来操作,把一张张图片丢进一个CNN里,将其转化为一个2048维的向量表明,这是一个Image2Vec的进程。2048维太大了,然后对它进行降维降到128维。然后做一个L2L2 normalization之后,再得到一个128维的向量。最终把这个向量丢进一个smart分类器里,每一张图片咱们都会学到一个对应的向量,最终把这些学到的向量拼接起来做成一个字典,称之为memory bank。这个字典长度便是ImageNet的图片数量。其间每一个向量的长度便是128维。这便是为什么咱们说2048维的向量太大了,ImageNet有上百万张图片,2048*100w这样一个矩阵,咱们需求很大的存储空间,核算代价也比较大。所以咱们不能让这个维度过长,所以这儿作者选择的是128维。
作者的这一番操作便是给每一个图片都学到一个对应的特殊的向量。每张图片学到的向量都是不同的,这便是把一张图片看作一个类。那么在这个使命中你要图片的多样性足够多。字典足够大,你才干取得比较好的效果。因而作者选的是ImageNet这样数量庞大的数据集。
那比照学习中作者的正负样本是怎样确认的呢?
在这个试验中作者设定一个mini-batch的size是256。这整个batch中的样本便是正样本。而负样本则是从字典中随机抽取4096个。
有了正样本也有了负样本,就能够进行练习了。文中运用的是NCE loss作为比照学习的目标函数。在练习进程中不断的去更新这个memory bank的字典,学到对应的特征。
InvaSpread
论文地址:[1904.03436] Unsupervised Embedding Learning via Invariant and Spreading Instance Feature (arxiv.org)
这个作业能够视为simCLR的前身,尽管看作者名好像是叶芒大佬的,可是这个作业并不出名,由于这个作业比较穷。但也正是由于穷,算力跟不上,所以这个作业独出心裁,找了一种新的选负样本的放法,翻开了比照学习的新思路。
在讲思路之前,咱们先说一下这个作业的正样本和负样本是怎样规划的。
随机选取一组图片,数量为N作为一个mini batch。然后对其增广得到另一个数量为N的batch。这个图画以及它对应的增强之后的图画作为正样本。剩下的图画作为负样本。在这个试验中增样本数量是2,负样本数量是2N-2。
比方下面这个比如,假设现在咱们一个mini batch只要三张图片。咱们对这三张图片进行数据增广,得到另外三张图片。像在x1x_1以及数据增广之后的x1\hat{x_1}作为正样本。其余的x2x3x2x3x_2 \quad x_3 \quad \hat{x_2} \quad \hat{x_3}都是负样本。
这个作业也是做了一个个别判别的使命,看一下图一,作者的想法很清楚,作者说:咱们的基本想法是同一图片在不同数据增强下的特征应该是不变的,而不同图画实例的特征应该是分隔的。这也对应着标题的invariant和spread,即类似图片特征保持不变性,不类似的图片散布尽量分隔。
然后看一下它的网络是怎样练习的。
咱们前面说到。一组图片要对它进行增强,得到数量相等的图片。在这儿作者是规划了一个孪生网络,把原图放入一个CNN,把增广之后的图片放入另一个CNN。这两个CNN之间是参数共享的。然后这个尽管也是要进行降维,将为之后也做一遍L2L2 normalization,练习之后,某一张图片及其对应的增强之后的图片学到的特征应该是类似的,而且他们在embedding中的散布也应该是挨近的。
留意一下,假如咱们去看原文的话,在这儿或许会遇到一个坑。由于我看的先是解说视频,那个解说视频的教师说的有一点口误,然后我我想验证一下是不是口误,所以我就去看了一下论文原文。可是作者这儿有写的让我很迷惑,作者说咱们把原图丢进孪生网络的第一个网络中。然后把增强之后的图片丢进孪生网络的第二个网络中。可是他在这儿写了一个“ Note That ”,然后作者说第一个网络里也会有增广之后的图片。这就会让我觉得他是不是把原图进行增广之后,第一张图片中也要放这些数据。后来我跟同学评论了一下。同学仅仅说不是的,作者的意思是假如你数据集不够的话。你或许要对数据集进行增广之后再进行比照学习的试验。也便是说我先将数据集增广,然后再从中抽出一个mini batch。在对mini batch中的图片进行增广,然后再把这两组图片丢进孪生网络中。
CPC
论文地址:[1807.03748] Representation Learning with Contrastive Predictive Coding (arxiv.org)
作者在这个文章中一上来就把深度学习归纳为判别式和生成式两种使命。咱们前面说到的两篇都是判别式使命,而作者在这个文章里做的是一个生成式的使命。而且它做到了一个多域通用。便是说作者说咱们的模型能够用在图画、文本、语音以及强化学习之中。
作者以为当你的模型足够好的时候,你学到的这些特征应该是足以表明你前面一切输入信息的。然后这儿取最终一个时刻步的输出模块用来预测你之后的信息。
在这儿他正负样本是怎样设置的呢?
你之后时刻步的输入,它也会通过这个编码器取得不同的特征表明紫色方块。这些特征表明就作为正样本。 而你胡乱输入一些其他的东西他们最终表明出来的紫色方块,就作为副样本。
比方你说:
t时刻之前的输入是“君不见,黄河之水天上来。”,那你正样本的输入应该是“奔流到海不复回。”。负样本的输入能够是“我家有个小猫咪”。也能够是其他的语句。
CMC
论文地址:[1906.05849] Contrastive Multiview Coding (arxiv.org)
代码地址:HobbitLong/CMC: [ECCV 2020] “Contrastive Multiview Coding”, also contains implementations for MoCo and InstDis (github.com)
这篇文章能够看到,也能够算是谷歌的一个作业。这篇文章的视点清晰,思路特别精明,也是值得咱们学习。
作者开篇就说人调查东西是多视角的,不同的视角咱们调查到的东西都是带有噪声的,而且还或许存在信息不完整性。可是不论视角怎样改变,最重要的信息是一切视角之间共享。比方一只狗,咱们不管是看到了这只狗,仍是听到了狗叫声,仍是看到了狗头,看到了狗耳朵,咱们都能知道这是一只狗。
因而作者提出咱们要学习一个具有视角不变性的特征,也便是要增大一切视角之间的互信息。学习一个特征能够捉住一切视角下的关键因素。
在这儿作者运用的是一个比较特殊的数据集——NYU RGBD。这个数据集关于每1个图片都有4个不同的视角。
从上图咱们能够看出这4幅图都有什么:
- 第一张图是图画的原图。
- 第二张图是一个深度信息图。他表明的是这个物体离你的远近。你能够幻想成一个热图,便是离你越远的色彩越怎样样,离你越近的色彩越怎样样。
- 第三张图是一个表面法线图。
- 第四张图是一个图画切割图。
在这个试验里它规划的正样本是不同视角的图片,而负样本便是其他的图片。
这个作业向咱们展示了比照学习的灵活性,可是这个作业存在一个弊端,便是在不同的视角下。它的图片差异很大。咱们需求运用不同的编码器。这个作业也促进了另一个作业的开展,便是clip,被称为打通了文本和图画范畴之间的比照学习,它是进行了一个多模态的研讨。Clip在图画和文本两方面也是运用了不同的编码器。