神经机器翻译的多语言去噪预训练

关键词

神经机器翻译(Neural machine translation)

神经机器翻译是一种利用深度学习模型来实现自动翻译的技术。与传统的基于规则或统计的机器翻译方法不同,神经机器翻译致力于整个翻译过程的端到端学习,这意味着它可以直接从源语言文本映射到目标语言文本,而不需要人工编写的规则。神经机器翻译的关键优势在于其能够捕捉到语言之间复杂的依赖关系和模式,提供流畅且自然的翻译结果。

Transformer

Transformer模型是一种基于自注意力机制的深度学习模型,其核心思想是通过自注意力机制直接捕捉序列内部的远距离依赖,从而有效提升了模型处理长序列数据的能力。

BERT

BERT主要用于自然语言理解(NLU)任务。它基于Transformer的编码器架构,通过双向训练语言模型来更好地理解语言上下文。BERT通过大规模的语料库进行预训练,然后进行微调以用于各种NLP任务。

GPT

GPT系列模型是自回归语言模型,主要通过预训练一个大型Transformer解码器来学习语言的生成能力。GPT在预训练阶段使用单向语言模型任务,即给定一系列单词,预测下一个单词。

与BERT不同,GPT注重于生成文本,而BERT注重于理解文本。

BART

BART结合了BERT的双向编码器和GPT的自回归解码器的特点,建立在标准的seq2seq Transformer 模型的基础之上,通过对输入文本进行扰动(例如,删除词汇、重新排序句子等),然后训练模型去重建原始文本。

(预训练有两个阶段(1)文本被任意噪声函数破坏,(2)学习seq2seq模型来重建原始文本。)

这种方式让BART既能够理解文本内容,又能生成文本,使其适用于文本生成和理解的任务,如机器翻译、文本摘要。

mBART

mBART是第一个通过对多种语言的完整文本进行降噪来预训练一个完整的seq2seq模型的方法。mBART 通过将BART应用于跨多种语言的大规模单语言语料库来训练。输入的文本通过mask短语和换句进行噪声化,并学习一个单一的Transformer模型来恢复文本。mBART能够实现新类型的跨语言对迁移。例如,对一种语言对(如韩语-英语)的双文本进行微调,就可以创建一个模型,该模型可以从单语言预训练集(如意大利语-英语)中的所有其他语言进行翻译,而无需进一步的训练。

image-ghke.png

这个图片展示了一个双向编码器(Bidirectional Encoder)的简化模型。在这个模型中,双向编码器能够接受输入序列(在此图中为“A-C-E”),并为序列中的每个元素(例如词或字母)生成输出(“B”和“D”)。

这里的关键点是双向性。例如,生成输出“B”时,编码器会考虑“A”和“C”(及可能的"E",如果这是序列中间的点),而在传统的单向模型中,生成“B”的预测仅考虑“A”。

在BERT中,这种双向编码器允许模型更好地理解语言中的上下文,因为它能够同时考虑到每个词前后的信息。这是BERT能够成功处理多种复杂语言理解任务的关键所在。

这个图片展示的是一个自回归解码器(Autoregressive Decoder)的简化模型。它依次生成序列的每个元素,每一步都会考虑到所有前面已生成的序列来生成下一个元素。

GPT基于这样的自回归解码器来生成连贯且有意义的文本。

这张图片描绘的是一个结合了双向编码器和自回归解码器的神经网络模型结构。

它使用双向编码器(类似于BERT的编码器)和自回归解码器(类似于GPT的解码器)。这个结构使得BART能够不仅生成文本,也能够理解和修改文本,

BART是一个encoder-decoder的结构,其编码器端的输入是加了噪音的序列,解码器端的输入是右移的序列,解码器端的目标是原序列。模型设计的目的很明确,就是在利用编码器端的双向建模能力的同时,保留自回归的特性,以适用于生成任务。

BART

BART的结构

BART的结构就是一个BERT+GPT的结构,但是有点不同之处在于(也是作者通篇在强调的),相对于BERT中单一的噪音类型(只有简单地用[MASK] token进行替换这一种noise),BART在编码器端尝试了多种噪音。其原因和目的也很简单:

BERT的这种简单替换导致的是编码器端的输入携带了有关序列结构的一些信息(比如序列的长度等信息),而这些信息在文本生成任务中一般是不会提供给模型的。
BART采用更加多样的噪音,意图是破坏掉这些有关序列结构的信息,防止模型去“依赖”这样的信息。

Pre - Training BART

image-gyci.png

Token Masking: 就是BERT的方法----随机将token替换成[MASK] 训练模型推断单个token
Token Deletion: 随机删去token 训练模型推断单个token及其位置
Sentence Permutation: 将一个document的句子打乱 训练模型推理前后句关系
Document Rotation: 从document序列中随机选择一个token,然后使得该token作为document的开头 训练模型找到document开头

Text Infilling: 随机将一段连续的token(称作span)替换成一个[MASK],span的长度服从 λ=3的泊松分布。注意span长度为0就相当于插入一个[MASK]。 训练模型推断 一段Span对应多少token

