数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
十七、mBART [2020]
尽管已被广泛用于其他
NLP
任务,但自监督的预训练在机器翻译machine translation: MT
中还不是常见的做法。现有的方法要么是对模型进行部分预训练partially pre-train
、要么是仅关注英语语料。在论文《Multilingual Denoising Pre-training for Neural Machine Translation》
中,作者表明:通过预训练一个完整的自回归模型可以获得显著的性能提升,其中这个自回归模型的目标是跨多种语言的完整文本进行加噪音和重建。在这项工作中,论文提出了
mBART
,一个多语言sequence-to-sequence: Seq2Seq
降噪自编码器。mBART
是通过将BART
应用于跨多种语言的大型单语语料库monolingual corpora
而训练的。通过masking phrase
和permuting sentence
来对输入文本添加噪音,并学习一个Transformer
模型来恢复文本。与其他机器翻译的预训练方法不同,mBART
预训练了一个完整的自回归Seq2Seq
模型。mBART
仅对所有语言进行一次训练,提供一组参数。这组参数可以在supervised setting
和unsupervised setting
下对任何language pair
进行微调,无需任何task-specific
或language-specific
修改或初始化方案initialization scheme
。大量的实验表明,这种简单的方法效果非常好。
对于
supervised sentence-level
机器翻译,mBART initialization
在low-resource/medium-resource pair
(小于10M
个bi-text pair
)中带来了显著的增益(高达12
个BLEU point
),而在high-resource setting
中没有牺牲性能。这些结果通过back-translation: BT
进一步改善,在WMT16 English-Romanian
和FloRes
测试集上创造了新的SOTA
。Romanian
:罗马尼亚语;Nepali
:尼泊尔语;Korean
:韩语;Italian
:意大利语。对于
document-level
机器翻译,mBART
的document-level
预训练将结果提高了5.5
个BLEU point
。在无监督的情况下,mBART
得到了一致的增益,并对相关性较低的语言对产生了首个非退化non-degenerate
的结果(例如,Nepali-English
上的9.5 BLEU
增益)。以前的预训练方案只考虑了这些application
的子集,但论文尽可能地比较了性能,并证明mBART
始终表现最佳。论文还表明,
mBART
能够实现新类型的跨language pair
的迁移。例如,对一个language pair
(如Korean-English
)中的bi-text
进行微调,可以创建一个模型,该模型可以翻译在单语预训练集中的所有其他语言(如Italian-English
),而无需进一步训练。论文还表明,不在预训练语料库中的语言也能从
mBART
中受益,这强烈表明initialization
至少部分地是语言通用language universal
的。
最后,论文详细分析了哪些因素对有效的预训练贡献最大,包括语言的数量和它们的整体相似度
overall similarity
。相关工作:
用于文本生成的自监督学习:这项工作继承了最近预训练为
NLP application
带来的成功,尤其是文本生成。预训练的模型通常被用作initialization
从而用于微调下游任务(如,可控语言建模controllable language modeling
、摘要、和对话生成)。具体到机器翻译,无监督的预训练方法也被探索出来,以提高性能。
《When and why are pretrained word embeddings useful for neural machine translation?》
研究了预训练的word embedding
在机器翻译中的应用。《Unsupervised pretraining for sequence to sequence learning》
提出将encoder-decoder
模块作为两个独立的语言模型进行预训练。《Towards making the most of bertin neural machine translation》
和《Incorporating BERT into neural machine translation》
探索了融合方法从而集成预训练的BERT
权重来改善神经机器翻译的训练。
与大多数先前的工作相比,我们专注于预训练一个降噪自编码器,并为各种机器翻译
application
来适配整个模型的权重。NLP
中的多语言性Multilinguality
:这项工作也与多语言学习的持续趋势continual trend
有关,包括将multilingual word embedding
对齐到通用空间,以及学习跨语言模型crosslingual model
从而利用跨语言的shared representation
。对于机器翻译来说,最相关的领域是多语言翻译
multilingual translation
。多语言翻译的最终目标是联合训练一个翻译模型,该模型同时翻译多种语言,并共享representation
从而提高low-resource language
的翻译性能(《Universal neural machine translation for extremely low resource languages》
)。low-resource language
:bi-text
语料很少的language pair
。在本文中,我们聚焦于预训练阶段的多语言,并在标准的双语场景
bi-lingual scenario
下对所学模型进行微调。与多语言翻译相比,我们不需要跨多种语言的平行数据parallel data
,只需要目标方向targeted direction
(即,翻译方向),这提高了对low-resource language
和specific domain
的可扩展性。假设有
100
种语言,多语言翻译需要 $ C_{100}^2 = 4950 $ 种language pair
的平行数据 。而这里我们只需要100
种语言的单语语料,以及翻译方向。文档翻译
Document Translation
:作为关键应用之一,我们的工作也与之前将document-level
上下文纳入神经机器翻译的工作有关。《Pretrained language models for document-level neural machine translation》
是最相关的工作,也利用预训练的编码器(BERT
)来处理更长的上下文。然而,他们的重点是设计新的task-specific
技术,并在更wider
的input context
下做sentence-level
翻译 。据我们所知,我们的多语言预训练模型是首个显示出在
document-level
翻译上相比标准Seq2Seq
模型有改进的结果。无监督翻译:这项工作也总结了之前的一些工作,其中在语言之间没有直接的平行语料库的情况下来学习翻译。
- 当没有任何类型的平行数据时,
《Unsupervised neural machine translation》
和《Unsupervised machine translation using monolingual corpora only》
提出从两个direction
联合学习降噪自编码器和back-translation
,然而,这需要良好的initialization
,并且只在相似的language pair
上效果良好。 《Machine translation with weakly paired bilingual documents》
通过从维基百科中挖掘句子并将其作为弱监督的translation pair
来解决这个问题。
类似于
《Cross-lingual language model pretraining》
和《MASS: Masked sequence to sequence pre-training for language generation》
,我们遵循第一种方法,并将我们预训练的模型作为initialization
。我们还研究了使用
language transfer
的无监督翻译,这与《Translating translationese: A two-step approach to unsupervised machine translation》
类似,其中他们生成源语言的翻译语translationese
,并在high-resource language
上训练一个系统来纠正这些中间结果。我们的工作也与
《XNLI: Evaluating cross-lingual sentence representations》
和《On the cross-lingual transferability of monolingual representations》
的跨语言representation learning
密切相关,我们也表明通过mBART
学到的representation
可以在没有监督数据的情况下轻松地在语言之间迁移。- 当没有任何类型的平行数据时,
17.1 预训练
- 我们使用
Common Crawl: CC
语料库来预训练BART
模型。我们的实验涉及微调一组模型(这些模型在不同子集上预训练)。
17.1.1 Data: CC25 语料库
数据集:我们对从
CC
语料库中提取的25
种语言(CC25
)进行预训练。CC25
包括来自不同语言的、不同数量的文本(如下图所示)。遵从《Cross-lingual language model pretraining》
,我们通过对每种语言 $ i $ 的文本以比例 $ \lambda_i $ 进行up/down-sampling
,从而重新平衡语料库:
其中:CC-25
中的百分比;
$ p_i $ 是以 byte-level
还是character-level
还是word-level
还是document-level
?作者并未说明。根据下图,猜测是byte-level
。
$ \alpha =0 $ 时, $ \lambda_i\propto \frac{1}{p_i} $ ,即语言 $ i $ 的文本越少则采样比例越大; $ \alpha=1 $ 是, $ \lambda_i=1 $ ,即均匀采样。 语言缩写:
En
英语,Ru
俄语;Vi
越南语;Ja
日语;De
德语;Ro
罗马尼亚语;Fr
法语;Fi
芬兰语;Ko
韩语;Es
西班牙语;Zh
中文;It
意大利语;NI
尼加拉瓜语;Ar
阿拉伯语;Tr
土耳其语;Hi
印度语;Cs
捷克语;Lt
立陶宛语;Lv
拉脱维亚语;Kk
哈萨克语;Et
爱沙尼亚语;Ne
尼泊尔语;Si
斯里兰卡语;Gu
古吉拉特语;My
马来西亚语。
预处理:我们用一个在完整的
CC
数据上学习的sentence-piece model
(包括250K
个subword token
)来tokenize
。虽然不是所有这些语言都被用于预训练,但这种tokenization
支持对额外的语言进行微调。我们不应用额外的预处理,如true-casing
(即决定单词的合适的大小写)、或者对标点符号以及字符进行规范化。因为有
25
种语言,因此相当于每种语言包含10K
规模的词表。
17.1.2 Model: mBART
我们的模型遵循
BART
的Seq2Seq
预训练方案。然而BART
只对英语进行了预训练,我们系统地研究了在不同语言的集合上预训练的影响。架构:我们使用标准的
Seq2Seq Transformer
架构,模型配置为:12
层编码器和12
层解码器,隐层维度为1024
,16
个注意力头,一共大约680M
参数。我们在编码器和解码器的基础上加入了一个额外的layer-normalization
层,我们发现它在FP16
精度下稳定了训练。学习:我们的训练数据覆盖了
$ K $ 种不同的语言 $ \mathcal D=\{\mathcal D_1,\cdots,\mathcal D_K\} $ ,其中 $ \mathcal D_i $ 是语言 $ i $ 的单语料文档的集合。 我们假设可以获得一个噪声函数 $ g(\cdot) $ ,它可以破坏文本。然后我们训练模型在给定 $ g(X) $ 的条件下预测原始文本 $ X $ 。更正式而言,我们的目标是最大化 $ \mathcal L_\theta $ :其中:
$ X $ 是语言 $ i $ 中的一个文本实例, $ P $ 是由Seq2Seq
模型定义的条件概率分布。噪声函数
Noise Function
:遵从BART
,我们在 $ g(\cdot) $ 中使用了两种类型的噪声。首先,我们删除一个区间
span
的文本并代之以一个mask token
。我们根据泊松分布( $ \lambda = 3.5 $ )随机采样一个span length
,从而掩码每个文本实例中35%
的单词。这意味着平均每个文本序列的长度为
10
个单词。我们还对每个文本实例中的句子顺序进行了排列。
解码器的输入是带有一个位置偏移的原始文本。一个
language id
符号<LID>
被用来作为initial token
从而用于预测句子。假设原始文本为
ABCDEFG
,而被掩码的文本为[mask]EFG
。那么:- 编码器的输入为
[mask]EFG<LID>
。 - 解码器的输入为
<LID>ABCDEF
,解码器的label
为ABCDEFG<LID>
。
也可以使用其他噪音类型,如
《Phrase-based & neural unsupervised machine translation》
中的噪音,但我们将最佳噪音策略的探索留给未来工作。实例格式
Instance Format
:对每个batch
的每个文本实例,我们对一个language id
符号<LID>
进行采样,并尽可能多地打包从<LID>
的相应语料库中采样的连续句子,直到它命中文档边界或达到512
的max token length
。实例中的句子由end of sentence token
(</S>
)分隔。然后,我们将选定的<LID> token
附加到该实例的末尾。在"multi sentence"
层面的预训练使我们能够同时在句子翻译和文档翻译上工作。每个
batch
包含多种语言的文本,即:xxxxxxxxxx
abcdefg...</S>ABCDEFG...</S>abAB<En> 一二三四五...</S>甲乙丙丁...<Zh>注意:这里的
<LID>
是位于输入序列的末尾,但是在馈入到BART
时:- 如果是编码器的输入,则
<LID>
仍然位于原始序列的末尾。 - 如果是解码器的输入,则
<LID>
放置到原始序列的开头。如果是解码器的输出,那么<LID>
仍然位于原始序列的末尾。一旦 解码器发现解码的token
为<LID>
,那么解码结束。
- 如果是编码器的输入,则
优化:我们的完整模型(包括
25
种语言)是在256
个Nvidia V100 GPU
(32GB
)上训练了500K
步 。每个GPU
的总batch size
约为128K
个token
,与BART
的配置相匹配。因为采用了梯度累加策略,因此
GPU
的batch size
会增加。我们使用
Adam
优化器 ( $ \epsilon = 10^{-6},\beta_2=0.98 $ )和线性学习率衰减调度。总的训练时间约为2.5
周。我们以dropout rate = 0.1
开始训练,在250K
步时减少到0.05
,在400K
步时减少到0
。所有的实验都是用
Fairseq
完成的。可复现性:所提出方法的一个潜在问题是可复现性问题,因为需要大量的单语语料和计算资源,以及在预训练期间对超参数进行细粒度选择。如果我们再次对系统进行重新训练,可能会得到略有不同的微调性能。为了解决这个问题,我们将发布预训练的
checkpoint
,以及完整说明的代码从而用于预训练一个新模型。相关工作
XLM(-R)
和MASS
:有几种密切相关的机器翻译多语言预训练的方法。XLM
和XLM-R
以多语言方式预训练BERT
,结果得到的参数可用于初始化翻译模型的编码器。与XLM(-R)
不同的是,由于Seq2Seq
的配置,mBART
同时预训练编码器和解码器,这对于适配机器翻译应用来说更为自然。- 与
mBART
类似,MASS
也是一种基于Seq2Seq
的、具有word-masking
的预训练技术。然而,MASS
的解码器只预测在编码器中被masked
的token
,而mBART
重建了完整的target
序列,不仅可以应用于"masking"
(是噪音函数中的一种) ,还可以应用任何可能的噪音函数。
此外,
XLM
和MASS
都没有显示出预训练模型改善两种语言上的翻译性能的证据。
17.1.3 预训练的模型
为了更好地衡量预训练期间不同
level
的多语言性的影响,我们构建了一系列模型,具体如下:mBART25
:如前所述,我们在所有25
种语言上预训练一个模型。mBART06
:为了探索对相关的语言进行预训练的效果,我们对所有语言的一个子集(包含6
种欧洲语言)进行预训练:Ro, It, Cs, Fr, Es, En
(即 ,罗马尼亚语、意大利语、捷克语、法语、西班牙语、英语)。为了进行公平的比较,我们使用了mBART25 batch size
的大约1/4
,这使得我们的模型在预训练期间对每种语言有相同的更新数量。mBART02
:我们预训练双语模型,采用英语和另外一种语言,最终包括各种language pair
:En-De, En-Ro, En-It
。我们使用了mBART25 batch size
的大约1/12
。注意,这里是每种
language pair
训练一个模型,而不是在这三个pair
上总共训练一个模型。BART-En/Ro
:为了帮助建立对多语言预训练的更好理解,我们还分别在仅包含En
语料库、以及仅包含Ro
语料库上训练单语言BART
模型。注意,这里是每种语言训练一个模型,而不是在包含英语和罗马尼亚语的语料库上总共训练一个模型。
Random
:作为额外的baseline
,我们还将包括与随机初始化的模型的比较,不对每个翻译任务进行预训练。由于不同下游数据集的大小不同,我们总是对超参数(架构、dropout rate
等)进行网格搜索,从而找到最佳的non-pretrained configuration
。
所有模型都使用相同的词表
vocabulary
(CC25
语料库上学到的,包括250K
个subword token
)。并非所有的token
都会频繁地出现在所有的预训练语料库中,但后来的实验表明:这种大型词表可以在多语言环境中提高泛化能力,即使是对未见过的语言。
17.1.4 扩大规模的问题
- 扩大训练数据和模型参数的规模一直是预训练的关键因素。与传统的半监督方法(如
back-translation
)和其他机器翻译的预训练相比,我们以相对更深的架构在更多的单语数据上预训练mBART
。这种数据规模和模型参数规模,结合新的多语言训练,是我们结果的核心,尽管未来的工作可以更仔细地研究每一种因素的相对贡献。
17.2 Sentence-level Machine Translation
- 本节显示,
mBART
预训练在low resource
到medium resource
的sentence-level Machine Translation setting
中提供了一致的性能提升,包括仅有bi-text
和有back translation
的情况,并且优于其他现有的预训练方案。我们还进行了详细的分析,以更好地了解哪些因素对这些提升贡献最大,并显示预训练甚至可以提高那些不在预训练数据中的语言的性能。
17.2.1 实验配置
数据集:我们收集了
24
对公开可用的平行语料parallel corpora
,这些语料涵盖了CC25
的所有语言。大多数pair
来自以前的WMT
(Gu, Kk, Tr, Ro, Et, Lt, Fi, Lv, Cs, Es, Zh, De, Ru, Fr <-> En
)和IWSLT
(Vi, Ja, Ko, Nl, Ar, It <-> En
)比赛。我们还使用FLoRes pair
(《The FLORES evaluation datasets for low-resource machine translation: Nepali–English and Sinhala–English》
),IITB
的En-Hi
(《The IIT Bombay English-Hindi parallel corpus》
),以及WAT19
的En-My
。我们将数据集分为三类:low resource
(小于1M
的sentence pair
),medium resource
(大于1M
且小于10M
的sentence pair
),以及high resource
(大于10M
的sentence pair
)。微调和解码:我们在
bi-text
数据的单个pair
上微调mBART
,将source language
馈入编码器并且解码target language
。如下图所示,我们加载预训练的权重,在bi-text
上训练机器翻译模型。对于所有的翻译方向,我们用dropout rate = 0.3
、label smoothing = 0.2
、warm-up steps = 2500
、最大学习率为3e-5
来进行训练。我们对所有low resource, medium resource
的pair
使用最多40K
的训练更新,对high resource pair
使用最多100K
的训练更新。最后的模型是根据验证集的似然likelihood
来选择的。这里没有说明微调的序列长度是多少。由于这里是
sentence-level
的翻译,因此序列长度可能不大。相比较而言,document-level
的翻译中,序列长度为512
个token
。我们解码期间使用
beam-search
,beam size = 5
。我们的初步实验表明,微调过程在不同的随机数种子下通常是稳定的。因此,为了减少总的计算量,我们所有的结果都是以单次执行来报告的。我们用mosesdecoder
的脚本来验证统计意义。注意:
- 编码器输入的末尾为
<LID>
,例如<En>
;解码器输入的开头为<LID>
、解码器输出的末尾为<LID>
,如<Ja>
。 - 编码器输入、解码器输入、解码器输出中,句子之间的分隔符均为
</s>
。
- 编码器输入的末尾为
17.2.2 实验结果
主要结果:
如
Table 1
所示,与随机初始化的baseline
相比,用预训练的mBART25
权重初始化在所有low resource pair
、medium resource pair
上都有提高。我们观察到:- 在
low resource pair
(如En-Vi
、En-Tr
)和noisily aligned pair
(如En-Hi
)上有12
个点或更多的BLEU
收益。 - 微调在
extremely low-resource
的情况下仍然失败,如En-Gu
,它仅有大约10K
个样本。在这些情况下,无监督翻译更合适,见后面的实验。
注意,我们的
baseline
系统使用随机初始化权重的常规Transformers
的一些运行报告,这与原始竞赛中报告的SOTA
系统有相当明显的差距。这种差异主要是因为:我们只在官方提供的bi-text
中训练和搜索baseline
的超参数,而没有使用任何单语语料库或多语适配。例如:- 在
WMT19
中,En -> Gu
的SOTA
得分是28.2
,而Table 1
中是0
。这基本上是因为原始bi-text data
的质量很低,而SOTA
系统通常使用额外的语言(如Hi
)来提高性能。 - 类似的差距也可以在
Kk-En
和Lt-En
等pair
中观察到,其中Ru
作为额外的语言也很关键。
这一部分的主要目的是讨论多语言预训练在受限的
bi-text setting
中的效果,以便进行更好的比较。我们将在未来的工作中加入更多关于多语言翻译与预训练相结合的讨论。- 在
对于
high resource
的情况(Table 2
),我们没有观察到一致的收益,当有超过25M
的平行句子parallel sentence
时,预训练略微损害了性能。当给出大量的bi-text data
时,我们怀疑监督训练会刷掉预训练的权重。
Plus Back-Translation
:back-translation
(《Improving neural machine translation models with monolingual data》
)是一种标准的方法,用target-side
的单语数据增强bi-text
。我们将我们的预训练与back-translation
相结合,并使用FLoRes
数据集在low resource language pair
(En-Si
和En-Ne
)上进行测试。我们使用与《The FLORES evaluation datasets for low-resource machine translation: Nepali–English and Sinhala–English》
相同的单语数据来生成back-translation
数据。结果如下图所示。可以看到:用我们的
mBART25
预训练的参数初始化模型,在back-translation
的每个迭代中提高了BLEU
分数,从而在所有四个翻译方向上产生了新的SOTA
的结果。这表明,预训练的mBART
权重可以直接插入到使用back-translation
的现有pipeline
中。对比其它的预训练方法:我们还将我们的预训练模型与最近的自监督预训练方法进行了比较,如下表所示。我们考虑了
En-Ro
翻译,这是唯一一对有既定结果的翻译。可以看到:- 我们的
mBART
模型优于所有其他预训练模型,无论是否有back-translation
增强。 - 我们还展示了与仅在相同的
En
和Ro
数据上训练的传统BART
模型的比较。尽管比mBART
的结果要差,但两者都比baseline
有改进,这表明在多语言环境下的预训练是非常重要的。 - 此外,结合
back-translation
可以带来额外的收益,从而使Ro-En
翻译达到新的SOTA
。
此外,
mBART25
的效果比mBART02
的效果更差,是否意味着更多的无关预训练数据反而影响下游任务的效果?因为mBART25
的CC25
预训练数据集包含了mBART02
的预训练数据集。接下来的实验表明:如果目标语言的单语料数据很少,那么对更多语言进行预训练对下游翻译任务有帮助;否则,对更多语言进行预训练会略微损害下游翻译任务的性能。
- 我们的
17.2.3 分析
需要对多少种语言进行预训练:我们研究了在什么情况下,将目标
language pair
以外的语言纳入预训练是有帮助的。下表显示了四组X-En pair
的表现。可以看到:- 当
target language
的单语数据有限时(如En-My
,My
的单语言数据大小约为En
的0.5%
),对更多语言进行预训练最有帮助。 - 相反,当
target language
的单语数据丰富时(如De
,Ro
),对多语言的预训练对最终结果略有损害(小于1 BLEU
)。在这些情况下,额外的语言可能会减少每种测试语言的可用容量。此外,mBART06
在Ro-En
上的表现与mBART02
相似,这表明用类似语言(都是欧洲语言)进行预训练特别有帮助。
- 当
需要预训练多少个
step
:我们在下图中绘制了Ro-En
的BLEU
得分与预训练step
数的对比,在图中我们采用了保存的checkpoint
(每25K
步)并应用了前面描述的相同的微调过程。可以看到:- 在没有任何预训练的情况下,我们的模型过拟合,表现比
baseline
差很多。 - 然而,在仅仅
25K
步(5%
的训练)的预训练之后,两个模型的表现都超过了最佳baseline
。 - 在剩下的预训练中,这两个模型一直在超越了
baseline
高达3 BLEU
以上,在500K
步之后还没有完全收敛。 - 此外,
mBART25
始终比mBART02
略差,这证实了Table 4
的观察。
- 在没有任何预训练的情况下,我们的模型过拟合,表现比
需要多少
bi-text
:Table 1
和Table 2
显示,预训练对low resource
、medium resource
的language pair
有持续改善。为了验证这一趋势,我们绘制了不同大小的En-De
数据集子集的性能。更确切地说,我们采用了完整的En-De
语料库(2800
万pair
),并随机抽取了10K
、50K
、100K
、500K
、1M
、5M
、10M
的子集。我们将没有预训练的性能与mBART02
的结果进行比较,如下图所示。可以看到:- 预训练的模型能够在只有
10K
个训练样本的情况下达到高于20 BLEU
的效果,而baseline
系统的得分是0
。不难看出,增加bi-text
语料库的规模可以改善这两个模型。 - 我们的预训练模型一直优于
baseline
模型,但随着bi-text
数量的增加,差距也在缩小,特别是在10M
个sentence pair
之后。这一结果证实了我们在前面的观察,即我们的预训练对high-resource pair
的翻译没有帮助。
- 预训练的模型能够在只有
17.2.4 泛化到不在预训练中的语言
在这一节中,我们表明:即使对于没有出现在预训练语料库中的语言,
mBART
也能提高性能,这表明预训练具有语言通用性。类似的现象在其他NLP
应用中的其他多语言预训练方法中也有报道。实验设置:我们报告了使用预训练的
mBART25
、mBART06
和mBART02
(En-Ro
)模型对Nl-En
、Ar-En
和De-Nl
三种pair
进行微调的结果。mBART06
和mBART02
模型没有对Ar
、De
或Nl
文本进行预训练,但所有语言都在mBART25
中。De
和Nl
都是欧洲语言,与En
、Ro
以及mBART06
预训练数据中的其他语言有关。实验结果:如下表所示:
我们发现
English-Romanian
预训练相比baseline
获得了很大的增益,即使在翻译一种不相关且未见过的语言(阿拉伯语Arabic
)、以及两种未见过的语言(德语German
和荷兰语Dutch
)时也是如此。NI
尼加拉瓜语是荷兰语的一种。当预训练中包括双方的语言时(即,
mBART25
),取得了最好的结果,尽管在其他情况下的预训练也具有令人惊讶的竞争力。
未见过的词汇:
Arabic
与mBART02
和mBART06
中的语言关系较远,并且有一个不相交的字符集character set
。这意味着它的word embedding
在很大程度上没有在预训练中被估计。然而,从Table 5
中可以看到:mBART02/mBART06
在Ar-En pair
上获得的改进与在Nl-En pair
上获得的改进相似。这一结果表明:预训练的
Transformer layer
学习了语言的普遍属性,即使在词汇重叠度lexical overlap
极低的情况下也能很好地进行泛化。未见过的
source language
和未见过的target language
:从Table 5
中可以看到:- 如果两边都是未见过的语言,其性能(从与
mBART25
的差异来看)比在预训练期间至少见到一种语言(source language
或者target language
)的情况要差。 - 此外,
mBART06
在X-En pair
上的表现优于mBART02
,尽管它们在En-X pair
上表现相似。在source-side
对未见过的语言进行微调是比较困难的(这里source-side
就是NI
和Ar
),值得今后广泛研究。
- 如果两边都是未见过的语言,其性能(从与
17.3 Document-level Machine Translation
- 我们在
document-level
机器翻译任务中评估了mBART
,其目标是翻译包含一个以上句子的文本片段(直到整个文档)。在预训练期间,我们使用多达512
个token
的文档片段,允许模型学习句子之间的依赖关系。我们表明,这种预训练大大改善了document-level
的翻译。
17.3.1 实验配置
数据集:我们在两个常见的
document-level
机器翻译数据集上评估性能:WMT19 En-De
和TED15 Zh-En
。- 对于
En-De
,我们使用WMT19
的文档数据来训练我们的模型,没有任何额外的sentence-level
数据。 Zh-En
数据集来自IWSLT 2014
和IWSLT 2015
。遵从《Document-level neural machine translation with hierarchical attention networks》
,我们使用2010-2013 TED
作为测试集。
- 对于
预处理:我们用预训练中使用的方法进行预处理。对于每个
block
,句子被符号</S>
所分隔,整个实例以specific language id
(<LID>
)结束。平均而言,一个文档被分割成2
到4
个实例。微调和解码:
- 我们使用与
sentence-level
翻译相同的微调方案,不使用以前的工作所开发的任何task-specific
的技术,如约束的上下文constrained context
、或受限注意力restricted attention
。 - 对于解码,我们只是将
source sentence
打包成block
,并对每个实例block
进行自回归地翻译。该模型不知道要提前生成多少个句子,当预测到<LID>
时,解码就会停止。我们默认使用beam size = 5
。
- 我们使用与
baseline
和评估:我们训练了4
个模型:一个document-level
(Doc-MT
)机器翻译模型,以及baseline
为一个对应的sentence-level
(Sent-MT
)机器翻译模型,包括预训练和不预训练。我们使用mBART25
作为En-De
和Zh-En
的通用预训练模型。- 对于
En-De
,即使我们的mBART25 Doc-MT
模型将多个句子解码在一起,但翻译的句子仍然可以与source sentence
对齐,这使得我们可以同时在sentence-level
(s-BLEU
)和document-level
(d-BLEU
)评估BLEU
分数。 - 然而,对于
Zh-En
,由于测试数据中的对齐错误,我们无法产生与reference
相同数量的翻译句子。我们只提供d-BLEU
分数。
我们还将我们的模型与
Hierarchical Attention Networks
(《Document-level neural machine translation with hierarchical attention networks》
)在Zh-En
上进行了比较,这是document-level
翻译的SOTA
的non-pretraining
方法。它们结合了两层注意力:首先是在句子内部,然后是跨句子。- 对于
17.3.2 实验结果
下表显示了
En-De
和Zh-En
在sentence-level
和document-level
的主要结果:随机初始化
vs.
预训练初始化:- 对于
sentence-level
训练和document-level
训练,用预训练权重初始化的机器翻译模型比随机初始化的机器翻译模型要好得多。 - 我们的
mBART25
模型(Sent-MT
和Doc-MT
)也优于HAN
,尽管Sent-MT
和Doc-MT
不是为document-level
机器翻译而定制化的。
- 对于
Sent-MT vs. Doc-MT
:对于En-De
和En-Zh
:mBART25 Doc-MT
模型的表现超过了mBART25 Sent-MT
。超出的绝对数值在
1.0
分左右,不是特别多。相反,没有预训练的模型的趋势相反,即
Random Doc-MT
模型的表现远远差于Random Sent-MT
。对于这两个数据集,随机初始化的
Doc-MT
未能发挥作用,导致其结果比sentence-level
模型差得多。如此大的性能gap
表明,预训练对document level
的性能至关重要。一般而言,很难大量收集高质量的document level
数据,这表明预训练可能是未来工作的一个强有力的策略。我们还在Figure 6
中包括一个采样到的例子。
17.4 Unsupervised Machine Translation
除了有监督的机器翻译,我们还在对于
target language pair
没有bi-text
的任务上评估我们的模型。我们定义了三种类型的无监督翻译:没有任何类型的
bi-text
:一个常见的解决方案是从back-translation
中学习。我们表明,mBART
为这些方法提供了一个简单而有效的初始化方案。即,这里只有单语语料。
对于
target language pair
没有bi-text
,但两种语言都出现在与其他pair
的bi-text
语料中:这种配置在多语言机器翻译系统中很常见。在本文中,我们将重点限制在为单个language pair
建立模型,并将多语言机器翻译的讨论留给未来的工作。即,没有
A -> B
的bi-text
,但是有A -> C
和D -> B
的bi-text
。注意,
A,B,C,D
都在预训练语料中。没有
target pair
的bi-text
,但有从其他语言翻译成target language
的bi-text
:即使source language
没有任何形式的bi-text
,mBART
也支持有效的迁移。即,没有
A -> B
的bi-text
,但是只有D -> B
的bi-text
,没有A
的任何bi-text
。注意,
A,B,D
都在预训练语料中。
17.4.1 通过 Back-Translation 的无监督机器翻译
数据集:我们在
En-De
、En-Ne
和En-Si
上评估我们的预训练模型。En
和De
都是共享许多子词subword
的欧洲语言,而Ne
和Si
则与En
完全不同。我们使用与监督学习相同的测试集,并使用相同的预训练数据(CC25
)进行back-translation
以避免引入新信息。只有
CC25
如何进行back-translation
?因为back-translation
需要预先训练好一个翻译模型。而CC25
没有bi-text
来微调从而得到一个翻译模型。猜测是:不需要微调,用CC25
预训练好的模型本身就可以充当一个翻译模型。学习:遵从
《Cross-lingual language model pretraining》
(XLM
)的做法,我们用mBART
的权重初始化翻译模型,然后以source sentence
(通过on-the-fly back-translation
来生成)为条件来生成单语句子monolingual sentence
(即,翻译为单语文本)。此外,对于on-the-fly back-translation
的前面1000
步,我们将mBART
限制为仅生成target language
的token
,从而避免mBART
复制source text
。这里是没有任何类型的
bi-text
的情形。结果:下表显示了与
non-pretrained
模型、以及采用现有预训练方法的模型相比的无监督翻译结果。可以看到:- 我们的模型在所有方向上都比
non-pretrained
模型取得了很大的进步。 - 对于不相似的
pair
(En-Ne, En-Si
), 我们的模型显著超越了XLM
。在这些pair
上,现有的方法完全失败。 - 对于
En-De
,我们的模型与XLM
和MASS
相比也是相差无几的。
- 我们的模型在所有方向上都比
17.4.2 通过 Language Transfer 的无监督机器翻译
我们还报告了
target language
与其他source language
出现在bi-text
中时的结果。即,没有
A -> B
的bi-text
,但是只有D -> B
的bi-text
,没有A
的任何bi-text
。数据集:我们只考虑
X -> En
的翻译,并从监督学习的配置中选择了12
种language pair
的bi-text
,包括Indic language
(Ne, Hi, Si, Gu
)、European language
(Ro, It, Cs, Nl
)、East Asian language
(Zh, Ja, Ko
)以及Arabic
(Ar
)。结果:如下表所示,预训练的
mBART25
模型在每个language pair
上进行了微调,然后在剩余language pair
上进行了评估。我们还在对角线上展示了直接的微调性能,以供参考。可以看到:- 除了
Gu-En
之外(最后一列),所有微调模型都能实现迁移,因为在Gu-En
中,监督模型完全失败(0.3 BLEU
)。 - 在某些情况下,我们可以取得与监督结果相似(
Cs-En
,第四行)甚至更好的结果(Ne-En, Gu-En
,倒数第三行和最后一行)。
我们还在下图中展示了一个语言迁移的例子。
作为对比,我们也在没有预训练的随机初始化模型上应用同样的程序,其结果总是约为
0 BLEU
。这表明多语言预训练是非常重要的,它能产生跨语言的universal representation
,因此一旦模型学会了将一种语言翻译成英语,它就能学会用类似的representation
来翻译所有语言到英语。下图中,同一个浅色阴影块表示相同语系。
- 除了
什么时候
language transfer
是有用的:Table 8
还显示,迁移效应的大小随着不同语言的相似度而变化。- 首先,对于大多数语言对来说,当微调也是在同一语系
language family
中进行时(浅色阴影块所示),语言迁移效果更好,特别是在Indic language
(Hi, Ne, Gu
)之间。 - 然而,显著的词表共享
vocabulary sharing
并不是有效迁移的必要条件。例如,Zh-En
(第一行)和It-En
(第七行)分别从Ko-En
和Ar-En
上取得了最好的迁移学习效果。尽管(Zh,Ko)
和(It,Ar)
之间的词表重合度很低(甚至是字符重合度也很低)。
- 首先,对于大多数语言对来说,当微调也是在同一语系
使用
back-translation
:我们在下表中比较了使用back-translation
的无监督机器翻译vs.
语言迁移的无监督机器。当有相近的语言翻译可以迁移时,语言迁移效果更好。此外,我们显示了结合这两种技术的有前景的结果。我们从最好的被迁移模型
transferred model
开始,在预训练中使用的同一单语语料库上应用(迭代式的)back-translation
。下表显示了back-translation
的1
轮迭代的结果。我们看到所有的language pair
都有改进。对这两种方法的完整分析将作为未来的工作。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论