对比学习——精选推荐

更新时间:2023-06-27 05:54:26 阅读: 评论:0

对⽐学习
基本原理
blurb
先从⽆监督表⽰学习讲起。表⽰学习的⽬标是为输⼊ x 学习⼀个表⽰ z,最好的情况就是知道 z 就能知道 x。这就引出了⽆监督表⽰学习的第⼀种做法:⽣成式⾃监督学习。⽐如还原句⼦中被mask的字,或者还原图像中被mask的像素。
傻瓜的英文但这种⽅式的前提需要假设被mask的元素是相互独⽴的,不符合真实情况。这句话是什么意思呢,下⾯会⽤举例1来说明⼀下。
另⼀⽅⾯,研究者们也质疑如此细粒度的还原是否真正必要。这句话的意思应该是是否需要模型有能够看到上下⽂就能对某个字精确预测的能⼒,才算模型真正理解了这些词,这是否有必要。(我认为还是有必要的,不然你还有什么更好的⽅法来学习词的表⽰吗?或者是能够提出⼀种⽤在MLM任务上的对⽐学习)以举例2再做进⼀步解释。
小学五年级英语培训班
举例1
2012年12月六级听力答案⽐如预训练时输⼊:“⾃然[MASK][MASK]处理”,⽬标函数为p(语|⾃然处理)·p(⾔|⾃然处理),实际实现是⽤交叉熵做的,最⼩化交叉熵loss,即让模型可以预测出被MASK位置的两个字是“语⾔”,等价于最⼤
化上⾯提到的概率p。
但这没有考虑“语“、”⾔”这两个字之间的关系,考虑上下⽂信息的化,实际应该是p(语|⾃然⾔处理)·p(⾔|⾃然语处理),但这没法实现,因为你同时对“语⾔”做了MASK,⼜要在预测“语”的时候,可以看见“⾔”,⼜或是在预测“⾔”的时,可以看见“语”,这是做不到的。
⽽只考虑上⽂信息的话,⽬标函数为p(语|⾃然)·p(⾔|⾃然语),即先预测出“语”,再预测“⾔”。这样确实可以解决相互独⽴的问题,但是却没法利⽤下⽂信息。
因此XLNET提出了⼀种既能解决相互独⽴问题,⼜利⽤了上下⽂信息的⽅法,这⾥就不展开讲了。
举例2
人事部二级口译
假如有⼈让你凭空画⼀张⼀美元,你可能只能画成这样:
⽽如果给你⼀张美元照着临摹,可能还画的好看点,⽐如这样:
tp是什么所以说我们记住的事物特征,不⼀定是像素级别的,⽽是更⾼维度的。更具体来说,⽐如⽤编码去做分类任务,我们不需要知道每个数据的细节,只要抓住每个类别的主要特征,⾃然就能把他们分开了:
不过感觉这个例⼦似乎没解释上⾯提到的那句话,那句话说的是MLM任务,⽽例⼦是分类任务。
最⼤化互信息
对⽐学习到底在⼲什么rapide
前⽂有述,对⽐学习在做特征表⽰相似性计算时,要先对表⽰向量做L2正则,之后再做点积计算,或者直接采⽤Cosine相似性,为什么要这么做呢?现在很多研究表明,把特征表⽰ g(f(x)) 映射到单位超球⾯上,有很多好处。这⾥有两个关键,⼀个是单位长度,⼀个是超球⾯。⾸先,相⽐带有向量长度信息的点积,在去掉长度信息后的单位长度向量 g(f(x)) / || g(f(x)) || 2 上操作,能增加深度学习模型的训练稳定性。另外,当表⽰向量 g(f(x)) 被映射到超球⾯上,如果模型的表⽰能⼒⾜够好,能够把相似的例⼦(⽐如带有相同类标号的数据)在超球⾯上聚集到较近区域,那么很容易使⽤线性分类器把某类和其他类区分开(参考上图)。在对⽐学习模型⾥,对学习到的表⽰向量
g(f(x)) 进⾏L2正则,然后采⽤Cosine相似性,就等价于将表⽰向量 g(f(x)) 投影到了单位超球⾯上进⾏相互⽐较。很多对⽐学习模型相关实验也证明了:对表⽰向量进⾏L2正则能提升模型效果。这是为何⼀般要对表⽰向量进⾏L2正则操作的原因。
bbk
那么,好的对⽐学习系统,应该具备怎么的潜在能⼒呢?论⽂“Understanding Contrastive Reprentation Learning through Alignment and Uniformity on the Hypersphere”对这个问题进⾏了探
讨。它提出了好的对⽐学习系统应该具备两个属性:Alignment 和Uniformity(参考上图)。所谓“Alignment”,指的是相似的例⼦,也就是正例,映射到单位超球⾯后,应该有接近的特征,也即是说,在超球⾯上距离⽐较近;所谓“Uniformity”,指的是系统应该倾向在特征⾥保留尽可能多的信息,这等价于使得映射到单位超球⾯的特征,尽可能均匀地分布在球⾯上,分布得越均匀,意味着保留得信息越充分。乍⼀看不好理解“分布均匀和保留信息”两者之间得关联,其实道理很简单:分布均匀意味着两两有差异,也意味着各⾃保有独有信息,这代表信息保留充分。
Uniformity特性的极端反例,是所有数据映射到单位超球⾯同⼀个点上,这极度违背了Uniformity原则,因为这代表所有数据的信息都被丢掉了,体现为数据极度不均匀得分布到了超球⾯得同⼀个点上。也就是说,所有数据经过特征表⽰映射过 g(f(x)) 后,都收敛到了同⼀个常数解,⼀般将这种异常情况称为模型塌陷(Collap)。如果对⽐学习的损失函数定义不好,⾮常容易出现模型塌陷的情形(参考上图)。
有声电子书在这些背景信息下,我们再重新审视类似SimCLR结构的对⽐学习模型,看看它是在⼲什么。可以看到,对⽐学习模型结构⾥的上下两个分枝,⾸先会将正例对 <xi, xi+> 或者 <xi, xi->,通过两次⾮线性映射 g(f(x)),将训练数据投影到单位超球⾯上。然后通过体现优化⽬标的InfoNCE损失函数,来调整这些映射到单位超球⾯上的点之间的拓扑关系,希望能将正例在超球⾯上距离拉近,负例在超球⾯上,相互之间推远。那么InfoNCE⼜是怎么达成这⼀点的呢?
从上⾯列出的InfoNCE公式可以看出,分⼦ S(zi, zi+) 部分体现出“Alignment”属性,它⿎励正例在单位超球⾯的距离越近越好;⽽分母⾥的 S(zi, zj) 负例,则体现了“Uniformity”属性,它⿎励任意两对负例,在单位超球⾯上,两两距离越远越好,这种实例两两之间的推⼒,会尽量让特征均匀得分布在单位超球⾯上,保留尽可能多的有⽤信息。InfoNCE其实是在Alignment和Uniformity之间寻找折中点,
因为如果只有Alignment特性,很明显,模型会快速塌陷到常数解。可以说,所有在损失函数中采⽤负例的对⽐学习⽅法,都是靠负例的Uniformity特性,来防⽌模型塌陷的,这包括SimCLR系列及Moco系列等很多典型对⽐学习模型。
上图更形象地说明了这⼀点,只不过没有将数据画在单位超球⾯上,如果将上图右侧部分,想象成在单位超球⾯上的正例相互吸引,负例互斥,就是InfoNCE思想的形象表达。
如果你⾜够细⼼,会发现InfoNCE损失函数⾥吗,有个神秘的温度超参 T。那么,这个温度超参T有什
么作⽤呢?这其实是个好问题。⽬前很多实验表明,对⽐学习模型要想效果⽐较好,温度超参 T 要设置⼀个⽐较⼩的值,⼀般设置为0.1或者0.2。问题是:将这个超参设⼤或设⼩,它是如何影响模型优化过程的呢?⽬前的研究表明,InfoNCE是个能感知负例难度的损失函数,⽽之所以能做到这点,主要依赖超参。
什么是有难度的负例?什么是容易的负例呢?我们知道,对⽐学习⾥,对于某个数据 xi,除了它的唯⼀正例 xi+ 外,所有其他数据都是负例。但是,这些负例,有些和 xi ⽐较像,有些则差异⽐较⼤,⽐如假设 xi 是张关于狗的图⽚,那么另外⼀张关于狗的图⽚,或者⼀张狼的图⽚,就是有难度的负例,⽽如果是⼀张关于⼈的或者树的图⽚,则⽐较好的和 xi 区分开,是容易例⼦。如果经过 g(f(x)) 将数据映射到单位超球⾯后,根据Alignment原则,⼀般来说,⽐较像的、有难度的负例在超球⾯上距离 xi ⽐较近,⽽⽐较容易区分的负例,则在超球⾯上距离 xi ⽐较远。所以说,对于例⼦ xi 来说,在超球⾯上距离 xi 越近,则这个负例越难和 xi 区分,距离 xi 越远,则这个负例越容易和
xi 区分。
总体⽽⾔,温度参数 T 起到如下作⽤:温度参数会将模型更新到的重点,聚焦到有难度的负例,并对它们做相应的惩罚,难度越⼤,也即是与 xi 距离越近,则分配到的惩罚越多。所谓惩罚,就是在模型优化过程中,将这些负例从 xi ⾝边推开,是⼀种斥⼒。也就是说,距离 xi
越近的负例,温度超参会赋予更多的排斥⼒,将它从 xi 推远。⽽如果温度超参 T 设置得越⼩,则InfoNCE分配惩罚项得范围越窄,更聚焦在距离 xi ⽐较近的较⼩范围内的负例⾥。同时,这些被覆盖到的负例,因为数量少了,所以,每个负例,会承担更⼤的斥⼒(参考上图左边⼦图)。极端情况下,假设温度系数趋近于0,那么InfoNCE基本退化为Triplet,也就是说,有效负例只会聚焦在距离 xi 最近的⼀到两个最难的实例。从上述分析,可以看出:温度超参越⼩,更倾向把超球⾯
father day
想法:对⽐学习中,可能存在两张都是狗的图⽚,却被当成了负例,即存在噪⾳,因此可以把⽂章、⽂章的标签作为Aug1、Aug2,并从数据集中挑选标签不⼀样的数据作为负例,这样就可以去除噪⾳数据。最后通过对⽐学习训练得到的模型,会学到⽂章和⽂章的标签之间的关系,即对标签来说,融合了很多信息,这些信息包括所有该标签下的⽂章,也就是说通过对⽐学习学到的label embedding信息更全,也和当前数据集关联度更⾼。之后可以将这个学到的label embedding再⽤于和⽂章表⽰进⾏attention交互,⾛label attention这⼀套⽅法。
基于负例的对⽐学习:Batch之外
在前⽂,我们介绍了典型的基于负例的对⽐学习模型SimCLR,它将Batch内数据作为负例。很多实验证明了:在基于负例的对⽐学习中,负例数量越多,对⽐学习模型效果越好。⽽算⼒受限原因,我们⼜不可能⽆限⽅法Batch Size,那么很⾃然的⼀个想法就是:我们选择负例的时候,不再局限于在Batch内寻找负例,⽽是在整个⽆标注训练数据集合内,随机选择任意⼤⼩的数据,来作为模型训练的负例。这个想法⽐较符合直觉,看着也⽐较简单,但是实际做起来并不容易。
这部分内容,我们选择Moco V2,来作为在整个训练集合内选择负例的典型做法。其实这个做法主要是Moco 提出的,Moco V2吸收了SimCLR的Projector结构,以及更具难度的图像增强⽅法之后,针对Moco 的改进版本,但是效果⽐Moco有明显的提升,所以我们以Moco V2来讲解。

本文发布于:2023-06-27 05:54:26,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/159073.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   学习   负例   超球   数据   信息   单位   训练
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图