Fine - Tuning BART

Sequence Classification Task(序列分类任务)

将该序列同时输入给编码器端和解码器端,然后取解码器最后一个token对应的最终隐藏状态作为标签,输入给一个线性多分类器。注意在序列的最后要加一个token,保证seq2seq模型输出的标签包含序列中每一个token的信息(因为解码器的输入是右移的,不这样做的话标签将不包含最后一个token的信息)

image-ziin.png

Token Classification Task

Sequence Generation Task

Machine Translation

将BART的编码器端的嵌入层替换成随机初始化编码器——randomly initialized encoder,新的编码器也可以用不同的词汇表。通过新加的编码器,我们可以将新的语言映射到BART能解码到英语(假设BART是在English的语料上进行的预训练)的空间。

image-hxch.png

不同预训练目标的比较

不同的预训练目标有:

GPT: (Auto-Regressive) Language model
XLNET: Permuted Language Model
BERT: Masked Language Model
UniLM: Multitask Masked Language Model
MASS: Masked Seq-to-Seq

对比实验涉及的下游任务有:

SQuAD: 维基百科段落的抽取式问答任务。 答案是从给定文档上下文中提取的文本范围。
MNLI: 将2个句子连在一起输入编码器和解码器(中间加上[EOS]表示隔开),模型输出的是两个句子之间的关系,是典型的序列分类问题。
ELI5: 抽象的问答,将context和question连在一起输入,模型输出抽象摘要文本。
XSum: 新闻摘要生成任务
ConvAI2: 对话生成任务
CNN/DM:摘要生成任务

对比结果

image-quqs.png

预训练方法的性能因任务而异,预训练方法的有效性高度依赖于任务。例如,简单的语言模型(GPT)实现了最好的 ELI5 性能,但 SQUAD 结果最差

双向编码器对SQuAD至关重要。

ELI5 数据集是一个离群点,其复杂度远高于其他任务,也是其他模型表现优于 BART 的唯一生成任务。纯语言模型的表现最好,这表明当输出与输入只有松散的联系时,BART 的效果较差。

BART 取得了最稳定的强劲表现。除了 ELI5 之外,使用文本填充的 BART 模型在所有任务上都表现良好。

从实验中看到, 使用Text Infilling的效果非常好, 只使用Document Rotation和Sentence Shuffling的效果比较差. 并且, 自回归式的模型有利于解决生成类任务.

大规模预训练

当预训练扩展到大批量和语料库时,下游性能可以显著提高。因此,使用了与RoBERTa模型相同的规模来训练BART。

预训练了一个大型模型,编码器和解码器各有12层,隐藏层大小为1024,批大小为8000,训练了50万步。

image-wcsl.png

RoBERTa和BART的表现相似, 但是BART能够在不牺牲性能的情况下将任务扩展到生成任务上, 这对BART来说是一个独天得厚的优势.

在摘要任务上的实验结果如下:

image-pxum.png

两个标准汇总数据集的结果。 BART 优于其他的模型,在更抽象的数据集上获得了大约 6 个点的收益

显示了 BART 生成的示例摘要。示例取自创建预训练语料库后发布的 WikiNews 文章,以消除模型训练数据中存在所描述事件的可能性。

在对话任务上的结果如下:

image-ivsr.png

抽象问答数据集上结果如下:

image-vrei.png

在机器翻译任务上结果如下:

image-rbxw.png

Baseline是标准Transformer. Fixed BART和Tuned BART分别代表单向翻译和使用反向翻译的BART. 没有反向翻译的BART效果不太好, 可能涉及到过拟合, 使用反向翻译后应该增强了泛化能力, 效果得到了改善.

mBART

mBART(Multilingual Bidirectional and Auto - Regressive Transformers)是BART的多语言版本, 用于处理不同语言之间的机器翻译问题.

使用CC语料库来预训练BART模型。

image-vdoy.png

对从CC语料库中提取的25种语言进行预训练。CC25包含了不同语言,文本数量各不相同。

为了重新均衡语料库,对于每种语言i,按照比例λi进行采样:

image-gadr.png

Pi为CC25中每种语言的比例。使用平滑参数α=0.7。

使用Sentence Piece模型对包括25万个子词标记的完整CC数据进行token化。虽然并非所有语言都用于预训练,但这种token化支持在其他语言上进行微调。

image-gult.png

使用标准的Seq2Seq Transformer架构,在16个头(680M参数)上有12层编码器和12层解码器,隐藏层大小为1024。在编码器和解码器上都加入了一个额外的层归一化。在尝试很多次后,发现在FP16的精度下可以稳定训练。

目标是最大化 θ。其中g是噪声函数, X 是语言 i 的实例,分布 P 由 Seq2Seq 模型定义。

Pre - Training mBART

预训练阶段延续了BART的做法, 仍然采用去噪自动编码器的方法令mBART的每条数据在单语言内训练. 目标是将单语言文本加噪干扰后再恢复回来. 作者采取了两种BART中的加噪方式:

