丹琦女神新作:对比学习,简单到只需要Dropout两下

文 | 花小花Posy

上周把 《对比学习有多火?文本聚类都被刷爆了...》分享到卖萌屋的群里后,遭到了群友们一波嫌弃安利。

小伙伴们表示,插入替换的数据增强方式已经Out了,SimCSE才是现在的靓仔。

snowfloating说:看完Danqi Chen组里的SimCSE,再看这篇感觉就没什么惊喜了。

苏神: 直接用dropout,居然work了。真见鬼了......

奥多多奥多多:这篇有说法的。

抱着一颗好奇的心,想看看这篇SimCSE到底有什么说法,又哪里见鬼了?小花认认真真拜读了原文,今天跟大家分享分享SimCSE用的什么神奇招数。

看完你可能不信,但它真的很神奇!

SimCSE的全称是 Simple Contrastive Learning of Sentence EmbeddingsS代表Simple。文中的方法完全对得起题目,它是真的简单!简单在哪儿呢?

  1. 它简单地用dropout替换了传统的数据增强方法,将同一个输入dropout两次作为对比学习的正例,而且效果甚好。

  2. 它简单地将NLI的数据用于监督对比学习,效果也甚好。

这么简单的方法,真的work!?WHY?

下面我们一起领略一下这篇文章的风骚吧!

论文题目:
SimCSE: Simple Contrastive Learning of Sentence Embeddings

论文链接:
https://arxiv.org/pdf/2104.08821.pdf

SimCSE开篇讨论的问题是:对比学习为何work?写上一篇文的时候,我就在想对比学习为什么work呢?今天看到本文给出了很好的解释。

对比学习为何work?

原来 ICML2020 专门有一篇文章[1]研究了对比学习为什么work。[1]中指出,对比表示学习有用,主要是因为它优化了两个目标:

  1. 正例之间表示保持较近距离

  2. 随机样例的表示应分散在超球面上。

并提出这两个目标分别可以用指标alignmentuniformity来衡量。

下图可以直观理解这两个目标:

alignment计算正例对之间的向量距离的期望

越相似的样例之间的alignment程度越高。因为alignment使用距离来衡量,所以距离越小,表示alignment的程度越高。

uniformity评估所有数据的向量均匀分布的程度,越均匀,保留的信息越多

可以想象任意从表示空间中采样两个数据, 希望他们的距离比较远。他们的距离越远,证明空间分布越uniform。所以uniformity的值也是越低越好。

SimCSE也采用这两个指标来衡量生成的句子向量,并证明了文本的语义空间也满足:alignment值越低且uniformity值越低,向量表示的质量越高,在STS任务上的Spearman相关系数越高。

SimCSE

SimCSE有两个变体:Unsupervised SimCSESupervised SimCSE,主要不同在于对比学习的正负例的构造。下面详细介绍下他们的构造方式。

无监督SimCSE

Unsupervised SimCSE 引入dropout给输入加噪声,假设加噪后的输入仍与原始输入在语义空间距离相近。其正负例的构造方式如下:

正例:给定输入,用预训练语言模型编码两次得到的两个向量作为正例对。

负例:使用in-batch negatives的方式,即随机采样一个batch中另一个输入作为的负例。

训练目标函数:

下图展示了Unsupervised SimCSE的样例:

如何生成dropout mask?

对于Unsupervised SimCSE,核心在于如何生成dropout mask。刚开始读完一遍的时候,惊叹原来dropout可以这么用,效果提升还挺大。后来细想,仍旧有些困惑两次dropout mask的生成过程是怎样的呢?仔细读了下,原文说:

In other words, we pass the same input sentence to the pre-trained encoder twice and obtain two embeddings as “positive pairs”, by applying independently sampled dropout masks。

还是不太清楚。后来看了作者在GitHub的issue里面的回复才懂了。因为BERT内部每次dropout都随机会生成一个不同的dropout mask。所以SimCSL不需要改变原始BERT,只需要将同一个句子喂给模型两次,得到的两个向量就是应用两次不同dropout mask的结果。然后将两个向量作为正例对。(真的simple)

