点击上方,选择星标,每天给你送干货!


来自:南大NLP

这篇论文来自NAACL2021

01

研究背景及动机

近些年,Transformer[1]逐渐成为了自然语言处理中的主流结构。为了进一步提升Transformer的性能,一些工作通过引入额外的结构或知识来提升Transformer在特定任务上的表现。尽管如此,过参数化(over-parameterization)和过拟合(overfitting)一直是Transformer中的一个显著问题。作为一种正则化技术,Dropout常被用来缓解模型的过拟合问题[2]。和引入额外结构或知识的工作相比,dropout的一个优势是不需要额外的计算开销和外部资源。因此,本文的出发点在于,能否通过融合不同的dropout技术来进一步提升Transformer的性能甚至达到state-of-the-art效果?

为此,我们提出UniDrop技术,从细粒度到粗粒度将三种不同层次的dropout整合到Transformer结构中,它们分别为feature dropout、structure dropout和data dropout 。Feature  dropout (FD),即传统的dropout技术[2],通常应用在网络的隐层神经元上。Structure dropout (SD)是一种较粗粒度的dropout,旨在随机drop模型中的某些子结构或组件。Data dropout (DD)作为一种数据增强方法,通常用来随机删除输入sequence的某些tokens。在UniDrop中,我们从理论上分析了这三层dropout技术在Transformer正则化过程中起到了不同的作用,并在8个机器翻译任务上和8个文本分类任务上验证了UniDrop的有效性。

02

UniDrop

2.1Transformer结构

UniDrop旨在提升Transformer的性能。在UniDrop中,feature dropout和structure dropout的使用与网络结构密切相关。因此,我们简单回顾Transformer的网络结构。

图1:标准Transformer结构和Feature Dropout

如图1(a)所示,Transformer由多个相同的block堆叠而成,每个block包含两个sub-layer,分别为multi-head self-attention layer和position-wise fully connected feed-forward layer,每个sub-layer后都使用了残差连接和层正则(Add&Norm)。

Multi-head AttentionMulti-head attention sub-layer包含多个并行的attention head,每个head通过带缩放的点乘attention将query Q和键值对K、V映射乘输出,如下式所示:

多个head的输出最终被拼接在一起并做线性映射作为最终的multi-head attention输出。

Position-wise Feed-Forward这一层主要包含两个线性映射和一个ReLU激活函数:

2.2Feature Dropout

如前所述,Feature Dropout (FD)即传统的dropout技术[2],可以以一定的概率随机抑制网络中的某些神经元。实际上,在标准的Transformer实现中,每个sub-layer后都默认配置了dropout。除此之外,Transformer也在multi-head attention和feed-forward network的激活函数层添加了dropout,本文将探索它们对Transformer性能的影响:

FD-1 (attention dropout):根据公式(1),在multi-head attention中,我们可以获得attention权重A=QKT,feature dropout FD-1被应用在attention权重A上。

FD-2 (activation dropout)FD-2被应用在feed-forward network sub-layer两层线性变换间的激活函数上。

除了上面已有的feature dropout,我们在预实验中发现Transformer仍有过拟合的风险。因此,我们额外提出两种feature dropout添加到Transformer结构中:

FD-3 (query, key, value dropout):FD-1直接应用在attention权重A上,表示token i和token j之间的connection有可能被drop,一个更大的FD-1值意味着更大的概率失去sequence中一些关键的connection。为了缓解这种风险,我们在attention之前的query Q、key K和value V上分别添加了dropout。

FD-4 (output dropout):我们在softmax分类的线性映射前也添加了dropout。具体而言,对sequence2sequence任务,我们将FD-4添加到Transformer decoder中,对于文本分类任务我们将FD-4添加到Transformer encoder中。

2.3Structure Dropout

为了提升Transformer的泛化性,之前的工作已经提出了两种Structure Dropout (SD),分别是LayerDrop[3]和DropHead[4]。DropHead通过随机舍弃一些attention head,从而防止multi-head attention机制被某些head主导,最终提升multi-head attention的泛化性。相比之下,LayerDrop是一种更高级别的结构dropout,它能随机舍弃Transformer的某些层,从而直接降低Transformer中的模型大小。通过预实验分析,我们将LayerDrop添加到我们的UniDrop中。

2.4Data Dropout

Data Dropout (DD)以一定的概率p随机删除输入序列中tokens。然而,直接应用data dropout很难保留原始高质量的样本,对于一个长度为n的sequence,我们保留住原始sequence的概率为(1-p)n,当n较大时,这个概率将会非常低。失去原始高质量样本对很多任务都是不利的。为了保留原始高质量的样本,同时又能利用data dropout进行数据增强,我们在UniDrop中提出了一个2-stage data dropout方案。对于给定的sequence,我们以一定的概率 pk保留原始的样本,当data dropout被应用时(概率为1- pk),我们以预定的概率p来随机删除序列中的tokens。

