卷友们好,我是rumor。 写这篇文章的时候,我的心情很复杂。简单的来说,有一个好消息和坏消息。好消息是我们今年2月投稿的ACL中了,用对比学习做文本表示,刷过了BERT-flow,直接提了2-5个点。坏消息是我们一直没挂出来,想憋大招等5月份ACL正式通知下来一起宣传,没想到陈丹琦组在4月份推出了SimCSE,比我们高个1-2点。

更坏的消息是,我虽然很早就看到了SimCSE的论文,但只瞟了眼第一页的结果,心中默认他们放的是large模型表现(比我们低)。所以在准备ConSERT宣传工作之前我一直沉浸在某种自我陶醉的状态,跟一些知道的小伙伴也都夸下了海口,说「我们还是SOTA,稳」。直到ACL正式结果下来,领导说咱们开始PR吧,我们才发现人家SimCSE放的是base模型结果。那种感觉,就像跑N*400米,我以为自己跑在第一个,实际上已经被套圈了。 Anyway,跑都跑了,还是分享一些我们在工作中发现的有意思的点以及思考。

打开网易新闻 查看更多图片

论文链接: https://arxiv.org/pdf/2105.10497 代码: https://github.com/yym6472/ConSERT

一、简介NPL+对比学习

P.S. 对比学习的背景就不过多介绍了,不了解的同学可以参考。

到底在解决什么问题

ConSERT、SimCSE等方法,在应用了对比学习之后,都比之前的方法有了很大提升。这是因为BERT的表示本身存在塌缩的问题

之前BERT-flow的论文就有提到过,通过对BERT词表示的观察,会发现整体呈锥形分布:高频词聚集在锥头部,低频词分散在锥尾。又由于高频词本身是高频的,因此会dominate句子表示,让整体的相似度都很高,如下图a所示:

如果我们去掉句子中的高频词,效果就会好一些,如下图蓝色的线:

打开网易新闻 查看更多图片

再来看对比学习,它是通过拉近相同样本的距离、拉远不同样本的距离,来刻画样本本身的表示,正好可以解决BERT表示的塌缩问题。经过对比学习增量训练后,我们也可以观察出整体的句子表示确实更均匀了些(上图b、橙色线)。

数据增强方法很重要

在最初做对比学习时,我们的思路局限在有监督对抗扰动和BERT输出后的表示对比上(比如mean、max池化后的对比),但提升一直有限。直到渊蒙发现即使不使用任何方法,直接拉近相同表示、拉远不同表示也会有不错的提升后,我们的重点才又放到了句子前期的扰动上。

参考其他NLP论文的数据增强后,我们在Embedding层使用了:

  • shuffle: 更换position id的顺序

  • token cutoff: 在某个token维度把embedding置为0

  • feature cutoff: 在embedding矩阵中,有768个维度,把某个维度的feature置为0

  • dropout: 顺着cutoff,我们又想到了dropout

再看SimCSE的思路还是很巧妙的,我们只局限在了Embedding layer和Pool layer的扰动上,意识到扰动越提前,越会被网络放大,而没意识到在Transformer的每一层都可以增加扰动,把diff更加放大,提升任务难度。

有意思的是两篇论文得出的结论是不一样的,我们对比后发现Feature cutoff+Shuffle的效果最好(当然我们的dropout其实弱一些):

再把SimCSE的思路拿过来,如果在transformer每一层都做shuffle或者cutoff,说不定也能有些提升。

另外我们也尝试了SimCLR那样增加一层MLP、或者用SimSiam,但基本都没效果。估计是因为BERT的学习能力已经很强了,不需要其他变化来辅助。

所以总结下来,数据增强方法在NLP对比学习上是关键的一环,变化太大会影响语义,太小则没效果,需要适当把握度,在每一层微微加些扰动。

调参也重要

实验过程中,我们发现temperature超参数对于效果的影响非常大:

再看对比学习的公式:

打开网易新闻 查看更多图片

我们猜想是,当 \tauτ 过小时,样本之间的分数diff就会增大,降低模型学习难度,但过大时,因为BERT本身已经存在塌缩现象(句子向量分数都非常接近),就会让任务变得太难,模型不一定能学会。

另外learning rate的影响也不小,最近在仔细看了SimCSE的设置后,不甘的我们又悄悄做了些实验,调参小能手渊蒙强势上线:

虽然真正落地时大家会更关注数据的影响,但在给定数据集、数据量不大的情况下,调参还是会带来几个点的波动。但局限在调参取胜还是不可取的,真正的好方法应该兼具鲁棒性。

遗留问题

整个工作下来,我们对于对比学习的探索还是很多的,但实际还有一个问题,估计只有真正做过对比学习的人才注意到了,那就是停止策略。

对比学习虽然可以拉远样本表示,解决它们塌缩到一起的问题,但拉远到什么程度是个头呢?

实验中我们发现,如果放任它一直训练下去,效果就会极速下降,造成「反向塌缩」。

所以只能使用STS-B作为dev集,频繁地进行评估,保留最优step,SimCSE也是同样的做法。但这种做法也不能算是「真正的无监督」,像BERT那样可以在大语料上一直预训练。

关于停止策略我们也找了一些方法,并和其它做对比学习的同学讨论,总体的思路是在对比学习(最大化互信息)的同时最小化与任务无关的互信息,但方法比较复杂,由于时间原因没有再继续深入,感兴趣的同学可以参考以下文章:

NIPS2020: What Makes for Good Views for Contrastive Learning? ICLR2021: Self-Supervised Learning From a Multi-View Perspective ICLR2021: FAIRFIL: Contrastive Neural Debiasing Method For Pretrained Text Encoders

这个方向还是有价值深挖一下的,因为目前我们只停留在了dev集最优结果上,如果能找到减缓反向塌缩的方法,继续训练,说不定能找到更优的结果。

二、论文Novelty

在最终写作论文的过程中,我们最担心的问题是ConSERT的方法会不会被质疑是A+B,自己的novelty不够,确实审稿人也提出了这点。

关于这点相信大家做研究也会碰到,每个人都有不同的想法。个人认为方法的拼凑、简单不要紧,重要的还是效果。像之前的SBERT其实也只是把BERT拿来放到经典的框架里实现了一把,但由于方法简单、开源库方便而产生了很大的影响力。虽然一些文章也会被称为「灌水」(见下图),但大部分作者还是在用心钻研其他方法对自己领域的作用,并提供一些经验作为后人的参考。

所以有价值的研究不一定要多fancy,能真正对落地效果有提升就可以。甚至方法越简单越好,简单到极致就是优雅。

三、总结

最后,还有一个take away,就是追热点的研究一定请快!狠!准!

早点放到arixv上占坑。前段时间批量的MLP模型出世估计也是大佬们忍不住了,齐刷刷出来占坑。

Illustration by Rosina Gavrilash from Icons8

CVPR 2021 论文解读Talk+在线直播交流

火热进行中!

(点击下方海报了解更多详情)

关于我“门”

将门是一家以专注于发掘、加速及投资技术驱动型创业公司的新型创投机构,旗下涵盖将门创新服务将门技术社群以及将门创投基金

将门成立于2015年底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。

如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”:

bp@thejiangmen.com

点击右上角,把文章分享到朋友圈