给BERT加一个loss就能稳定提升?斯坦福+Facebook最新力作!

2020 年 11 月 10 日 AINLP

关注CV领域的小伙伴一定都记得Hinton团队在年初提出的SimCLR[1],采用自监督的对比学习方法进行encoder的训练,各种碾压之前的模型。所以今年我一直在等某个大招,终于在20年的尾巴看到了一丝希望。

今天要介绍的这篇工作来自斯坦福和Facebook AI,作者在BERT分类任务的精调阶段加入了对比学习的loss,在各个任务上都获得了很稳定的提升:

上图中CE表示交叉熵,SCL表示Supervised Contrastive Learning。实话说结果并不够惊艳,用对抗学习也差不多可以做到,让我惊喜的是在Few-shot上的效果:

N表示训练样本数量。可以看到N=20时QNLI上有10个点之多的提升。

下面就让我们来走近科学,看看SCL是个啥玩意儿叭~

论文题目:Supervised Contrastive Learning for Pre-trained Language Model Fine-tuning
论文链接:https://arxiv.org/abs/2011.01403

对比学习

对比学习的核心思想,就是让模型学习如何将正样本和其他负样本区别开来,抓住样本的本质特征,而不是把每个细节都考虑到。拿人来举例,假如有人让你凭空画一张一美元,你可能只画成这样[2]

而如果给你一张美元照着临摹,可能还能画好看点,比如这样:

所以说我们记住的,不一定是像素级别的特征,而是更高维度的。在训练模型时,也不强求它们把所有信息都编码,只要细致到可以区分数据中的不同样本就可以。

如何实现呢?这个就体现在目标函数上:

在自监督的情况下,对比学习利用数据增强方法,给每个输入样本输入构建另一个view 作为正例,并使用同batch下其他样本 作为负例,达到拉近正例拉开负例的“对比”目的:

描述得更具体一点,就是把N个输入样本增强到2N个,然后进行2N分类(其中有2个正例2N-2个负例)。

P.S. 关于对比学习在图像领域的进展可以参考知乎@Tobias Lee的文章[3]

Supervised Contrastive Learning

上文讲了自监督的对比学习主要是靠一个batch内的样本间相互对比,那有监督的数据如何更好利用呢?

作者就针对分类任务进行了研究。分类的核心思想就是把不同类别的样本划分开来,通常使用交叉熵作为损失函数。作者则提出了一个新的对比学习loss SCL,将同一类的样本互相作为正例,不同类别的作为负例。以此达到拉近类内样本、拉开类间距离的目的:

具体的损失计算方法为(右滑公示):

其中 是正确label, 是归一化后的encoder输出, 是一个控制类间距离的超参数,越低负例就越难分。这个式子的主要目的就是拉近正样本(同类数据)的距离。

实验结果

除了开头展示的直接提升外,作者还进行了很多分析。从SST-2数据集的[CLS] embedding来看,通过CE(左)和SCL(右)损失训练出来的encoder对正负例的区分能力确实有不少差距:

同时在有噪声的训练数据上SCL鲁棒性会更强(T越高噪声越多):

总结

这篇文章目前正在投稿ICLR2021(都在arxiv上挂了还盲审啥。。),总体的改动比较简单,但对比学习的前景还是挺大的,同时加上SCL损失之后不仅对少样本的情况很有帮助,也能提升模型鲁棒性,相比于对抗学习的计算代价明显要小,还是比较实用的,一起立个flag,复现一波?



参考资料

[1]

A Simple Framework for Contrastive Learning of Visual Representations: https://arxiv.org/abs/2002.05709

[2]

Contrastive Self-Supervised Learning: https://ankeshanand.com/blog/2020/01/26/contrative-self-supervised-learning.html

[3]

对比学习(Contrastive Learning)相关进展梳理: https://zhuanlan.zhihu.com/p/141141365

---

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方"AINLP",进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

欢迎加入预训练模型交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注预训练模型

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
0

相关内容

通过潜在空间的对比损失最大限度地提高相同数据样本的不同扩充视图之间的一致性来学习表示。对比式自监督学习技术是一类很有前途的方法,它通过学习编码来构建表征,编码使两个事物相似或不同
奇点已过?聊聊BERT之后的NLP时代
AI研习社
4+阅读 · 2019年6月6日
BERT-预训练的强大
微信AI
60+阅读 · 2019年3月7日
详细解读谷歌新模型 BERT 为什么嗨翻 AI 圈
人工智能头条
10+阅读 · 2018年10月25日
【学界】用生成对抗网络解决NLP问题:谷歌大脑提出MaskGAN
GAN生成式对抗网络
9+阅读 · 2018年2月1日
何恺明大神的「Focal Loss」,如何更好地理解?
PaperWeekly
10+阅读 · 2017年12月28日
Arxiv
0+阅读 · 2021年1月20日
Arxiv
15+阅读 · 2019年9月11日
Arxiv
7+阅读 · 2018年1月31日
Arxiv
7+阅读 · 2018年1月10日
VIP会员
相关资讯
Top
微信扫码咨询专知VIP会员