微软ALUM:当语言模型遇到对抗训练

NewBeeNLP原创出品node

公众号专栏做者@山竹小果 git


今天分享来自微软最近关于语言模型和对抗训练的工做:
github

  • 论文: Adversarial Training for Large Neural Lang Uage Models
  • 源码:https://github.com/namisan/mt-dnn

Arxiv访问困难的同窗能够后台回复『0001』可便捷获取论文喔 web

TL;DR

本文把对抗训练用到了预训练和微调两个阶段,对抗训练的方法是针对embedding space,经过最大化对抗损失、最小化模型损失的方式进行对抗,在下游任务上取得了一致的效果提高。算法

有趣的是,这种对抗训练方法不只可以在BERT上有提升,并且在RoBERTa这种已经预训练好的模型上也能有所提升,说明对抗训练的确能够帮助模型纠正易错点。微信

  • 方法: ALUM(大型神经语言模型的对抗性训练)
  • 实现:在embedding space添加扰动,最大化对抗损失
  • 应用:任何基于Transformer的语言模型的预训练或微调

预备知识

BPE编码

为了解决词汇表外单词的问题,使用Byte-Pair Encoding(BPE)(Sennrich et al.,2015)或其变体(Kudo and Richardson,2018)将标记划分为子词单元,生成固定大小的子词词汇,以便在训练文本语料库中紧凑地表示单词。app

BPE词表既存在char-level级别的字符,也存在word-level级别的单词。经过BPE获得了更加合适的词表,这个词表可能会出现一些不是单词的组合,可是这个自己是有意义的一种形式。编辑器

流程:svg

  1. 肯定subword词表大小
  2. 统计每个连续字节对的出现频率,并保存为code_file。这个是git中learn-bpe完成
  3. 将单词拆分为字符序列并在末尾添加后缀“ ”,然后按照code_file合并新的subword,首先合并频率出现最高的字节对。例如单词birthday,分割为['b', 'i', 'r', 't', 'h', 'd', 'a', 'y'],查code_file,发现'th'出现的最多,那么合并为['b', 'i', 'r', 'th', 'd', 'a', 'y'],最后,字符序列合并为['birth', 'day']。而后去除'',变为['birth', 'day'],将这两个词添加到词表。这个是apply-bpe完成。
  4. 重复第3步直到达到第2步设定的subword词表大小或下一个最高频的字节对出现频率为1

模型:ALUM

基于几个关键想法:

  1. 扰动embedding空间,优于直接对输入文本应用扰动。
  2. 经过 虚拟对抗训练为标准目标添加正则化项。

其中预训练阶段 ,微调阶段 性能

由于有最大化操做,因此训练昂贵。有利于embedding邻域的标签平滑。

文中观点:

虚拟对抗训练优于传统对抗训练,特别是当标签可能有噪声时。

例如,BERT pretraining使用masked words做为自监督的标签,但在许多状况下,它们能够被其余词取代,造成彻底合法的文本。但BERT中,给到被替换的word的标签均为负。

算法

首先使用标准目标(1)训练模型;而后使用虚拟对抗训练(3)继续训练。

第4-6行为求最大梯度步骤,以找到使对抗性损失最大化的扰动(反局部平滑性)。K越大的近似值越高,但成本更高。为了在速度和性能之间取得良好的平衡,本文实验K=1.

泛化与鲁棒性

文中表示,经过使用ALUM进行对抗性的预训练,可以提升普遍的NLP任务的泛化和鲁棒性(如后述实验结论所示)。以前的研究较多发现,对抗训练会损害泛化能力。

先前关于泛化和鲁棒性之间冲突的工做一般集中在有监督的学习环境中。调和二者的一些初显成果也利用了未标记的数据,例如自训练(Raghunathan等人,2020年)。

此外,假设经过扰动embedding空间而不是输入空间,NLP中的对抗训练可能无心中偏向于流形扰动而不是规则扰动。

什么是流形

流形学习的观点:认为咱们所观察到的数据其实是由一个低维流形映射到高维空间的。因为数据内部特征的限制,一些高维中的数据会产生维度上的冗余,实际上这些数据只要比较低的维度的维度就能惟一的表示。

因此直观上来说,一个流形比如是一个d维的空间,在一个m维的空间中(m>d)被扭曲以后的结果。须要注意的是流形不是一个形状,而是一个空间。举个例子,好比说一块布,能够把它当作一个二维的平面,这是一个二维的空间,如今咱们把它扭一扭(三维空间),它就变成了一个流形,固然不扭的时候,它也是一个流形,欧氏空间是流形的一种特殊状况。

实验

提高泛化能力

  • BERT BASE是使用与Devlin等人相同的设置训练的标准BERT base模型。(即1M步,batch size = 256)。
  • BERT+BASE与BERT BASE类似,不一样之处在于其训练步数为1.6M,与对抗预训练所需时间大体相同(ALUM BERT-BASE)。
  • ALUM BERT-BASE是一个BERT模型,使用与BERT BASE相同的设置进行训练, 但最后的500K步骤使用ALUM。每个对抗训练步骤大约比标准训练步骤 长1.5倍

能够观察到后500k加了ALUM后提高明显。

提高鲁棒性

结合对抗预训练和对抗微调

以前都是在预训练阶段作的对抗,ALUM RoBERTa-LARGE-SMART在预训练和微调阶段均作对抗。

结论

提出了一种通用的对抗性训练算法ALUM:

  • 对抗预训练能够显著 提升泛化能力和鲁棒性
  • ALUM大大提升了BERT和RoBERTa在各类NLP任务中的准确性,而且能够与对抗微调相结合以得到进一步的收益。
  • 将来的发展方向:
    • 进一步研究对抗性预训练在提升泛化和鲁棒性方面的做用;
    • 对抗性训练加速;
    • 将ALUM应用于其余领域。

- END -



全方位解读 | Facebook的搜索是怎么作的? 2020-10-09
炼丹宝典 |  Deep Learning 调参 tricks 2020-09-29
【超详细】一文带你了解RNN家族知识点 2020-09-01





记得把NewBeeNLP设为星标哦




等你在看

本文分享自微信公众号 - NewBeeNLP(NewBeeNLP)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索