有监督SimCSE

本文还提出Supervised SimCSE,利用标注数据来构造对比学习的正负例子。为探究哪种标注数据更有利于句子向量的学习,文中在多种数据集上做了实验,最后发现NLI数据最有利于学习句子表示。下面以NLI数据为例介绍Supervised SimCSE的流程。

Supervised SimCSE 引入了NLI任务来监督对比学习过程。该模型假设如果两个句子存在蕴含关系,那么它们之间的句子向量距离应该较近;如果两个句子存在矛盾关系,那么它们的距离应该较远。因此NLI中的蕴含句对和矛盾句对分别对应对比学习中的正例对和负例对。所以在Supervised SimCSE中,正负例的构造方式如下:

正例:NLI中entailment关系样例对。负例:a) in-batch negatives b)NLI中关系为contradiction的样例对。

训练目标:

实验结果

Dropout优于传统数据增强?

下图中对比了使用Unsupervised SimCSE (第一行None)和常见的数据增强方法在STS-B验证集上的Spearman's Correlation。

其中crop k%表示随机减掉k%长度的span,word deletion表示随机删除k%的词,delete one word只删除一个词,MLM 15%表示用随机替换掉15%的词。上表中所有dropout的方法的dropout的比例都是0.1。(因为文中对比了不同比例的dropout,p=0.1效果最好。)

实验结果很明显的可以看出,SimCSE是远超其余数据增强方法的。小花的理解是传统数据增强的方法是对原始输入直接进行改变,在编码后,增强的数据与原始数据在语义空间的距离是不是要比直接用dropout的方式要远。

Dropout与对比学习的关系

为了理解dropout为什么work,作者可视化了不同方法下alignment和uniformity在训练过程中的变化趋势。

上图中对比了在不同数据增强/dropout方式下,在训练过程中的变化方向(每训练10步采样一次)。Fix 0.1表示p=0.1时,两次使用相同dropout mask。对于Fixed 0.1和No dropout来讲,正例对的句子表示是完全相同的,

可以看到随着训练步数增加,Unsup. SimCSE的平稳地递减。虽然降低的趋势却不明显,但其初始化的值就相对较低。上图进一步验证了SimCSE有效的原因是,它可以让alingnment和uniformity的值逐渐降低。

小花在这里有一个问题请教:使用Fixed 0.1和No dropout与另外两种方式相比较,是不是不太公平?因为当正例对两个向量完全相同时,其实是缺失了一些变体的对比信息在里面的。还有既然两个向量完全相同,为什么会上升呢?还望理解的小伙伴留言讨论下呀!(╹▽╹)

语义文本相似效果如何?

SimCSE在STS(语义文本相似)任务上进行了评估。评价指标是 Spearman’s correlation。表格中对比了各种建模句子向量的方法,包括简单的对Glove向量取平均,到前不久的SOTA:BERT-Flow和BERT-Whitening。可以看到,在各种编码器和有无监督模式下,SimCSE都取得了显著的提升。比如无监督时,与BERT-Whitening相比,Avg. 分别提升了7.96%和14.77%。

此外,作者还对比了不同句子表示模型下 与他们在STS任务上的结果:可以看出:

  • Avg.BERT模型的较低,但较高;

  • 相反,对BERT表示进行后处理的BERT-flow和BERT-whitening的较低,但是却很高;

  • Unsup.SimCSE和SimCSE的两个值都是较低的,他们的STS的结果也更好。

说明需要结合使用,只有当二者的值都比较低时,模型学习到的句子向量表示才最适合STS任务。

迁移学习效果

除了STS任务上的评估外,本文还将训练好的句子向量迁移到7个任务上。

迁移学习上的SimCSE并没有展现出明显的优势。作者的解释是句子级别的训练目标并不能直接有利于迁移学习。为了让迁移学习效果更好,文中还是尝试将MLM损失和对比学习损失一起训练,取得了少量的提升(上表中标有w/MLM的行)。

