词向量——BERT

BERT(Bidirectional Encoder Representations from Transformers)词向量模型,2018年10月在《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》这篇论文中被Google提出,在11种不同nlp测试中创出最佳成绩,包括将glue基准推至80.4%(绝对改进7.6%),multinli准确度达到86.7% (绝对改进率5.6%)等。参考资源goo.gl/language/bert,下面从几个方面来介绍。北京航空航天大学计算机专业博士吴俣在知乎上写道:bert模型的地位类似于resnet在图像,这是里程碑式的工作,宣告着nlp范式的改变。以后研究工作估计很多都要使用他初始化,就像之前大家使用word2vec一样自然。

另外,有一篇很专业全面的业内人士对BERT的总结,很值得一看。

1.产生场景

目前将预训练的词向量应用于下游任务有两种策略:基于特征方法和调参方法。 基于特征的方法(如ELMo)使用特定于任务的结构,将预先训练的词向量作为附加特征。微调方法(如OpenAI GPT),引入了最小的任务特定参数,并通过简单地微调预训练参数来训练下游任务。

这篇文章认为当前的技术严重限制了预先训练的词向量的power,尤其是微调方法。因为标准语言模型是单向的,这限制了在预训练期间结构的选择。 例如,在OpenAI GPT中,作者使用从左到右的架构,其中每个token都只能参加了Transformer的self-attention层中的前面的token。这些限制对于句子级任务来说是次优的,并且在将基于微调的方法应用于token级任务时可能是毁灭性的,比如SQuAD问题回答。

为了解决上面的问题,BERT提出了masked language model (MLM)和下一句预测(next sentence prediction)任务。

2.特征

(1)通过联合调节所有层中的左右上下文来预训练深度双向表示

(2) the first fine-tuning based representation model that achieves state-of-the-art performance on a large suite of sentence-level and token-level tasks, outperforming many systems with task-specific architectures

(3)所需计算量非常大。Jacob 说:「OpenAI 的 Transformer 有 12 层、768 个隐藏单元,他们使用 8 块 P100 在 8 亿词量的数据集上训练 40 个 Epoch 需要一个月,而 BERT-Large 模型有 24 层、2014 个隐藏单元,它们在有 33 亿词量的数据集上需要训练 40 个 Epoch,因此在 8 块 P100 上可能需要 1 年?16 Cloud TPU 已经是非常大的计算力了。

(4)预训练的BERT表示可以通过一个额外的输出层进行微调,适用于广泛任务的state-of-the-art模型的构建,比如问答任务和语言推理,无需针对具体任务做大幅架构修改。

如上图:BERT的task specific模型是通过将预训练层与一个额外的输出层结合而形成的,图中,E represents the input embedding, Ti represents the contextual representation of token i

3.训练

不使用传统的从左到右或从右到左的语言模型来预训练BERT。 相反,使用两个新的无监督预测任务预训练BERT,分别是MLM和next sentence prediction。训练所用语料库为the concatenation of BooksCorpus (800M words)  and English Wikipedia (2,500M words)

(1)MLM(Cloze task)

A.原理

MLM从输入中随机地掩盖一些token,并且目标是仅基于其上下文来预测被掩盖的单词的原始词汇id。与从左到右的语言模型预训练不同,MLM 目标允许表征融合左右两侧的上下文,从而预训练一个深度双向 Transformer。与masked token对应的最终隐藏向量被输入到词汇表上的输出softmax中。

B.缺点

a.预训练和fine-tuning之间不匹配,因为在fine-tuning期间从未看到[MASK]token。

为了解决这个问题,团队并不总是用实际的[MASK]token替换被“masked”的词汇。相反,训练数据生成器随机选择15%的token。例如在这个句子“my dog is hairy”中,它选择的token是“hairy”。不是总是将选择的token替换为 [MASK], 数据生成器会执行以下过程:

80%的时间:用[MASK]标记替换单词,例如,my dog is hairy → my dog is [MASK]

10%的时间:用一个随机的单词替换该单词,例如,my dog is hairy → my dog is apple

10%的时间:保持单词不变,例如,my dog is hairy → my dog is hairy. 这样做的目的是将表示偏向于实际观察到的单词。

Transformer encoder不知道它将被要求预测哪些单词或哪些单词已被随机单词替换,因此它被迫保持每个输入token的分布式上下文表示。此外,因为随机替换只发生在所有token的1.5%(即15%的10%),这似乎不会损害模型的语言理解能力。

b.每个batch只预测了15%的token,这表明模型可能需要更多的预训练步骤才能收敛。

团队证明MLM的收敛速度略慢于 left-to-right的模型(预测每个token),但MLM在实验上获得的提升远远超过增加的训练成本。

(2)next sentence prediction

许多重要的下游任务,如问答(QA)和自然语言推理(NLI)都是基于理解两个句子之间的关系,这并没有通过语言建模直接获得。为了训练一个理解句子的模型关系,BERT预先训练了一个二进制化的下一句测任务,这一任务可从任何单语语料库( monolingual corpus)中生成。具体地说,当选择句子A和B作为预训练样本时,B有50%的可能是A的下一个句子,也有50%的可能是来自语料库的随机句子。例如:

BERT完全随机地选择了NotNext语句,最终的预训练模型在此任务上实现了97%-98%的准确率

4.fine-tuning

For fine-tuning, most model hyperparameters are the same as in pre-training, with the exception of the batch size, learning rate, and number of training epochs.

Large data sets (e.g.,100k+ labeled training examples) were far less sensitive to hyperparameter choice than small datasets.

Fine-tuning is typically very fast, so it is reasonable to simply run an exhaustive search over the above parameters and choose the model that performs best on the development set

5.评估

BERT评估用到了GLUE benchmark(包含8个task)和The Standford Question Answering Dataset(SQuAD)、CoNLL 2003 Named Entity Recognition (NER) dataset、The Situations With Adversarial Generations (SWAG) dataset共11个task


其中,The General Language Understanding Evaluation (GLUE) benchmark (Wang et al., 2018) is a collection of diverse natural language understanding tasks,包含QQP(Quora Question Pairs)、SST-2 (The Stanford Sentiment Treebank,在评估ELMo中也用到过)等dataset,GLUE结果如下,吊打所有其他的。

The Standford Question Answering Dataset(SQuAD)                              NER

                         

The Situations With Adversarial Generations (SWAG)

6.扩展研究

文章最后一章还探讨了Effect of Pre-training Tasks、Effect of Model Size、Effect of Number of Training Steps、Feature-based Approach with BERT(得出结论BERT is effective for both the fine-tuning and feature-based approaches)

猜你喜欢

转载自blog.csdn.net/zhiman_zhong/article/details/84392679
今日推荐