数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二十一、MASS [2019]
预训练和微调被广泛使用,当目标任务的训练数据资源较少或为零而预训练有大量的数据时。例如,在计算机视觉中,模型通常在大规模的
ImageNet
数据集上进行预训练,然后在下游任务(如目标检测任务、图像分割任务)上进行微调。最近,ELMo
、OpenAI GPT
、以及BERT
等预训练方法在自然语言处理中引起了很多关注,并在多种语言理解任务中取得了SOTA
的准确性,如情感分类、自然语言推理、命名实体识别、以及SQuAD
问答,这些任务通常只有有限的监督数据。在上述预训练方法中,BERT
是最卓越的一种,它通过masked language modeling
和next sentence prediction
,在大型单语语料库上预训练bidirectional encoder representation
。与语言理解不同,语言生成的目的是在某些输入的条件下生成自然语言句子,包括神经机器翻译
neural machine translation : NMT
、文本摘要text summarization
、以及对话式响应生成conversational response generation
等任务。语言生成任务通常对数据要求很高,许多任务在训练数据方面是低资源low-resource
甚至是零资源zero-source
的。在这些自然语言生成任务上直接应用BERT-like
的预训练方法是不可行的,因为BERT
是为语言理解设计的,其中这些任务通常只由一个encoder
或decoder
处理。因此,如何为语言生成任务(通常采用基于encoder-decoder
的序列学习框架)设计预训练方法,具有很大的潜力和重要性。在论文
《MASS: Masked Sequence to Sequence Pre-training for Language Generation》
中,受BERT
的启发,作者提出了一个新颖的预训练目标:MAsked Sequence to Sequence learning : MASS
用于语言生成。MASS
是基于sequence to sequence
的学习框架:它的encoder
将带有一个masked fragment
(几个连续的token
)的一个句子作为输入,而它的decoder
则根据encoder representation
来预测这个masked fragment
。与BERT
或仅对encoder/decoder
进行预训练的语言模型不同,MASS
经过精心设计,分两步对encoder
和decoder
进行联合预训练:- 通过预测
encoder side
的masked fragment
,MASS
可以迫使encoder
理解unmasked token
的含义,从而在decoder side
预测masked token
。 - 通过掩码
decoder
的input tokens
,其中这些masked input tokens
在encoder side
没有被掩码,MASS
可以迫使decoder
更多地依赖于source representation
(即,encoder representation
)而不是decoder side
的previous tokens
,从而用于next token prediction
。这可以更好地促进encoder
和decoder
的联合训练。
MASS
只需要预训练一个模型,然后在各种下游任务中进行微调。论文使用transformer
作为基础的sequence to sequence
模型,并且在WMT
单语语料库上进行预训练,然后在三种不同的语言生成任务上进行微调,包括神经机器翻译、文本摘要、以及对话式响应生成。考虑到下游任务涵盖了像神经机器翻译这样的跨语言任务,论文在多种语言上预训练一个模型。论文为所有三个任务探索了low-resource setting
,也考虑了无监督的神经机器翻译(这是一个纯粹的zero-resource setting
)。- 对于神经机器翻译,论文在
WMT14 English-French
、WMT16 English-German
、以及WMT16 English-Romanian
数据集上进行了实验。 - 对于无监督的神经机器翻译,论文直接在单语数据上用
back-translation loss
微调预训练的模型,而不是像《Phrase-based & neural unsupervised machine translation》
那样使用额外的降噪自编码器损失。 - 对于低资源的神经机器翻译,论文在有限的双语数据上微调预训练的模型。
- 对于其他两项任务,论文的实验如下:
Gigaword
语料库用于抽象式文本摘要,Cornell Movie Dialog
语料库用于对话式响应生成。
论文的方法在所有这些任务以及
zero-resource setting
和low-resource setting
中都取得了改进,表明论文的方法是有效的,适用于广泛的序列生成任务。论文的贡献如下:
论文提出了
MASS
,一种用于语言生成的masked sequence to sequence
预训练方法。MASS
主要用于自然语言生成任务,而无法用于自然语言理解任务。论文将
MASS
应用于各种语言生成任务,包括神经机器翻译、文本摘要、以及对话式响应生成,并取得了显著的改进,证明了MASS
的有效性。具体而言,
MASS
在两种language pair
(即,English-French, English-German
)的无监督神经机器翻译上取得了SOTA
的BLEU
分,并且在English-French
和French-English
上分别超过了之前的无监督神经机器翻译方法4
分以上和1
分以上,甚至超过了早期的attention-based
的监督模型。
- 通过预测
相关工作:在自然语言处理领域,在
sequence to sequence learning
和预训练方面有很多工作。Sequence to Sequence Learning
:sequence to sequence learning
是人工智能领域的一项挑战性任务,涵盖了各种语言生成应用,如神经机器翻译、文本摘要、问答、以及对话式响应生成。近年来,由于深度学习的进步,
sequence to sequence learning
引起了很多关注。然而,许多语言生成任务,如神经机器翻译,缺乏paired data
(即,监督数据),但有大量的unpaired data
(即,无监督数据)。因此,在unpaired data
上进行预训练,并用小规模的paired data
进行微调,将有助于这些任务,这正是本工作的重点。Pre-training for NLP task
:预训练已被广泛用于NLP
任务中,从而学习更好的language representation
。以前的工作大多集中在自然语言理解任务上,可以分为feature-based
方法和fine-tuning
方法。feature-based
方法主要是利用预训练为下游任务提供language representation
和feature
,其中包括word-level representation
、sentence-level representation
、以及来自神经机器翻译模型和ELMo
的context sensitive feature
。fine-tuning
方法主要是在语言建模目标上预训练模型,然后在具有监督数据的下游任务上微调模型。具体来说,《Bert: Pre-training of deep bidirectional transformers for language understanding》
提出了基于masked language modeling
和next sentence prediction
的BERT
,并在GLUE benchmark
和SQuAD
中的多个语言理解任务中取得了SOTA
准确性。
也有一些工作采用针对语言生成的
encoder-decoder
模型进行预训练。《Semi-supervised sequence learning》
、《Unsupervised pretraining for sequence to sequence learning》
利用语言模型或自编码器来预训练编码器和解码器。他们的方法虽然获得了improvement
,但很有限,不像语言理解的预训练方法(如BERT
)那样通用和显著。《Exploiting source-side monolingual data in neural machine translation》
设计了一个用于预训练的句子重排任务sentence reordering task
,但只针对encoder-decoder
模型的编码器部分。《Transfer learning for low-resource neural machine translation》
和《Zero-resource translation with multi-lingualneural machine translation》
在similar rich-resource language pair
上预训练模型,在target language pair
上对预训练模型进行微调,这依赖于other language pair
的监督数据。- 最近,
XLM
对编码器和解码器都预训练了BERT-like
模型,并在无监督机器翻译上取得了previous SOTA
的结果。然而,XLM
中的编码器和解码器是单独预训练的,而且encoder-decoder
的注意力机制无法被预训练,这对于基于sequence to sequence
的语言生成任务来说是次优的。
与以往的工作不同,我们提出的
MASS
是经过精心设计的,只使用未标记的数据并同时对编码器和解码器进行联合预训练,可以应用于大多数语言生成任务。
21.1 模型
- 这里,我们首先介绍了
sequence to sequence learning
的基本框架,然后提出MASS
(MAsked Sequence to Sequence
预训练)。然后,我们讨论了MASS
与以前的预训练方法的区别,包括masked language modeling
(参考BERT
)、以及standard language modeling
。
21.1.1 Sequence to Sequence Learning
定义
$ (X,Y)\in (\mathcal X, \mathcal Y) $ 为一个sentence pair
,其中: $ X=(x_1,x_2,\cdots,x_m) $ 为包含 $ m $ 个token
的source sentence
。 $ Y=(y_1,y_2,\cdots,y_n) $ 为包含 $ n $ 个token
的target sentence
。 $ \mathcal X $ 为source domain
, $ \mathcal Y $ 为target domain
。
一个
sequence to sequence
模型学习参数 $ \theta $ 从而估计条件概率 $ P(Y\mid X;\theta) $ ,并且通常使用对数似然log likelihood
作为目标函数:这个条件概率
$ P(Y\mid X;\theta) $ 可以根据链式法则进一步进行分解:其中
$ Y_{\lt t}=(y_1,y_2,\cdots,y_{t-1}) $ 为target sentence
$ Y $ 的前面 $ t-1 $ 的前缀。sequence to sequence learning
的一个主要方法是encoder-decoder
框架。编码器读取source sequence
并生成一组representation
;解码器在给定一组source representation
和前面已经处理的target tokens
的条件下,估计每个target token
的条件概率。注意力机制被进一步引入编码器和解码器之间,从而在预测当前token
时寻找应该聚焦于哪个source representation
。
21.1.2 Masked Sequence to Sequence Pre-training
我们在本节中介绍了一个新的无监督预测任务。给定一个
unpaired source sentence
$ X\in \mathcal X $ :我们记
$ X^{\lnot u:v} $ 为 $ X $ 的一个修改版,其中从位置 $ u $ 到 $ v $ 之间的fragment
都被掩码。 $ 0\lt u\lt v\lt m $ , $ m $ 是句子 $ X $ 的token
数量。每个masked token
替换为一个special symbol
$ [\mathbb M] $ ,并且masked sentence
的长度保持不变。我们记
$ k = v-u+1 $ 为从位置 $ u $ 到 $ v $ 之间被掩码的token
的数量。我们记
$ X^{u:v} $ 为从位置 $ u $ 到 $ v $ 之间的原始fragment
。
MASS
通过预测sentence fragment
$ X^{u:v} $ 来预训练一个sequence to sequence
模型,其中模型将masked sentence
$ X^{\lnot u:v} $ 作为输入。我们也使用对数似然作为目标函数:
其中:
$ x_t^{u:v} $ 为位置 $ t $ 的token
,它在sentence fragment
$ X^{u:v} $ 中。 $ X^{u:v}_{\lt t} $ 为sentence fragment
$ X^{u:v} $ 中的位置 $ t $ 之前的token
子序列(不包括位置 $ t $ )。
我们在下图中展示了一个例子,其中输入序列有
8
个token
,fragment
$ x_3x_4x_5x_6 $ 被掩码。请注意,模型只预测了被掩码的fragment
$ x_3x_4x_5x_6 $ ,其中decoder input
为:位置0 ~ 2
和位置6 ~ 7
的输入都是special token
$ [\mathbb M] $ ,位置3 ~ 5
的输入为 $ x_3x_4x_5 $ ,位置编号从0
开始 。虽然我们的方法适用于任何基于神经网络的
encoder-decoder
框架,但我们在实验中选择了Transformer
,因为它在多个sequence to sequence learning
任务中取得了SOTA
的性能。在论文的实现中,作者将
decoder input
中的masked token
移除,但是对所有的token
保留它们的原始位置信息。即,下图中保留 $ \text{\_} X_3X_4X_5 $ ,它们的位置分别为{2, 3, 4, 5}
(位置编号从零开始计算)。实际上,
BERT
中的掩码语言建模masked language modeling
、以及GPT
中的标准语言建模standard language modeling
可以被视为MASS
的特殊情况。我们有一个重要的超参数 $ k $ ,它表示句子中masked fragment
的长度。具有不同 $ k $ 值的MASS
可以覆盖一些特殊的case
,这些特殊的case
与先前的预训练方法相关,如下表所示。当
$ k=1 $ 时,source sentence
中的masked fragment
只包含一个token
,解码器预测这个token
时没有任何其它token
作为输入,而是以unmasked source token
为条件,如下图(a)
所示。这就成了BERT
中使用的masked language modeling
。有人可能会说,该模型结构与
masked language modeling
有一点不同。然而,由于解码器的所有输入token
都被掩码了,解码器本身就像一个非线性分类器,类似于BERT
中使用的softmax
矩阵。在这种情况下,条件概率是 $ P\left(x^u\mid X^{\lnot u};\theta\right) $ ,其中 $ u $ 是masked token
的位置,这正是BERT
中使用的masked language modeling
的公式。当
$ k=m $ 时,其中 $ m $ 是句子 $ X $ 中的token
数量,encoder side
的所有token
都被掩码,解码器需要在给定previous tokens
的条件下预测所有token
,如下图(b)
所示。条件概率为 $ P\left(X^{1:m}\mid X^{\lnot 1:m};\theta\right) $ ,它成为GPT
中的standard language modeling
,以来自编码器的null
信息为条件,因为encoder side
的所有token
都被掩码了。
21.1.3 讨论
MASS
是一种用于language generation
的预训练方法。虽然它的特殊case
与先前的方法有关,包括GPT
中的standard language modeling
和BERT
中的masked language modeling
,但它与这些方法总体上是不同的:standard language modeling
长期以来一直被用于预训练,最突出的是最近提出的ELMo
和OpenAI GPT
。BERT
为自然语言理解引入了两个预训练任务(masked language modeling
和next sentence prediction
),并使用一个编码器来为单句single sentence
和句子对sentence pair
抽取representation
。standard language modeling
和BERT
都可以只对编码器或解码器分别进行预训练。虽然在语言理解任务上取得了可喜的成果,但它们并不适合语言生成任务,其中语言生成任务通常利用encoder-decoder
框架从而用于条件序列生成conditional sequence generation
。MASS
被设计为联合预训练编码器和解码器从而用于语言生成任务。- 首先,通过
sequence to sequence
框架来仅仅预测masked token
,MASS
迫使编码器理解unmasked token
的含义,同时也鼓励解码器从encoder side
抽取有用的信息。 - 第二,通过预测
decoder side
的连续token
,解码器可以建立更好的语言建模能力,而不仅仅是预测离散的token
。 - 第三,通过进一步掩码解码器的
input token
(这些token
在encoder side
没有被掩码),鼓励解码器从encoder side
抽取更多有用的信息,而不是利用decoder side
的previous token
的丰富信息。
- 首先,通过
21.2 实验
21.2.1 MASS 预训练
模型配置:我们选择
Transformer
作为基本模型结构,它由6
层编码器和6
层解码器组成,emebdding/hidden
维度为1024
,feed-forward filter
维度为4096
。对于神经机器翻译任务,我们在
source language
和target language
的单语数据上对我们的模型进行预训练。我们分别对三种language pair
进行了实验:English-French, English-German, English-Romanian
。对于其他语言生成任务,包括文本摘要和对话式响应生成,我们分别只用英语单语数据对模型进行预训练。
为了区分神经机器翻译任务中的
source language
和target language
,我们为编码器和解码器的input sentence
的每个token
添加了一个language embedding
,其中language embedding
也是端到端学习的。mBART
是在input sentence
的开头添加一个<LID>
的special token
,如<EN>
用于英语 。我们基于
XLM
的代码库来实现我们的方法。数据集:我们使用了
WMT News Crawl
数据集的所有单语数据,其中涵盖了2007
年至2017
年的190M
英语句子、62M
法语句子、270M
德语句子。我们还在预训练阶段加入了一种
low-resource language
,即罗马尼亚语Romanian
,以验证用低资源单语数据预训练的MASS
的有效性。我们使用News Crawl
数据集中所有可用的罗马尼亚语句子,并使用WMT16
数据对其进行增强,从而得到2.9M
罗马尼亚语句子。我们删除了长度超过
175
的句子。对于每个任务,我们在source language
和target language
之间用BPE
联合学习了60K
个子词单元sub-word unit
。这里是跨语言的
BPE
,而不是针对每个语言单独学习一个BPE
。预训练细节:我们通过
special symbol
$ [\mathbb M] $ 替换连续的token
来掩码segment
,其中随机选择masked segment
的起始位置 $ u $ 。遵从BERT
,编码器中的masked token
为:80%
的概率是 $ [\mathbb M] $token
,10%
的概率是random token
,10%
的概率是original token
。我们将fragment length
$ k $ 设为句子中token
总数的大约50%
,同时研究不同的 $ k $ 对模型效果的影响。为了减少内存和计算成本,我们删除了解码器中的
padding
(即,masked token
),但保持unmasked token
的positional embedding
不变(例如,如果前两个token
被掩码和删除,第三个token
的位置仍然是2
而不是0
)。通过这种方式,我们可以获得类似的准确性,并减少解码器中50%
的计算量。我们使用
Adam
优化器进行预训练,学习率为 $ 10^{-4} $ 。该模型在8
个NVIDIA V100 GPU card
上进行训练,每个mini-batch
包含3000
个token
从而用于预训练。为了验证
MASS
的有效性,我们在三个语言生成任务上对预训练的模型进行了微调:神经机器翻译、文本摘要、对话式响应生成。我们在这些任务中探索了low-resource setting
,其中我们只是利用少数训练数据用于微调从而模拟low-resource
的场景。对于神经机器翻译,我们主要研究zero-resource setting
(无监督),因为近年来无监督的神经机器翻译已经成为一项具有挑战性的任务。
21.2.2 Fine-Tuning on NMT
这里,我们首先描述无监督神经机器翻译的实验,然后介绍低资源神经机器翻译的实验。
实验配置:对于无监督神经机器翻译,没有双语数据
bilingual data
来微调预训练的模型。因此,我们利用了预训练阶段的单语数据。与《Unsupervised neural machine translation》
、《Unsupervised machine translation using monolingual corpora only》
、《Phrase-based & neural unsupervised machine translation》
、《Unsupervised pivot translation for distant languages》
不同的是,我们只是利用back-translation
来生成pseudo bilingual data
从而用于训练,而不使用降噪自编码器。在微调过程中,我们使用Adam
优化器,初始学习率为 $ 10^{-4} $ ,每个GPU
的batch size
被设置为2000
个token
。在评估过程中,我们用multi-bleu.pl
(来自https://github.com/moses-smt/mosesdecoder/blob/master/scripts/generic/multi-bleu.perl
)在newstest2014
上评估English-French
的BLEU
分、在newstest2016
上评估English-German
和English-Romanian
的BLEU
分。无监督神经机器翻译的结果:我们的结果如下表所示。可以看到:
在所有
6
个翻译方向上,我们的方法优于之前的所有结果,包括没有预训练的方法(Lample et al., 2018
)和有预训练的方法(XLM
)。XLM
是之前的SOTA
方法,它在编码器和解码器中利用了BERT-like
的预训练,该预训练涵盖了几种预训练方法:masked language model: MLM
、causal language model: CLM
。我们的方法在en-fr
上仍然比XLM
高出4.1 BLEU point
。
与其他预训练方法相比:我们还将
MASS
与之前的语言生成任务的预训练方法进行比较。- 第一个
baseline
是BERT+LM
,在BERT
中使用masked language modeling
对编码器进行预训练,并使用standard language modeling
对解码器进行预训练。 - 第二个
baseline
是DAE
,它简单地使用去降噪自编码器denoising auto-encoder
来预训练编码器和解码器。
我们用
BERT+LM
和DAE
来预训练模型,并用XLM
相同的微调策略对无监督翻译pair
对进行微调(即DAE loss + back-translation
)。这些方法也采用6
层的Transformer
。如下表所示:
BERT+LM
取得了比DAE
更高的BLEU
分,而MASS
在所有无监督翻译pair
对的表现都超过了BERT+LM
和DAE
。虽然
DAE
通常利用一些降噪方法,如随机masking token
或互换相邻token
,但解码器仍然可以通过encoder-decoder attention
轻松地学会拷贝unmasked token
。另一方面,
DAE
中的解码器将完整的句子作为输入,这足以像语言模型一样预测下next token
,而不会被迫从编码器中提取额外的useful representation
。
- 第一个
Low-Resource NMT
实验:在低资源神经机器翻译的setting
中,我们分别WMT14 English-French, WMT16 English-German, WMT16 English-Romanian
的双语训练数据中抽取10K, 100K, 1M
个paired sentence
,从而探索我们的方法在不同low-resource
场景中的表现。我们使用在预训练阶段学到的相同的
BPE
代码来tokenize
这些training sentence pair
。我们用Adam
优化器在paired data
上对预训练模型进行了20K
步的微调,学习率为 $ 10^{-4} $ 。我们根据验证集的准确性选择最佳模型。我们报告在无监督setting
中使用的相同测试集上的BLEU
分。如下图所示,
MASS
优于baseline
模型,其中baseline
模型仅在双语数据上训练而没有在所有六个翻译方向进行任何预训练。这表明我们的方法在低资源场景下的有效性。即,
baseline
模型是传统的监督学习,而MASS
是pretraining + finetuning
。此外还可以看到:双语训练数据越少(即,资源越少),那么
MASS
相比baseline
的提升就越大。
21.2.3 Fine-Tuning on Text Summarization
实验配置:文本摘要是对长篇文本文档创建简短而流畅的
summary
,这是一项典型的序列生成任务。我们用来自Gigaword
语料库的不同规模(10K
、100K
、1M
、以及3.8M
)的训练数据在文本摘要任务上对预训练模型进行微调,其中Gigaword
语料库由总共3.8M
篇英文的article-title pair
组成。我们把article
作为编码器的输入、把title
作为解码器的输入从而用于微调。在评估过程中,我们报告了在Gigaword
测试集上的ROUGE-1
、ROUGE-2
、以及ROUGE-L
的F1
得分。我们使用beam size = 5
的beam search
从而用于推理。结果:我们的结果如下图所示。我们将
MASS
与仅在paired data
上训练而没有任何预训练的模型(即,baseline
)进行比较。在不同规模的微调数据上,MASS
始终优于baseline
(在10K
数据上获得超过10 ROUGE point
的增益,在100K
数据上获得超过5 ROUGE point
的增益),这表明MASS
在这个任务上在具有不同规模训练数据的低资源场景中是有效的。与其他预训练方法相比较:我们进一步将
MASS
与前面描述的BERT+LM
和DAE
的预训练方法进行比较,其中在文本摘要任务上使用了3.8M
的数据。如下表所示,MASS
在三个ROUGE
分数上一致地优于这两种预训练方法。
21.2.4 Fine-Tuning on Conversational Response Generation
实验配置:对话式响应生成为对话生成一个灵活的响应。我们在
Cornell Movie Dialog
语料库上进行了实验,该语料库包含140K
个conversation pair
。我们随机抽取10K/20K
个pair
作为验证集/测试集,剩余的数据用于训练。我们采用预训练阶段的相同优化超参数进行微调。我们遵从《A neural conversational model》
的方法,报告困惑度perplexity: PPL
的结果。结果:我们将
MASS
与baseline
进行比较,其中baseline
在现有可用的data pair
上训练得到。我们对两组训练数据规模进行实验:随机选择10K
个训练data pair
、所有的110K
个训练data pair
,并在下表中展示实验结果。在10K
和110K
的训练数据上,MASS
的PPL
都比baseline
更低。与其他预训练方法相比较:我们还将
MASS
与BERT+LM
和DAE
的预训练方法在对话式响应生成任务上进行了比较。如Table 5
所示,在10K
和110K
的训练数据上,MASS
的PPL
都比这两种预训练方法更低。
21.2.5 MASS 的分析
不同
$ k $ 值的研究:masked fragment
的长度 $ k $ 是MASS
的一个重要的超参数。如前所述,通过改变 $ k $ 值,可以覆盖masked language modeling
(参考BERT
)、以及standard language modeling
的特殊case
。在这一节中,我们研究了不同 $ k $ 值的MASS
的性能,我们选择 $ k $ 占句子长度 $ m $ 的10% ~ 90%
,步长为10%
,再加上 $ k=1 $ 和 $ k=m $ 。我们观察了
MASS
在预训练的表现,以及在几个语言生成任务中微调的表现,包括无监督的English-French
翻译、文本摘要、以及对话式响应生成。我们首先展示了在不同的
$ k $ 值,预训练模型在英语和法语上的perplexity: PPL
。我们选择WMT En-Fr
的newstest2013
中的英语句子和法语句子作为验证集,并绘制PPL
如下图所示(图(a)
为英语、图(b)
为法语)。可以看到:当
$ k $ 在句子长度 $ m $ 的50%
到70%
之间时,预训练的模型达到了最佳的validation PPL
。然后我们观察微调任务的表现。我们在
(c)
中显示了无监督En-Fr
翻译的validation BLEU
分数的曲线,在图(d)
中显示了文本摘要的validation ROUGE
分数,在图(e)
中显示了对话式响应生成的validation PPL
。可以看到,当
$ k $ 接近句子长度 $ m $ 的50%
时,MASS
在这些下游任务上取得了最佳性能。
因此,我们在实验中为
MASS
设定了 $ k $ 为 $ m $ 的50%
。实际上,
$ k $ 等于 $ m $ 的50%
是编码器和解码器之间的一个良好平衡。encoder side
或decoder side
的有效token
太少,会使模型偏向于更多地关注另一侧,这不适合语言生成任务。因为语言生成任务通常利用encoder-decoder
框架在编码器中抽取sentence representation
,以及在解码器中建模和生成句子。极端情况是 $ k = 1 $ (BERT
中的masked language modeling
)和 $ k = m $ (standard language modeling
)。如下图所示, $ k = 1 $ 和 $ k = m $ 都不能在下游的语言生成任务中取得良好的性能。MASS
的消融研究:在我们的masked sequence to sequence
预训练中,我们有两个精心的设计:- 我们在
encoder side
掩码连续的token
,从而在decoder side
预测连续的token
,这比仅仅预测离散的token
可以建立更好的语言建模能力。 - 我们掩码解码器的
input token
,其中这些token
在encoder side
没有被掩码,从而鼓励解码器从encoder side
抽取更多有用的信息,而不是利用decoder side
的previous tokens
的丰富信息。
在本节中,我们进行了两项消融研究,以验证
MASS
中两种设计的有效性:- 第一项研究是在
MASS
中随机掩码离散的token
而不是连续的token
,记做Discrete
。 - 第二项研究是将所有的
token
馈入解码器,而不是掩码解码器的input token
(其中这些token
在encoder side
没有被掩码)记做Feed
。
我们将
MASS
与这两种消融方法在无监督的English-French
上进行比较,如下表所示。可以看到,Discrete
和Feed
的表现都比MASS
更差,证明了MASS
的这两种设计的有效性。这里就一个例子,是不是说服力不强?可以在更多的数据集上进行评估。
- 我们在
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论