有开源嘛?

有的! 4月23号刚开源的代码。

GitHub链接:
https://github.com/princeton-nlp/SimCSE

文中的预训练语言模型已经整合到了HuggingFace中,可以像BERT模型那样,直接通过API调用模型。

from transformers import AutoModel, AutoTokenizertokenizer = AutoTokenizer.from_pretrained("princeton-nlp/sup-simcse-bert-base-uncased")
model = AutoModel.from_pretrained("princeton-nlp/sup-simcse-bert-base-uncased")

想动手试试的小伙伴们赶紧GitHub看看吧...

小结

本文提出了一个简单的对比学习的框架,SimCSE,用于学习句子表示。文中提出dropout+对比学习和NLI+对比学习,都非常有利于句子表示的学习。SimCSE大幅刷新STS任务榜单,取得了新一轮的SOTA。

这篇文章让小花很爱的一点是,明明是我们习以为常的dropuout和早就熟悉透了的的NLI数据,但是本文的作者们却能从一个全新的角度看待它们,将它们与比学习建立联系,取得非常显著的提升,并合理地解释为什么work。

寻求报道、约稿、文案投放:
添加微信xixiaoyao-1,备注“商务合作”

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

 

[1] Wang, T., & Isola, P. (2020). Understanding Contrastive Representation Learning through Alignment and Uniformity on the Hypersphere. ICML. https://arxiv.org/pdf/2005.10242.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美团点评移动端基础日志库——Logan

背景 对于移动应用来说,日志库是必不可少的基础设施,美团点评集团旗下移动应用每天产生的众多种类的日志数据已经达到几十亿量级。为了解决日志模块普遍存在的效率、安全性、丢失日志等问题,Logan基础日志库应运而生。 现存问题 目前&#xf…

论文浅尝 - ACL2020 | Segmented Embedding of Knowledge Graphs

来源:ACL2020链接:https://arxiv.org/pdf/2005.00856.pdf摘要知识图谱的嵌入愈发变成AI的热点之一,对许多下游任务至关重要(如个性化推荐、问答等)同时,此模型强调两个关键特性:利用足够多的特征…

【论文翻译】HeteSim:异构网络中相关性度量的通用框架

原文链接:https://blog.csdn.net/Mrong1013967/article/details/115330139 HeteSim:异构网络中相关性度量的通用框架 摘要 相似性搜索是许多应用中的一个重要功能,它通常侧重于度量同一类型对象之间的相似性。然而,在许多场景中&a…

LeetCode 234. 回文链表(快慢指针+链表反转)

1. 题目 请判断一个链表是否为回文链表。 示例 1: 输入: 1->2 输出: false示例 2: 输入: 1->2->2->1 输出: true进阶: 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?来源:力扣(LeetCode) 链接&a…

随机/线性颜色生成器(RandomColorGenerator)

最近在实现https://javascript30.com/的课程,其中有一门课程要求利用Canvas实现一个效果,我发现这个效果其中的颜色是线性生成的。结合我之前已经写过一个随机颜色生成器,就想将这个随机颜色生成器写出来,作为一个工具使用&#x…

美团点评运营数据产品化应用与实践

背景 美团点评作为全球最大的生活服务平台,承接超过千万的POI,服务于数量庞大的活跃用户。在海量数据的前提下,定位运营业务、准确找到需要数据的位置,并快速提供正确、一致、易读的数据就变得异常困难,这些困难主要体…

NAACL’21 | 来看如何让模型学会因为所以但是如果

文 | Eleanor 编 | 戏有一些标准考试那是真的难,难到能分分钟教你做人。对于留学党来说,申请法学博士需要 LSAT 考试成绩、申请商学院需要 GMAT 考试成绩。这些标准考试到底有多难,大概考过的都懂8(嘤嘤嘤_(:з」∠)_)…