2.5UniDrop整合

最终,我们将上面三种不同粒度的dropout技术集成到我们的UniDrop中,并从理论上分析了feature dropout、structure dropout、data dropout能够正则Transformer的不同项并且不能相互取代,具体分析可参考论文。Figure 2是UniDrop的简单示例。

图2:UniDrop示例

03

实验与分析

我们在序列生成(机器翻译)和文本分类两个任务上来验证UniDrop的性能。

3.1神经机器翻译

我们在IWSLT14数据集上进行了机器翻译实验,共4个语言对,8个翻译任务,baseline为标准的Transformer结构,实验结果如表1所示:

表1:不同模型在IWSLT14翻译任务上的结果

可以看到,相比于标准的Transformer,我们的UniDrop在所有任务翻译任务上都取得了一致且显著的提升。为了验证UniDrop中每种dropout的作用,我们进行了ablation study实验,也在标准Transformer添加单一的dropout去验证它们的性能。从结果看,FD、SD和DD都能在一定程度上提升Transformer的性能,并能够协同工作,最终进一步提升Transformer的泛化性。

为了进一步验证UniDrop的优越性,我们也在广泛被认可的benchmarkIWSLT14 De→En翻译任务上和其他系统进行了对比。这些系统从不同的方面提升机器翻译,如训练算法设计(Adversarial MLE)、模型结构设计(DynamicConv)、引入外部知识(BERT-fused NMT)等。可以看到,我们的Transformer+UniDrop仍然显著超过了其他系统。

表2:不同系统在IWSLT14 De→En翻译任务上的表现

3.2文本分类

对于文本分类任务,我们以RoBERTaBASE作为backbone,在4个GLUE数据集上和4个传统的文本分类数据集上进行了实验,结果如表3和表4所示:

表3:不同模型在GLUE tasks (dev set)上的准确率

表4:不同模型在传统文本分类任务上的准确率

可以看到,作为一个强大的预训练模型,RoBERTaBASE显著超过了其他方法。即使如此,UniDrop仍然能够进一步提升RoBERTaBASE的性能,这进一步验证了UniDrop对Transformer模型的有效性。

3.3分析

为了展现UniDrop能够有效防止Transformer过拟合,我们画出了不同模型在IWSLT14 De→En翻译验证集上的loss曲线,如图3所示:

图3:不同模型在IWSLT14 De→En翻译上的dev loss

可以看到,标准的Transformer结构随着训练轮数的增加,很容易出现过拟合现象。相比之下,FD、SD、DD都在一定程度上缓解了Transformer的过拟合问题。在所有对比模型中,我们的UniDrop取得了最低的dev loss,并且dev loss能持续下降,直到训练结束。综合来看,UniDrop在预防Transformer过拟合问题上取得了最好的表现。

此外,我们也进行了细粒度的ablation study实验来探究不同的feature dropout以及我们2-stage data dropout对Transformer性能的影响,结果如表5所示:

表5:Ablation Study

可以看到,FD-3比FD-1带来更多的提升,这也验证了我们之前的分析,仅使用FD-1对提升multi-head attention的泛化性来说是不够的。另外,表5表明我们提出的2-stage data dropout策略对提升性能是有帮助的,这体现了保留原始高质量样本的必要性。

04

总结与展望

过拟合是Transformer结构中一个常见的问题,dropout技术常被用来防止模型过拟合。本文中,我们提出了一种集成的dropout技术UniDrop,它由细粒度到粗粒度,将三种不同类型的dropout(FD、SD、DD)融合到Transformer结构中。我们从理论上分析UniDrop中的三种dropout技术能够从不同的方面防止Transformer过拟合,在机器翻译和文本分类任务上的实验结果也体现了UniDrop的有效性和优越性,更重要的,它不需要额外的计算开销和外部资源。更多的细节、结果以及分析请参考原论文。

注:本工作由吴震在MRSA实习期间完成。

05

Reference

[1] Vaswani, Ashish, et al. "Attention is all you need." arXiv preprint arXiv:1706.03762 (2017).

[2] Srivastava, Nitish, et al. "Dropout: a simple way to prevent neural networks from overfitting." The journal of machine learning research 15.1 (2014): 1929-1958.

[3] Fan, Angela, Edouard Grave, and Armand Joulin. "Reducing transformer depth on demand with structured dropout." arXiv preprint arXiv:1909.11556 (2019).

