G-Transformer for Document-level Machine Translation
摘要
文档级MT模型仍然不能令人满意。现有的工作将翻译单元从单句扩展到多个句子。然而,研究表明,当我们进一步将翻译单元扩大到整个文件时,对Transformer的有监督训练可能会失效。在本文中,我们发现这种失效不是由过拟合引起的,而是在训练期间关注到局部点。我们的分析表明,目标到源注意力的复杂性增加是失效的原因。作为一种解决方案,我们提出了G-Transformer,将位置假设作为归纳偏差引入Transformer,从而减少了从目标到源的注意力假设空间。实验表明,G-Transformer比Transformer收敛得更快,更稳定,并在三个benchmark数据集,有预训练和无预训练配置上都达到新的最先进的BLEU分数。
1.介绍
文档级机器翻译(MT)已受到越来越多研究人员的关注。与句子级MT相比,这是一个更实际的有用的任务,因为MT应用中的典型输入是文本文档而不是单个句子。文档级MT和句子级MT之间的主要差异是,对于前者,在翻译每个句子时应考虑更大间隔的句子上下文,这包括话语结构,如首语重复,词汇衔接等。研究表明,人类翻译人员在进行文档翻译时都考虑了这种情况。尽管神经模型在句子级MT上实现较好的表现,但文档级MT的表现仍然不能令人满意。
现有方法主要分为两类:
第一类使用序列到序列神经模型逐句翻译文档。文档级上下文通过引入额外的上下文编码器来集成句子,这种模型的结构如图1(a)所示。这些方法遭受了两个限制。首先,需要单独编码上下文以翻译每个句子,这增加了运行复杂度。其次,也更重要的是,在同一编码模块中,不能在当前句子及其文档上下文之间进行信息交换。
第二类将翻译单元从单个句子扩展到多个句子甚至整个文档。最近,已经表明,当翻译单元从一个句子增加到四个句子时,性能将会提高。但是,当整个文档被编码为单个单元进行序列转换时,有监督训练会失效。作为解决方案,大规模的预训练或数据增强已被使用,从而提高性能。这些方法如图1(b)所示。 这种方法的一个限制是由于数据增强的必要性,它们需要更多的训练时间。
直观地,将整个输入文档编码为单个单元允许在翻译当前句子时最佳地集成上下文信息。但是,一些工作已经研究了其潜在原因,即为什么难以训练这种文档级NMT模型。一个线索是,随着输入序列变大,输入变得更加稀疏。为了获得更多理解,我们对Transformer的输入长度,数据大小和模型尺寸的影响进行了专门的实验(第3节),实验发现,Transformer模型在使用长序列,小型数据集,大模型尺寸进行训练时,变得难以收敛。我们进一步发现,对于失败的情况,模型在训练期间会陷入局部最小值。在这种情况下,来自解码器到编码器的注意力权重是扁平的,具有较大的熵值。这可能是因为较大的输入序列增加了关注局部跨度以生成每个目标字符翻译的挑战。换句话说,这增加了目标对源注意力的假设空间。
基于上述观察,我们通过使用指导机制来约束自注意力和目标到源注意力去关注局部上下文。如图1©所示,虽然我们仍然将输入文档作为一个单元进行编码,但是组标签① ② ③被分配给句子以区分其位置。在翻译每个句子时将目标句子标签与源句子的标签匹配,以便指导目标到源注意力,从而减少了假设注意力空间。直观地,组标签作为对注意力机制的限制,这对于区分当前句子及其上下文句子有用。因此,我们的模型名为G-Transformer,因此可以将其作为图1(a)和图1(b)中的方法的组合来分别翻译句子。
我们在三个常用的文档级MT数据集中评估了我们的English-German翻译,这些数据集覆盖了TED talks,News和Europarl。实验表明,G-Transformer比不同设置的Transformer收敛得更快,更稳定,从而在无预训练和有预训练设置下都获得最先进的结果。据我们所知,我们是第一个实现一个真正的文档级翻译模型。我们在https://github.com/baoguangsheng/g-transformer中发布了我们的代码和模型。
2.实验设置
3.Transformer and Long Inputs
4. G-Transformer
G-Transformer的示例如图6所示,其中输入文档包含超过3个句子。从图中可以看出,G-Transformer通过使用组标签增强输入和输出来扩展Transformer。也就是说,每个字符被分配了一个组标签,来指示其所属句子的索引。在确定地分配源组标签的同时,需要根据生成的句子是否完整,动态分配目标标签。从第一个token开始,目标单词从其前一个单词复制组标签,除非前一个字符是</s></s></s>。标签作为一种局部约束,鼓励目标到源的注意力去关注当前正在被翻译的句子。
正式地,对于源文档XXX和目标文档YYY,Transformer的概率模型可以写为:
Y^=argmaxYP(Y∣X),(1)\hat Y=\mathop{argmax}\limits_{Y}~P(Y|X),\tag{1}Y^=Yargmax P(Y∣X),(1)
而G-Transformer被扩展为:
Y^=argYmaxY,GYP(Y,GY∣X,GX),(2)\hat Y=arg_{Y}\mathop{max}\limits_{Y,G_Y}P(Y,G_Y|X,G_X),\tag{2}Y^=argYY,GYmaxP(Y,GY∣X,GX),(2)
其中,GXG_XGX和GYG_YGY表示组标签的两个序列:
GX={gi=kifwi∈sentkXelse0}∣i=1∣X∣,GY={gj=kifwj∈sentkYelse0}∣j=1∣Y∣,(3)\begin{array}{cc} G_X=\{g_i=k~if~w_i\in~sent^{X}_k~else~0\}|^{|X|}_{i=1},\\ G_Y=\{g_j=k~if~w_j \in~sent^Y_k~else~0\}|^{|Y|}_{j=1}, \end{array}\tag{3}GX={gi=k if wi∈ sentkX else 0}∣i=1∣X∣,GY={gj=k if wj∈ sentkY else 0}∣j=1∣Y∣,(3)
其中,sentksent_ksentk代表XXX或YYY中的第kkk个句子。对于图6中所示的示例,GX={1,...,1,2,...,2,3,...,3,4,...}G_X=\{1,...,1,2,...,2,3,...,3,4,...\}GX={1,...,1,2,...,2,3,...,3,4,...}和GY={1,...,1,2,...,2,3,...,3,4,...}G_Y=\{1,...,1,2,...,2,3,...,3,4,...\}GY={1,...,1,2,...,2,3,...,3,4,...}。
组标签通过干扰我们将在下一节中展示的注意力机制来影响自回归翻译过程。在G-Transformer中,我们使用组标签序列GXG_XGX和GYG_YGY表示XXX和YYY之间的对齐,以及用于生成XXX和YYY的局部上下文表示。
4.1 Group Attention
注意力模块可以被视为映射query和一组key-value对的函数。query,key,value和输出都是向量。通过加权具有相应注意力权重的value来计算输出,而注意力权重通过query和key来计算。正式地,给定一组query,key和value,将它们分别包装到矩阵Q,K和V中。我们计算矩阵输出为:
Attention(Q,K,V)=softmax(QKTdk)V,(4)Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V,\tag{4}Attention(Q,K,V)=softmax(dkQKT)V,(4)
其中dkd_kdk是key矢量的维度。
注意力允许模型专注于不同的位置。此外,多头注意(MHA)允许模型收集来自不同表示子空间的信息:
MHA(Q,K,V)=Concat(head1,...,headh)WO,headi=Attention(QWiQ,KWiK,VWiV),(5)\begin{array}{cc} MHA(Q,K,V)=Concat(head_1,...,head_h)W^O,\\ head_i=Attention(QW^Q_i,KW^K_i,VW^V_i), \end{array}\tag{5}MHA(Q,K,V)=Concat(head1,...,headh)WO,headi=Attention(QWiQ,KWiK,VWiV),(5)
其中WOW^OWO,WiQW^Q_iWiQ,WiKW^K_iWiK和WiVW^V_iWiV的投影是参数矩阵。
我们使用组标签来更新方程4,并将其命名为组注意力(GroupAttn)。除了输入QQQ,KKK和VVV之外,还涉及两个组标签输入的序列,其中GQG_QGQ对应于QQQ,GKG_KGK对应于KKK。因此我们有:
args=(Q,K,V,GQ,GK),GroupMHA(args)=softmax(QKTdk+M(GQ,GK))V,(6)\begin{array}{cc} args=(Q,K,V,G_Q,G_K),\\ GroupMHA(args)=softmax(\frac{QK^T}{\sqrt{d_k}}+M(G_Q,G_K))V, \end{array}\tag{6}args=(Q,K,V,GQ,GK),GroupMHA(args)=softmax(dkQKT+M(GQ,GK))V,(6)
其中M(⋅)M(·)M(⋅)作为注意力MASK函数来工作,用于排除句子外的所有字符。具体地,M(⋅)M(·)M(⋅)给出一个大负数γγγ,使得在Softmax后,当前字符关注的不相同组标签的注意力权重接近0。
M(GQ,GK)=min(1,abs(GQIKT−IQGKT))∗γ,(7)M(G_Q,G_K)=min(1,abs(G_QI^T_K-I_QG^T_K))*\gamma,\tag{7}M(GQ,GK)=min(1,abs(GQIKT−IQGKT))∗γ,(7)
其中IKI_KIK和IQI_QIQ是所有维度上值为1的常数向量,IKI_KIK具有与GKG_KGK相同的维度,IQI_QIQ具有与GQG_QGQ相同的维度。常数值γγγ通常可以是−1e8-1e8−1e8。
类似于方程5,我们使用group多头注意力:
args=(Q,K,V,GQ,GK),GroupMHA(args)=Concat(head1,...,headh)WO,(6)\begin{array}{cc} args=(Q,K,V,G_Q,G_K),\\ GroupMHA(args)=Concat(head_1,...,head_h)W^O, \end{array}\tag{6}args=(Q,K,V,GQ,GK),GroupMHA(args)=Concat(head1,...,headh)WO,(6)
其中,
headi=GroupAttn(QWiQ,KWiK,VWiV,GQ,GK),(9)head_i=GroupAttn(QW^Q_i,KW^K_i,VW^V_i,G_Q,G_K),\tag{9}headi=GroupAttn(QWiQ,KWiK,VWiV,GQ,GK),(9)
其中,WOW^OWO,WiQW^Q_iWiQ,WiKW^K_iWiK和WiVW^V_iWiV是参数矩阵。
Encoder。对于Encoder每一层,组多头注意力模块用于自注意力,为key和value分配相同的组标签序列GQ=GK=GXG_Q=G_K=G_XGQ=GK=GX。
Decoder。我们在Decoder每一层的自注意力部分使用一个组多头注意力模型,而交叉注意力使用另一个组多头注意力模型。类似于编码器,我们将相同的组标签序列分配给自注意力的键和值,GQ=GK=GXG_Q=G_K=G_XGQ=GK=GX,但在交叉注意力上使用不同的组标签序列GQ=GYG_Q=G_YGQ=GY和GK=GXG_K=G_XGK=GX 。
Complexity。考虑具有MMM个句子和N个字符的文档,其中每个句子平均包含N/MN/MN/M个字符。Transformer中自注意力和交叉注意力的复杂性都是O(N2)O(N^2)O(N2)。相比之下,G-Transformer中的Group注意力的复杂性是O(N2/M)O(N^2/M)O(N2/M),因为注意力被限制在局部句子中。从理论上讲,由于句子的平均长度往往是恒定的,因此Group注意的时间和空间复杂性大约是O(N)O(N)O(N),这使得在非常长的输入上进行训练和推断变得可行。
4.2 Combined Attention
我们仅在较低层上使用Group注意力,以获取局部句子表示,并在顶层上使用组合注意力,以集成局部和全局上下文信息。我们使用等式5中标准的来获取全局上下文,并命名为全局多头注意力(GlobalMHA)。通过使用一个门控模块来组合使用组注意力和全局注意力:
HL=GroupMHA(Q,K,V,GQ,Gk),HG=GlobalMHA(Q,K,V),g=sigmoid([HL,HG]W+b),H=HL⊙g+HG⊙(1−g),(10)\begin{array}{cc} H_L=GroupMHA(Q,K,V,G_Q,G_k),\\ H_G=GlobalMHA(Q,K,V),\\ g=sigmoid([H_L,H_G]W+b),\\ H=H_L\odot g+H_G\odot (1-g), \end{array}\tag{10}HL=GroupMHA(Q,K,V,GQ,Gk),HG=GlobalMHA(Q,K,V),g=sigmoid([HL,HG]W+b),H=HL⊙g+HG⊙(1−g),(10)
其中WWW和bbb是一个线性投影参数,⊙\odot⊙表示逐元素乘法。
先前的研究表明,Transformer的下层捕获了更多的局部句法关系,而较高的层数代表更长的距离关系。基于这些发现,我们仅在顶层上使用了组合注意,以集成局部和全局上下文。 通过这种设计,在较低层上,句子彼此隔离,而在顶部层上,则启用相互交互。我们的实验表明,具有全局注意力的前2层足以用于文件级NMT,并且既不有帮助也没有损害性能。
4.3 Inference
在解码期间,我们根据预测的字符生成组标签序列GYG_YGY,从第一个<S><S><S>上的1开始,并且在每个</s></ s></s>之后增加1。我们使用集束搜索并在每个句子上应用最大长度约束。我们使用5的默认集束大小来对整个文档实现一个集束搜索过程。
G-Transformer for Document-level Machine Translation相关推荐
- 文献阅读(60)ACL2021-Attention Calibration for Transformer in Neural Machine Translation
本文是对<Attention Calibration for Transformer in Neural Machine Translation>一文的浅显翻译与理解,如有侵权即刻删除. ...
- 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 Workshop on Machine Translation (WMT)
自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 Workshop on Machine Translation (WMT) 目录 Machine transduc ...
- Survey of Low-Resource Machine Translation阅读笔记
文章目录 1 Introduction 2 Data Sources 2.1 Searching Existing Data Sources 2.2 Web-crawling for Parallel ...
- 《Effective Approaches to Attention-based Neural Machine Translation》—— 基于注意力机制的有效神经机器翻译方法
目录 <Effective Approaches to Attention-based Neural Machine Translation> 一.论文结构总览 二.论文背景知识 2.1 ...
- 【Paper】Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation
论文原文:PDF 论文年份:2014 论文被引:11398(2020/11/08) 18225(2022/03/26) 论文作者:Kyunghyun Cho et.al. 文章目录 Abstract ...
- Bridging the Gap between Training and Inference for Neural Machine Translation翻译
Bridging the Gap between Training and Inference for Neural Machine Translation 翻译 原文链接:https://arxiv ...
- 论文阅读——Automatic Testing and Improvement of Machine Translation
https://arxiv.org/pdf/1910.02688.pdf 机器翻译的自动测试和改进 Github:https://github.com/zysszy/TransRepair(无代码) ...
- 机器翻译与编码-解码模型 Machine Translation and Encoder-Decoder Models
目录 Chapter11 机器翻译与编码-解码模型 (Machine Translation and Encoder-Decoder Models) 11.1 语言差异与类型学 (Language D ...
- 论文阅读(三):Text2Sign: Towards Sign Language Production using Neural Machine Translation and GAN
Abstract 概述:我们提出了一种新的方法,利用最近的发展神经机器翻译(NMT),生成对抗性网络(GANs)和运动生成来生成手语.我们的系统能够从口语句子中生成手语视频.与当前依赖于大量注释数据的 ...
- [论文阅读]Neural Machine Translation By Jointly Learning to Align and Translate
文章目录 前言 摘要 一.神经机器翻译 1.机器翻译 2.基于RNN的Encoder-Decoder架构 二.文章贡献 三.模型架构 1.译码器:整体概述 2.编码器:用于注释序列的双向RNN 四.实 ...
最新文章
- Tomcat的配置及优化
- POST和PUT HTTP REQUEST有什么区别?
- linux重装系统后 70-persistent-net.rules 不能删除解决
- python程序执行时间
- 宏基微型计算机c650使用方法,c650卧式车床的控制系统的pc控制改造毕业设计正文.doc...
- LeetCode——BFS
- h5活动是什么意思_深度|场景赋能H5,365天让保险线上拓客更广更容易
- 面试题 php随机获取概率结果
- 关于JAVA匿名内部类,回调,事件模式的一点讨论
- php %3c%3c%3cxml 报错,Web for Pentester XXE解析
- SpringCloud学习笔记003---服务提供者和服务消费者
- Linux压缩文件与解压文件(*.zip)
- python列表的排序方法_Python 列表 sort() 方法
- 列出选定月份的时间序列
- Python成长之路第一篇(1)__字符串初识
- 解决酷狗音乐缓存文件kgtemp文件无法播放的问题
- code 128 字体扫描不可识别
- C语言scanf函数详细解释
- 【OpenFOAM】学习module1
- opencv 裁剪 java_OpenCV3 Java图像裁剪(Trimming Rect)