说到句向量,大家除了第一反应是用bert的CLS作为句向量,还有就是用word2vec学到每个词的向量,然后把句子中所有的词向量做pooling作为句子的向量。有篇论文SimCSE提到可以引入对比学习。

先回顾下对比学习,对比学习的目标无非就是让相似的数据点离的更近,疏远不相关的。假设有一系列pair对:

Xi和Xi+是语意相关的,然后可以使用in-batch内负样本配合交叉熵损失。整个学习目标可以用下式表达:

T控制温度,sim是cos相似度,h是bert或者RoBERTa输出的句向量。在对比学习最重要的就是如何构建(Xi,Xi+)对,在图像领域就是各种裁剪,旋转等操作。NLP中就很难有这种操作。

无监督SimCSE

取一个集合的句子{xi}i=1~m,让xi+= xi。两个一样的正例,怎么能work? loss都是0了。重点就是用独立采样的dropout mask。标准的bert中,dropout的mask都是在全连接层上的。现在我们简单的把同样的输入放到encoder两次,通过两种不同的dropout masks z和z'(transformer中标准的dropout mask),然后得到两个embeddings,训练目标就变成了下式:

无监督SimCSE和其他方法对比,效果也是最好的:

有监督的SimCSE

充分利用NLI(自然语言推理)数据集中的相互冲突的句子作为强负例。在NLI数据集,给定一个前提,注释者需要手动编写一个绝对正确(蕴涵)、一个可能正确(中立)和一个绝对错误(矛盾)的句子。所以样本从(Xi,Xi+)扩展成了(Xi,Xi+,Xi-),训练目标变成了下式:

从结果上看,可以显著提升效果。论文还尝试了混合unsupervised SimCSE,发现没有任何帮助。使用双重encoder的框架也会降低效果。

实验

论文在STS任务比较了无监督和有监督SimCSE和之前句向量的方法,结果如下图所示:

参考文献

就知道调bert,都不知道加个对比学习吗?

就知道调bert,都不知道加个对比学习吗?相关推荐

  1. Mysql调优你不知道这几点,就太可惜了

    转载自  Mysql调优你不知道这几点,就太可惜了 一.Mysql的逻辑分层 Mysql分为:连接层.服务层.引擎层.存储层. 当客户端向服务端发起操作请求的时候,执行过程是这样的: 1.客户端端与M ...

  2. 还自认为很牛逼...简直就是什么都不知道!6年的软件测试 怕不是白瞎了???

    最近看了很多简历,很多候选人年限不小,但是做的都是一些非常传统的项目,想着也不能通过简历就直接否定一个人,何况现在大环境越来 越难,大家找工作也不容易,于是就打算见一见. 在沟通中发现,由于年限不小, ...

  3. 7个使用PyTorch的技巧,含在线代码示例!网友:我连第一个都不知道?!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 大家在使 ...

  4. 最近面试了一位4年的Java,什么都不知道!还自认为很牛逼...

    最近看了很多简历,很多候选人年限不小,但是做的都是一些非常传统的项目,想着也不能通过简历就直接否定一个人,何况现在大环境越来 越难,大家找工作也不容易,于是就打算见一见. 在沟通中发现,由于年限不小, ...

  5. 两边双虚线是什么意思_单黄线和双黄线有什么不同?很多人都记不对,被扣分都不知道...

    现在的社会发展越来越好,经济也有了很大的提升,人们也开始提升自己的生活质量.买车就成了很多人的首选,因为买车可以很大的方便人们的生活.不过即使买车,也并不是说就可以随随便便的开车上路的.现在路上的车辆 ...

  6. Endnote在word中每次启动都要加载,或者无法加载的解决办法

    第一次出问题 之前endnote用的好好着,突然不知道咋了就没法自动加载了,每次打开Word都要重新加载,麻烦. 按照网上说的把explorer.exe删除然后重新打开,重新加载endnote,不起作 ...

  7. pycharm 设置虚拟工作空间_七、连Pycharm都不知道怎么用,学什么Python

    「@Author : Runsen」 我决定把去年写的Python文章整理一个专栏,垃圾的就直接删除,将多篇博文整理成一篇. 工欲善其事必先利其器,Pycharm 是最受欢迎的Python开发工具,它 ...

  8. 计算机怎样发现路由器上u盘,路由器USB插口的4个功能,你也许一个都不知道!...

    路由器USB插口的4个功能,你也许一个都不知道! 随着移动网络的普及,人们的手机流量开销越来越大,一个人如果每个月只使用手机上的流量费用,至少要有20G才勉强够用,都要一省再省,稍微不留神,我们都会用 ...

  9. 都 2021 年了还不会连 ES6/ES2015 更新了什么都不知道吧

    都 2021 年了还不会连 ES6/ES2015 更新了什么都不知道吧 es6 / es2015 let & const 块级作用域 解构 数组解构 对象解构 模板字符串 Math + Num ...

最新文章

  1. String性能提升10倍的几个方法!(源码+原理分析)
  2. Metasploit***技巧:后***Meterpreter代理
  3. 开源模式反击之后,白嫖服务商竟然大叫“你不讲武德!”
  4. Oracle优化09-绑定变量
  5. linux wifi关闭5g,TP-Link路由器如何关闭5G无线Wi-Fi信号?
  6. vue中向数组去重_「前端剑指offer第3期」来,手写一下数组去重
  7. 基本数据类型与字符串的转换
  8. 实例23:python
  9. 这10个功能模块,手把手教你从零设计电商系统
  10. 上海交大计算机专硕学费2018,2018年上海交通大学博士研究生学费与相关奖助政策...
  11. jquery选择器之基本选择器
  12. 深入理解计算机系统第四版_深入理解计算机系统第三版2.4节中文版的一处翻译问题及英文版可能的一处错误...
  13. SVN客户端安装以及操作流程
  14. 新手如何使用JavaScript读取json文件
  15. 【知识点总结】计算机操作系统
  16. epc项目设计流程图_EPC工程总承包管理流程图解。
  17. 我是如何纯靠技术在大学月入上万,收获人生第一个10W
  18. 1、什么是ASIC芯片?
  19. 英语汉语对比学习:名词(一)
  20. SystemVerilog与功能验证

热门文章

  1. leetcode 64. Minimum Path Sum
  2. WWF系列之----关于Host与WorkflowInstance之间的通讯
  3. beanshell变量无法传到jmeter_学会BeanShell,才敢说自己懂Jmeter
  4. 肿瘤表观遗传相关重磅数据库:MR4Cancer使用指南
  5. 重磅!SCI顶级牛刊《Science》合集(2018~2020年度)
  6. flash 林度_flash动画的视频应用
  7. zipfile不能解压分卷压缩的文件
  8. 毕业论文 | 便携式环境烟雾监测器(源码、电路图)
  9. c语言 #define dpath .exe是什么意思,C语言宏定义#define
  10. AI领域首个iF用户体验大奖——第四范式斩获2项德国iF设计奖