真正的利器:对比学习SimCSE

最近看了一篇最新的Sentence Embedding论文,今年4月份的,丹琦大神发表的《Simple Contrastive Learning of Sentence Embeddings》, 简称就是SimCSE,直译过来就是 基于简单对比学习句子嵌入。和没有对比学习的Bert相比,个人认为最大的区别就是:

  • 考虑到了拉大当前样本和不相关样本的距离,uniformity。 而原始的Bert仅仅考虑了相似样本越相似越好,也就是Alignment。

整篇文章的关键词有两个,simple 和 Contrastive Learning。接下里,我们分别来看下,如何简单,又如何对比学习。

Contrastive Leaning

释义

对比学习,顾名思义,就是两个事物之间作比对,山羊和绵羊之间相似度高。 山羊和飞机之间相似度低。而其思想就是,让相似度更加拉近,不相似的之间距离更加远。有点类似于聚类的思想,类的内部距离越小越好,类的外部距离越大越好。其损失函数的设计也吻合了上面思想:

损失函数

假设我们数据集中有两个相似样本,xi+xi, 那么他们的输出为hi+hi, 他们应该是相似的,越小越好,距离越近,即分子越小越好。

而分母则是,xi和数据集中其他的样本的距离,不相识的样本,越大越好,即分母越大越好。
总起来说,就是这个损失越小,越能达到对比学习的思想。

评价指标

引入两个指标分别刻画对比学习的两个目标:

  • Alignment: 代表相似样本之间距离更近。
    其公式为:


    公式

    所有的样本和自己的相似样本做差平方,越小越相似。在下面图上更直观:


    image.png

    假设x和y是相似样本,那么输出的向量f(x)和f(y) 越近越好,最好到了一个点上。
  • uniformity
    uniformity是从另一个角度来考虑问题,不相关的样本越远越好。
    其公式为:


    公式

    这个公司可以近似看做熵, 假设x和y是不相似样本,那么输出的向量f(x)和f(y) 越远,uniformity越小,最好不相关都滚远点。
    下面图上更直观:

每一家都住在这个图上,家庭内部都住着相似样本,家之外都不相似,彼此离得越远越好,也许最理想的境界就是 每一家彼此都离的差不多远,比较平均的住在这个球上,这样整体的平均距离才能达到最大,这也就是熵的含义。 因为均匀分布信息熵最高,分布越均匀则保留的信息越多.

SimCSE

原理和损失函数都有了,接下来是如何构造正负例了。 在这文章中,分为两种情况,分别取构建自己的正负例。

Unsupervised SimCSE

image.png

实线箭头代表正例,虚线代表负例。

  • 正例构造: 给定输入,用Bert Encoder两次得到的两个向量和作为正例对。
    由于Bert本身就有随机DropOut 功能,所以同一句话 走两次Bert,得到的两个向量不同,但是是相似的。因为原样本和生成的正样本的语义是完全一致的,只是生成的embedding不同而已,可以看做Bert Encoder过程中,对数据做了一个小增强。
  • 负例构造:使用in-batch negatives的方式,即随机采样一个batch中另一个输入作为的负例。说白了就是batch中其他的样本就是负例。
  • 损失如下:


    image.png

而且这种dropoutmask 比数据增强也强很多,文章中实验指标如下:


image.png

为什么会强这么多呢?这是个好问题

可能是,增强嘛,无非对输入的原始词做改变,无论是删除,替换,回译等等吧,毕竟是源头上,离最后的输出太远了。而 Dropout基本上是最后的阶段,干掉一些神经元,可能效果更直接一些。

Supervised SimCSE

image.png

正例就是人工标注的相关的,负例就是batch中其他的负样本。
损失函数:


image.png

如下图:


image.png

Two dogs are running. 和 There are animals outdoors. 是人工标注的相关的两句话,所以是正例,用实线连接的。
其他的都是负例,用虚线连接的。同一个batch的中的。

总结

整篇论文,我觉的两个亮点:
1.考虑到了拉大当前样本和不相关样本的距离,uniformity。 而原始的Bert仅仅考虑了相似样本越相似越好,不会考虑不同的样本间的距离增大,也就是Alignment。

  1. Dropout在Encoder内部干预,要比源头增强更好,更直接。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 机器学习基础总结 一、其它 1. 机器学习的编程流程 模型的训练过程a. 数据的加载b. 数据的清洗c. 数据的分...
    潇萧之炎阅读 347评论 0 0
  • 机器学习是做NLP和计算机视觉这类应用算法的基础,虽然现在深度学习模型大行其道,但是懂一些传统算法的原理和它们之间...
    在河之简阅读 20,475评论 4 65
  • 以西瓜书为主线,以其他书籍作为参考进行补充,例如《统计学习方法》,《PRML》等 第一章 绪论 1.2 基本术语 ...
    danielAck阅读 4,484评论 0 6
  • 1 为什么要对特征做归一化 特征归一化是将所有特征都统一到一个大致相同的数值区间内,通常为[0,1]。常用的特征归...
    顾子豪阅读 6,301评论 2 22
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,030评论 0 4