每天给你送来NLP技术干货!


作者 | 王嘉宁@华师数据学院

整理 | NewBeeNLP

https://wjn1996.blog.csdn.net/article/details/125528859

  • 虽然BERT等语言模型有很大的成果,但在对句子表征方面(sentence embeddings)上表现依然不佳,因为BERT存在 sentence biasanisotropy 问题;

  • 我们发现prompt,再给定不同的template时可以生成不同方面的positive pair,且避免embedding bias。

相关工作

Contrastive Learning(对比学习) 可以利用BERT更好地学习句子表征。其重点在于如何寻找正负样本。例如,使用inner dropout方法构建正样本。

现有的研究表明,BERT的句向量存在一个 坍缩现象 ,也就是句向量受到高频词的影响,进而坍缩在一个凸锥,也就是各向异性,这个性质导致度量句子相似性的时候存在一定的问题,这也就是 anisotropy 问题。

发现

(1)Original BERT layers fail to improve the performance.

对比两种不同的sentence embedding方法:

  • 对BERT的输入input embedding进行平均;

  • 对BERT的输出(last layer)进行平均

评价两种sentence embedding的效果,采用sentence level anisotropy评价指标:

anisotropy :将corpus里面的sentence,两两计算余弦相似度,求平均。

对比了不同的语言模型,预实验如下所示:

  • 从上表可以看出,貌似anisotropy对应的spearman系数比较低,说明相关性不大。比如bert-base-uncased,

  • 可以看出static token embedding的anisotropy很大,但是最终的效果也差不多。

(2)Embedding biases harms the sentence embeddings performance.
token embedding会同时受到token frequency和word piece影响

  • 不同的语言模型的token embedding高度受到词频、subword的影响;

  • 通过可视化2D图,高频词通常会聚在一起,低频词则会分散

For frequency bias, we can observe that high fre- quency tokens are clustered, while low frequency tokens are dispersed sparsely in all models (Yan et al., 2021). The begin-of-word tokens are more vulnerable to frequency than subword tokens in BERT. However, the subword tokens are more vul- nerable in RoBERTa.

三、方法

如何避免BERT在表征句子时出现上述提到的问题,本文提出使用Prompt来捕捉句子表征。但不同于先前prompt的应用(分类或生成),我们并不是获得句子的标签,而是获得句子的向量,因此关于prompt-based sentence embedding,需要考虑两个问题:

  • 如何使用prompt表征一个句子;

  • 如何寻找恰当的prompt;

本文提出一种基于prompt和对比学习的句子表征学习模型。

3.1 如何使用prompt表征一个句子

本文设计一个template,例如“[X] means [MASK]”,[X] 表示一个placehoder,对应一个句子,[MASK]则表示待预测的token。给定一个句子,并转换为prompt后喂入BERT中。有两种方法获得该句子embedding:

  • 方法一:直接使用[MASK]对应的隐状态向量:;

  • 方法二:使用MLM在[MASK]位置预测topK个词,根据每个词预测的概率,对每个词的word embedding进行加权求和来表示该句子:

方法二将句子使用若干个MLM生成的token来表示,依然存在bias,因此本文只采用第一种方法

3.2 如何寻找恰当的prompt

关于prompt设计上,可以采用如下三种方法:

  • manual design:显式设计离散的template;

  • 使用T5模型生成;

  • OptiPrompt:将离散的template转换为continuous template;

3.3 训练

采用对比学习方法,对比学习中关于positive的选择很重要,一种方法是采用dropout。本文采用prompt方法,为同一个句子生成多种不同的template,以此可以获得多个不同的positive embedding。

The idea is using the different templates to repre- sent the same sentence as different points of view, which helps model to produce more reasonable pos- itive pairs.
为了避免template本身对句子产生语义上的偏向。作者采用一种trick:

  • 喂入含有template的句子,获得[MASK]对应的embedding ;

  • 只喂入template本身,且template的token的position id保留其在原始输入的位置,此时获得[MASK]对应的embeding:

最后套入对比学习loss中进行训练:

四、实验

作者在多个文本相似度任务上进行了测试,实验结果如图所示:

  惊奇的发现,PromptBERT某些时候竟然比SimCSE高,作者也提出使用对比学习,也许是基于SimCSE之上精细微调后的结果。