Sentence Permutation: 打乱句子和句子之间的顺序.
Word - Span masking: 连续的Mask掉一些内容, 并且只用一个[Mask]替换.

除此外, mBART的初衷是多语言模型, 必须将语种的信息加入. 在文本输入结束后, 在句子末尾处需要加上句子结尾标识<\s>和对应语言的标识[LID].这个我们一会会讲到。

  • mBART25 使用之前描述的设置,对所有25种语言进行模型预训练。
  • mBART06 为了探索预训练对相关语言的影响,我们在六种欧洲语言的子集上预训练一个模型。Ro、It、Cs、Fr、Es和En。为了公平的比较,我们使用的是 mBART25 批的大约 1/4 ,这使得我们的模型在预训练过程中,每一种语言的更新次数是相同的。
  • mBART02 使用英语和另一种语言预训练双语模型。En-De, En-Ro, En-It. 我们使用的批大小约为mBART25的1/12。
  • BART-En/Ro 为了帮助建立对多语言预训练的更好理解,我们还分别只在En和Ro语料库上训练单语言BART模型。
  • Random:作为基线,将包括与每个翻译任务的模型随机初始化而不进行预训练的比较。由于不同下游数据集的大小不同,我们总是对超参数(架构、dropout等)进行网格搜索,以找到最佳的非预训练配置。

Fine - Tuning mBART

微调阶段才针对机器翻译任务训练. 用[LID]替换解码器原来的第一个输入[Start], 表明要翻译成哪个语种.

image-ywyx.png

左侧为预训练阶段, 每条数据使用单语言文本并加噪, mBART将其恢复为原来的单语言文本. 右侧为微调阶段, 针对某两种语言之间做微调, 输入为源语言, 期望输出为目标语言,解码器的输入头为目标语言的LID.

结果

image-sjcj.png

Direction: 翻译方向,用箭头表示,例如,“→”可能表示从英语到目标语言的翻译。
Random: 基准随机模型的BLEU分数(一个衡量机器翻译质量的指标),分数越高表示翻译质量越好。
mBART25: 使用mBART25模型的BLEU分数,mBART25是一个预训练的多语言序列到序列的模型,设计用于改善机器翻译的质量。

低/中资源机器翻译预训练在随机初始化的基线上持续改进,尤其是在低资源语言对上的提高尤为显著。

在所有列出的语言对中,mBART25模型的BLEU分数普遍高于随机基准,表明了mBART25在机器翻译任务上的有效性。

image-zyvr.png

结果显示, 当数据集大小增加后, 不做预训练的效果反而是要好一点.

113b625ab2ed248f20fa48c674976d2.png

我们将预训练与反向翻译结合起来,并在低资源语言对上进行测试。使用 mBART25 预训练参数初始化模型可以提高每次反向翻译迭代时的 BLEU 分数,从而在所有四个翻译方向上产生新的最先进结果。这表明预训练的 mBART 权重可以直接插入使用反向翻译的现有管道中。

应该预训练多少种语言?

image-jchx.png

当目标语言单语言数据有限时,对更多语言进行预训练最有帮助相反,当单语言数据充足时,多种语言的预训练会稍微损害最终结果。在这些情况下,其他语言可能会减少每种测试语言的可用容量。

image-ibjg.png

在没有预训练的情况下,模型表现比基线差得多;
经过25000步(训练的5%)两种模型就都超过了基线;
在500000步之后仍然没有完全收敛。

image-sohf.png

我们将没有预训练的性能与 mBART02 结果进行比较。预训练模型仅用 10000句子对即可实现超过 20 BLEU,而基线得分为 0。增加语料库的大小-改进了这两种模型。我们的预训练模型始终优于基线模型,但差距随着双文本数量的增加而缩小,尤其是在 1000 万句对之后。

作者尝试了不同语种到英文的微调, 并使用不同的测试语言观察不同微调语言对最终结果的影响:

image-wtzt.png

灰色的部分为同一个语系中的语言.

主对角线上微调时所采用的语料为X-EN, 测试是为X-X.
同一X轴上代表使用的微调语言相同(X-EN), 但采用了不同的测试语言.
同一Y轴上代表采用了不同的微调语言, 但使用的测试语言相同(X-X).
除去翻译最好的是自己的语言外, 次优的一般都是同一语系下的其他语言. 确实说明了语言之间存在一定的共性.

结论

BART算是BERT和GPT的集大成者, 它的结构和标准Transformer一致, 但与Transformer不同点在于数据输入和训练目标, 以自回归式去噪自动编码器的形式存在.

因为使用了Transformer 解码器, 使得BART具有了BERT不具备的处理生成任务的能力, 实验结果表明, 没有损失性能, 也没有添加过多的参数.

作者尝试了包括Masking在内的多种噪声的添加方式, 这些噪声的干扰非常强大, 强制要求模型也要有与之匹配的预测能力.

mBART作为BART多语言版本, 给出了一种基于BART的多语言机器翻译上的处理思路, 也揭示了机器翻译中同一语系下不同语种之间的一些潜在共性.