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

卷友们好,我是rumor。

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

Even a non fine-tuned method can outperform the fine-tuned methods like unsupervised ConSERT on STS tasks

好,你厉害,我读还不行吗。

ef82ff36423e0b129a35812b0b4d18ee.png

这篇文章名叫PromptBERT,无监督直接在SimCSE的基础上提了2个多点:

PromptBERT: Improving BERT Sentence Embeddings with Prompts
https://openreview.net/forum?id=7I3KTEhKaAK
14f9ec4c79d581db23302b5c22cd1c2f.png

方法的核心思路也比较简单,分为两步

  1. 用Prompt的方式生成句子表示,比如[X] means [MASK][X]是输入句子,[MASK]是输出的表示,用这个当句子表示

  2. 用不同的Prompt模版来生成对比学习的view,继续采用自监督的方式训练

上面两步带来的提升也是相辅相成的,首先加了Prompt之后生成的表示本身就比BERT-flow、BERT-whitening、ConSERT要好:

b8665878fc30645b6590953a62982db1.png

注:OptiPrompt是参数化的prompt,但作者在最终实验用的还是手工prompt

加上对比学习的无监督训练后,效果又又又提升了一些(开头的图),不过从训练目标的消融实验可以猜想,主要提升还是在prompt产生句子表示的方式,而用不同template来对比学习的提升其实有限(第一行SimCSE设置 vs 第二行):

b5eebe19b5ad8d8403704aaee58db844.png

为什么Prompt可以work

上面嗖嗖列了一堆实验结果,其实这篇文章的核心思想就是用Prompt来产生句子表示,那为什么这样产出的表示效果会好呢?

作者认为,原生BERT表现不好主要是因为词语频率、大小写、subword等token导致的bias,而BERT本身各层Transformer都没有纠正这个问题。通过利用prompt,可以更有效地使用BERT各层中的知识,并且用[MASK]来表示embedding的话,可以避免像以前一样做各种token的平均,从而避免了token引入的偏差

为了证明上述猜想,PromptBERT在开头做了不少分析:

  1. 通过实验,显示embedding层甚至比最后一层的表现要好,证明BERT各层对于文本表示任务效率较低

  2. 之前其他工作认为,原生BERT表现差主要是因为表示空间的anisotropy(呈锥形),而anisotropy是由词频这样的偏差引起。但作者通过一些实验,认为anisotropy和bias不是相关的,所以bias的问题仍有待解决

总结

总的来说,Prompt+对比学习的结合方式还是很巧妙的,我之前还想怎么用prompt做表示来着,没想到这样就work了1e7fb36ac64fbcdc2277844810be01d6.png。另外作者关于anisotropy和bias的实验也比较有启发性,同时在附录里作者通过实验显示,如果不对embedding层和softMax层进行weight tying的话,会很大程度上减少偏差。

不过并没有直接的实验可以表示PromptBERT减少了偏差,另外作者对prompt前期的探索虽然很到位(尝试T5生成的模版、参数化模版),但不知道为啥最后还是选择了人工模版。还有个疑惑是PromptBERT只在base模型上做了实验,而我们都知道prompt是模型越大越好的,一般我看到的prompt论文都是large模型起步,base就取得了这么好的效果还是蛮让人惊讶。


欢迎对NLP感兴趣的朋友加入我们的「NLP卷王养成」群,一起学习讨论~

扫码添加微信备注「NLP」即可⬇️

8c7f556f2c6ec97794d0907f47f1beb6.png

41629de4acf243e747c5735bcfc801ee.png


大家好我是rumor

一个热爱技术,有一点点幽默的妹子

欢迎关注我

带你学习带你肝

一起在人工智能时代旋转跳跃眨巴眼

「扶我起来,我还想卷SOTA」e68d22d00c0ed7d06eae36398fe49554.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值