领域应用 | 知识计算,华为云赋能企业知识化转型

本文转载自公众号:华为云AI。从计算智能,到感知智能,再到认知智能,是业界普遍认同的人工智能技术发展路径。随着技术的演进,人工智能已经在"听、说、看"等感知智能领域达到或超越了人类水准,但是…

我在小程序工程化方面的一些实践

我在小程序工程化方面的一些实践 早期做小程序时,还是原始时代,项目结构混乱,各种冗余代码,每次迭代时由于高昂的维护成本,极为头疼。遂在一次次的更迭中完成了基础组件的初版,极为酸爽。从此之后在当时的…

LeetCode 430. 扁平化多级双向链表(DFS)

1. 题目 您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。 扁平化列表…

详解:多模态知识图谱种类及其应用

详解:多模态知识图谱种类及其应用 本文系统的讲述了一些关于多模态知识图谱的相关知识,作者介绍了一些重要的开源多模态知识图谱,基于百科多模态知识图谱Richpedia以及相关使用网站和多模态知识图谱的应用。>>加入极市CV技术交流群&am…

Android Hook技术防范漫谈

背景 当下,数据就像水、电、空气一样无处不在,说它是“21世纪的生产资料”一点都不夸张,由此带来的是,各行业对于数据的争夺热火朝天。随着互联网和数据的思维深入人心,一些灰色产业悄然兴起,数据贩子、爬虫…

论文浅尝 - ICML2020 | 跨域对齐的图最优运输算法

陈卓,浙江大学在读博士,主要研究方向为图神经网络和知识图谱表示学习。论文链接:https://arxiv.org/pdf/2006.14744代码:https://github.com/LiqunChen0606/Graph-Optimal-Transport发表会议:ICML 2020动机该论文的出发…

张俊林:对比学习研究进展精要

文 | 张俊林知乎对比学习(Contrastive Learning)最近一年比较火,各路大神比如Hinton、Yann LeCun、Kaiming He及一流研究机构比如Facebook、Google、DeepMind,都投入其中并快速提出各种改进模型:Moco系列、SimCLR系列、BYOL、SwAV…..&#x…

前端开发者的福音!通过拖拽就可生成Vue代码的平台来了!

Vue组件代码生成平台 Vue组件代码生成平台是一款面向Vue开发者的拖拽式组件代码生成工具。通过它可以快速搭建Vue组件的代码骨架结构。开发者可在此基础上进行二次开发。 目前该平台非常适合快速搭建一个常见的数据查询组件,仅需要拖三个组件进来即可完成&#xf…

LeetCode 523. 连续的子数组和(求余 哈希)

1. 题目 给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。 示例 1: 输入: [23,2,4,6,7], k 6 输出: …

知识图谱简介

01 什么是知识图谱 我们可以从不同的视角去审视知识图谱的概念。 在Web视角下,知识图谱如同简单文本之间的超链接一样,通过建立数据之间的语义链接,支持语义搜索。 在自然语言处理视角下,知识图谱就是从文本中抽取语义和结构化的…

流量运营数据产品最佳实践——美团旅行流量罗盘

背景 互联网进入“下半场”后,美团点评作为全球最大的生活服务平台,拥有海量的活跃用户,这对技术来说,是一个巨大的宝藏。此时,我们需要一个利器,来最大程度发挥这份流量巨矿的价值,为酒旅的业务…

开源开放 | OMAHA 联合 OpenKG 发布新冠诊疗图谱数据

本文转载在公众号:OMAHA联盟。今年新型冠状病毒肺炎爆发期间,大数据、云计算、人工智能等新一代信息技术支撑着我国建立和健全疫情防控机制。知识图谱作为机器认知智能实现的基础之一,是人工智能的重要组成部分,在“抗疫”行动中赋…

LeetCode 498. 对角线遍历

1. 题目 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。 输入: [[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ] ]输出: [1,2,4,7,5,3,6,8,9]2. 解题 横…