[4] Zhou, Wangchunshu, et al. "Scheduled DropHead: A Regularization Method for Transformer Models." arXiv preprint arXiv:2004.13342 (2020).

说个正事哈

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

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

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

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

整理不易,还望给个在看!

UniDrop:一种简单而有效的Transformer提升技术相关推荐

  1. IDEA MAVEN项目打包成jar包的两种简单方式

    IDEA MAVEN项目打包成jar包的两种简单方式 准备了两个打包方法 1.IEDA自带打包方法 2.用Maven插件maven-shade-plugin打包 IDEA自带打包 适用于任何打包,稍微 ...

  2. CSS里总算是有了一种简单的垂直居中布局的方法了

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head><me ...

  3. ICCV2021 Oral SimROD:简单高效的数据增强!华为提出了一种简单的鲁棒目标检测自适应方法...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨小马 来源丨我爱计算机视觉 ▊ 写在前面 本文提出了一种简单有效的鲁棒目标检测无监督自适应方法( ...

  4. 英文字典设计c语言代码,一种简单的英文词典排版系统

    <一种简单的英文词典排版系统>由会员分享,可在线阅读,更多相关<一种简单的英文词典排版系统(20页珍藏版)>请在人人文库网上搜索. 1.中国地质大学(武汉)C语言课程设计论文学 ...

  5. 算法:三种简单排序算法

    排序算法比較常见的有:冒泡排序.简单选择排序.直接插入排序:希尔排序.堆排序.归并排序和高速排序算法等. 今天先学习一下前面三种比較简单的算法.排序的相关概念: ①排序的稳定性:两个或多个元素相等.排 ...

  6. EasyBridge:一种简单的js-bridge设计方案

    EasyBridge是一个简单易用的js-bridge的工具库,提供了日常开发中,JavaScript与Java之间通讯的能力,与其他常见的js-bridge工具库实现方案不同,EasyBridge具 ...

  7. 有没有一种简单的方法可以按值删除列表元素?

    a = [1, 2, 3, 4] b = a.index(6)del a[b] print a 上面显示了以下错误: Traceback (most recent call last):File &q ...

  8. java判断回文字符串几种简单的实现

    11年it研发经验,从一个会计转行为算法工程师,学过C#,c++,java,android,php,go,js,python,CNN神经网络,四千多篇博文,三千多篇原创,只为与你分享,共同成长,一起进 ...

  9. php xml对象解析_php解析xml 的四种简单方法(附实例)

    XML处理是开发过程中经常遇到的,PHP对其也有很丰富的支持,本文只是对其中某几种解析技术做简要说明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument. ...

  10. 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】...

    页面传值--最佳答案6种方式: 一. 使用QueryString变量 QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全 ...

最新文章

  1. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(双分类变量分组:色彩配置、添加箱图、位置参数调整)实战
  2. java中怎样避免方法被重写
  3. C#编程语言之Unix时间戳转换为本地时间的方法
  4. 【Clickhouse】Dockerfile 文件,加入 mysql
  5. ubuntu安装完后需进行必要的软件更新
  6. SameNameFile 比较两个文件夹是否同名
  7. 关于JavaBean
  8. 07 | 卷积神经网络:给你的模型一双可以看到世界的眼睛
  9. 15款提高表格操作的jQuery插件
  10. hadoop jps 没有命令_【问题解决方案】之 hadoop 用jps命令后缺少namenode的问题
  11. 间接寻址级别不同_单片机指令系统与寻址方式
  12. kdj值应用口诀_KDJ买卖绝学!背熟它短线选股不用愁
  13. rk3399固件烧录方法介绍
  14. 人力资源学python有意义吗-给还准备继续做HR的人提个醒!
  15. 关于WebBrowser(浏览器)控件的调用
  16. 基于SSM框架的公交车调度管理系统
  17. 基于衰减因子和动态学习的改进樽海鞘群算法
  18. Linux 挂载 IP SAN
  19. endnote正版软件多少钱_销售endnote软件到底价格可以购买 保证正版软件
  20. 淘宝零食专栏分析(淘宝爬虫+数据分析)

热门文章

  1. 今天晴儿和老佛爷又一起上台了
  2. SpringMVC 工作流程
  3. Linux系统中用DNW向ARM开发板下载程序
  4. 快速傅立叶变换_FFT
  5. 30天敏捷结果(24):恢复你的精力
  6. python webdriver 登录163邮箱发邮件加附件, 外加数据和程序分离,配置文件的方式...
  7. Sql优化之Mysql表分区
  8. 【java】doc转pdf
  9. [bzoj1269]文本编辑器editor [bzoj1500]维修数列
  10. ubuntu 切换java环境,配置单独的用户环境