专栏首页NewBeeNLP微软ALUM:当语言模型遇到对抗训练

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

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

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

Arxiv访问困难的同学可以后台回复『0001』可便捷获取论文喔

TL;DR

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

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

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

预备知识

BPE编码

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

BPE词表既存在char-level级别的字符,也存在word-level级别的单词。通过BPE得到了更加合适的词表,这个词表可能会出现一些不是单词的组合,但是这个本身是有意义的一种形式。

流程:

  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)训练模型;然后使用虚拟对抗训练(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 -

本文分享自微信公众号 - NewBeeNLP(NewBeeNLP),作者:山竹小果

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 文本分类综述 | 迈向NLP大师的第一步(下)

    本系列文章总结自然语言处理(NLP)中最基础最常用的「文本分类」任务,主要包括以下几大部分:

    NewBeeNLP
  • 芝麻街跨界NLP,没有一个ERNIE是无辜的

    之前发在知乎、AINLP以及CSDN上的预训练模型系列文章,最近打算整理到公号上。另外欢迎大家左下角阅读原文关注我的知乎专栏:【BERT巨人肩膀】

    NewBeeNLP
  • DeepWalk:图网络与NLP的巧妙融合

    最近这段时间一直在做图网络相关,也差不多收尾了,有空整体复盘了下,大致以下几个主题,不过没整理完全哈哈(下次一定

    NewBeeNLP
  • 深度学习: 学习率 (learning rate)

    ωn←ωn−η∂L∂ωnωn←ωn−η∂L∂ωn\omega^{n} \leftarrow \omega^{n} - \eta \frac{\partial ...

    JNingWei
  • 从Pix2Code到CycleGAN:2017年深度学习重大研究进展全解读

    机器之心
  • DL开源框架Caffe | 用训练好的模型对数据进行预测

    一句话理解Caffe: Caffe的万丈高楼(Net)是按照我们设计的图纸(prototxt),用很多砖块(Blob)筑成一层层(Layer)楼房,最后通过某...

    深度学习思考者
  • 交通预见未来(2): 如何使用AutoEncoder自编码器预测客流量

    文章名称:《Traffic Flow Prediction With Big Data: A Deep Learning Approach》

    深度学习与交通大数据
  • 【 CDN 最佳实践】CDN 命中率优化思路

    CDN 在静态资源的加速场景中是将静态资源缓存在距离客户端较近的CDN 节点上,然后客户端访问该资源即可通过较短的链路直接从缓存中获取资源,而避免再通过较长的链...

    java思维导图
  • Java 程序执行过程的内存分析

    注:常量池具有共享的机制,不同类的常量池之间共享数据。比如:Student 类常量池下有个 "老叶"字符串常量,那么当 Test 类中用到"老叶"这个字符串常量...

    帅飞
  • 解决java发送邮件没有主题且乱码

    调试了一下午终于搞定,原来是jar包冲突了。java发送邮件的代码比较简单如下: 关键代码:

    the5fire

扫码关注云+社区

领取腾讯云代金券