Prompt+对比学习,更好地学习句子表征相关推荐

  1. 强化学习q学习求最值_通过Q学习更深入地学习强化学习

    强化学习q学习求最值 by Thomas Simonini 通过托马斯·西蒙尼(Thomas Simonini) 通过Q学习更深入地学习强化学习 (Diving deeper into Reinfor ...

  2. ACL2022论文分类汇总-Prompt、句子表征、检索排序摘要

    写在前面 大家好,我是刘聪NLP. ACL2022会议的论文已经出来一阵子了,将论文列表过了一边,筛选了一些自己正在做或者感兴趣方向的相关论文,包括:Prompt(35篇).句子表征(21篇).检索排 ...

  3. 【NLP】Prompt+对比学习,更好地学习句子表征

    作者 | 王嘉宁@华师数据学院 整理 | NewBeeNLP https://w‍jn1996.blog.csdn.net/article/details/125528859 ‍ 虽然BERT等语言模 ...

  4. 超越SimCSE两个多点,Prompt+对比学习的文本表示新SOTA

    可能是因为对比学习,今年以来文本表示方向突然就卷起来了,SOTA刷的嗖嗖的,我还停留在我们ConSERT的阶段,结果别人不精调就已经超了. 昨天实习同学发了我几篇Open Review上ACL的投稿, ...

  5. Robert+Prompt+对比学习+对抗训练文本分类

    基于Robert的文本分类任务,在此基础上考虑融合对比学习.Prompt和对抗训练来提升模型的文本分类能力,我本地有SST-2数据集的train.txt.dev.txt两个文件,每个文件包含文本内容和 ...

  6. 阿里+中科院提出:将角度margin引入到对比学习目标函数中并建模句子间不同相似程度...

    作者:李加贝 (浙江工商大学) 方向:跨模态搜索 标题:A Contrastive Framework for Learning Sentence Representations from Pairw ...

  7. 从各大顶会看对比学习在句子表征研究进展

    作者 | 上杉翔二 悠闲会 · 信息检索 整理 | NewBeeNLP 前已经有博文整理过了对比学习的概念,比较重要且流行的文章,和一些已经有的应用: YYDS!对比学习还能这么用? 从顶会论文看对比 ...

  8. php serialize和json_encode哪个更快_学习PHP的10个技巧

    在开始学习PHP之前,花一些时间计划学习语言的方法可能是明智的. 学习过PHP的专业开发人员已经花费了大量时间来学习他们的技术.要模拟它们,您将需要确保有动力去做,并且理想地能够快速有效地学习PHP. ...

  9. 吃瓜笔记 | Momenta王晋玮:让深度学习更高效运行的两个视角

    主讲人:王晋玮 | Momenta合伙人 屈鑫 编辑整理 量子位 出品 | 公众号 QbitAI 2月1日晚,量子位·吃瓜社联合Momenta带来吃瓜社第五期:让深度学习更高效运行的两个视角. 作为顶 ...

最新文章

  1. 【Git+Docker】Docker初期学习认识和安装配置详解
  2. CSP认证201612-1 中间数[C++题解]:遍历
  3. 软件工程博客---团队项目---个人设计2(算法)
  4. 有钱就是任性!阿里20亿美元拿下网易考拉:欢迎加入阿里动物园
  5. STM32工作笔记0049---JLINK在线调试__软件调试方法与技巧
  6. android 如何实现apk search出现在系统的推荐列表里
  7. jbig java_jbig2 Java Develop 238万源代码下载- www.pudn.com
  8. springboot指定属性返回_Spring Boot 最最最常用的注解梳理
  9. pythonwhileelse,关于Python while语句的Else子句
  10. 二分类变量相关性分析spss_两个有序分类变量相关性的卡方检验-SPSS教程
  11. Android——实现光点模糊渐变的自旋转圆环特效
  12. cityscape 数据集 mmsegmentation训练记录
  13. 函数式编程(lambda表达式)
  14. 2022最新微信步数提交平台网站PHP源码
  15. 解决Macbook互联网不能共享 因为它是受802.1X保户问题
  16. Onedrive服务器位置,移动或更改Windows 10中OneDrive文件夹的位置 | MOS86
  17. armbian 斐讯n1_斐讯N1安装Armbian
  18. international journal of remote sensing投稿经历给我的感悟
  19. Canvas实现微信大转盘抽奖代码
  20. 金蝶KIS专业版客户端登录提示“无效的授权”最全解决方案合辑

热门文章

  1. 《东周列国志》第八十一回 美人计吴宫宠西施 言语科子贡说列国
  2. [mysql] ERROR 2002 (HY000): Can‘t connect to local MySQL server...问题解决
  3. 南昌大学计算机学硕和专硕,专硕和学硕哪个好?该怎么选?
  4. Android adb查看网络连接情况
  5. openssl 1.0.2k-fips 升级到 openssl-3.0.5
  6. android开发底部虚拟键,android手机底部的虚拟按键怎么弄,像android平板那样。
  7. 第三章 迭代器(iterators)概念与traits编程技法
  8. 软件设计是怎样炼成的(5)——规划系统的骨架(架构设计)(上篇)
  9. Receptive Field Block Net for Accurate and Fast Object Detection(RFB)
  10. var foo = function(){} 和 function foo(){}