每周论文1

1️⃣[Learned in Translation: Contextualized Word Vectors]

CoVe是第一个引入动态词向量的模型。
Motivation:翻译模型能够保存最多的信息,因为如果保存信息不够多,decoder接收到的信息不足,翻译效果就不会好。(但实际上,我个人认为,decoder的表现还和language model有关,如果decoder是一个好的language model,也有可能翻译出不错的结果)

做法:使用传统NMT的encoder-decoder的做法翻译模型,只是将(bi)LSTM所得到的隐层状态表示取出来和embedding拼接起来,作为一个词的表示:


2️⃣[Language Modeling with Gated Convolutional Networks]

使用CNN对语言模型进行建模,提高并行性。

贡献:使用了CNN进行language model建模;提出了简化版的gate机制应用在CNN中。

做法:

实际上就是一个输入两个filter,卷积出来的做一个gate的操作$H_0 = A⊗σ(B)$,控制流向下一层的数据。

一个小细节是,为了不让language model看到下一个词,每一层在开始卷积的时候会在左边添加kernel_size-1个padding。

扩展:因为CNN的并行性高,可以使用CNN来对language model建模替代ELMo,同样可以获得动态词向量。这个想法已经由提出ELMo的团队做出来并进行对比了。论文:Dissecting Contextual Word Embeddings: Architecture and Representation

目前正在复现该论文 。


3️⃣[Attention is All you need]

非常经典的论文。提出了Transformer。为了读BERT重温了一遍。


4️⃣[Improving Language Understanding by Generative Pre-Training]

BERT就是follow这篇文章的工作。
使用Transformer预训练一个language model进行迁移学习。

训练过程分为两步:①使用未标记数据训练language model;②使用有标记数据进行fine-tune

Motivation:ELMo是训练好language model,然后获得动态词向量再用到其他任务上,这样就会多了很多参数。和ELMo不同的是,这里使用一个Transformer模型解决多种任务(利用迁移学习)。

贡献:使用Transformer进行language model建模;尝试利用language model进行迁移学习而不是另一种思路(ELMo)只提取词向量。

①无监督学习language model

具体到Transformer就是:

②监督学习(fine-tune)
根据输入预测标签

具体就是:

将两个任务一起训练,则有:

对于不同任务,对输入进行一定的改动以适应Transformer结构:


5️⃣[BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding]

刷爆各榜单的一篇神文。使用Transformer预训练一个language model进行迁移学习。

Motivation:之前的language model只能根据前面的词来预测下一个(即使ELMo是双向的LSTM,也是分别训练一个前向和一个后向的),限制了双向的context;因此提出了双向的language model。

做法:

模型分为两个部分:
①masked LM:因为使用了两边的context,而language model的目的是预测下一个词,这样模型会提前看到下一个词,为了解决该问题,训练的时候讲部分词mask掉,最终只预测被mask掉的词。

②Next Sentence Prediction:随机50%生成两个句子是有上下句关系的,50%两个句子是没有关系的,然后做分类;具体来说是拿第一个词[CLS](这是手动添加的)的表示,过一个softmax层得到。

联合训练这两个任务。

接下来是通过具体的任务进行fine-tune。一个模型解决多种问题:

本文贡献:使用Transformer进行双向的language model建模。论文提到的一些细节/tricks非常值得讨论,比如对token embedding添加了许多信息,非常简单粗暴。