BERT和ERNIE记录

主要是对

BERT: Pre-training of Deep Bidirectional Transformers for Language Understandingtichu提出的BERT

以及ERNIE: Enhanced Language Representation with Informative Entities提出的ERNIE这两个模型的学习记录

BERT  

看BERT之前先看https://www.cnblogs.com/dyl222/p/10888917.html  因为它所使用的特征抽取器是《Attention is all you need》中提出的Transformer

论文翻译看:

https://zhuanlan.zhihu.com/p/52248160

BERT的具体解读看:https://blog.csdn.net/yangfengling1023/article/details/84025313

BERT属于一种两阶段的模型,第一阶段是基于大规模无监督语料进行预训练(pre-train)第二阶段是结合具体的任务进行微调(fine-tuning),它最大的优势是效果好,通过多层的Transformer从海量的无监督语料中所抽取出的语言学特征有很强的泛化性,对下游任务能够起到很好的特征补充作用。

它最大的创新点在于它所提出的两个新的预训练任务:

1、Masked LM

Masked LM随机的从输入中遮罩一些词,目标是只通过它的上下文去预测这些遮罩词,它能够充分的利用上下文,和Bi-LSTM这种通过拼接来实现的弱双向相比,它所实现的是真正的双向。

在所有的实验中,我们在每一个序列中随机的遮盖了15%的WordPiece标记。

虽然这允许我们做双向的预训练模型,但是这种方法仍然有两个弊端。第一个是这种方法会让预训练模型和调参法不能相互匹配,因为[MASK]标记在调参法中是不存在的。为了消除这个弊端,我们并不总是把遮盖的词用[MASK]表示,而是在训练数据中对随机的产生15%的标记用[MASK]表示,比如,在句子"my dog is hairy"中选择"hairy",然后通过以下的方式产生标记:
* 并不总是用[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"。

第二个弊端是使用一个MLM意味着每个batch中只有15%的标记会被预测,所以在与训练的时候收敛需要更多步。在5.3中我们会阐述MLM的收敛速度比从左至右的模型(预测每一个标记)慢,但是和MLM带来的巨大提升相比,这么做是值得的。

2.Next Sentence Prediction

很多重要的下游任务如问答和自然语言推断(NLI)是基于两个句子之间的理解的,语言模型并不能直接捕获到这种关系。为了徐连可以理解句子关系的模型,我们预训练了一个可以从任何单语语料库中轻松产生的二值化的下句预测任务。特别的,当为每个预训练模型选择句子A和句子B时,50%的情况B就是A的下一句,50%的情况下时预料中随机选择的句子。比如:

输入部分:

 输入由三部分组成分别为word embedding位置向量以及段向量

我们在30000个词上使用了WordPiece嵌入,把拆分的词片段(word pieces)用"##"标注(译者注:见图中"playing"-"play ##ing")

每一句的句首使用了特殊的分类嵌入([CLS])。这个标记。在最终的隐藏层中(也就是转换器的输出)对应的是分类任务中序列标识的聚合表示。非分类任务中这一标记将被忽略。也就是在处理分类下游任务时选用[CLS]向量作为输入,因为它所代表的是句向量

 句子对被打包在一起作为一个句子。我们用两种方法区别他们,首先,我们把他们用特殊的标记([SEP])区分开,然后我们会给第一句的每一个标记添加一个学习到的句子 A 的嵌入,给第二句的每个标记添加一个学习到的句子 B 的嵌入
* 对于单个句子输入我们只使用句子 A 的嵌入。

句子A的段向量输入全为0,句子B的段向量输入全为1

 BERT的优势:

1)通过MLM实现的是真正的双向,ELMO中使用的Bi-LSTM对正向和反向的表征进行拼接实现的只是一种弱双向。

2)选用Transformer作为特征抽取器,相比于CNN能够获得更多的全局信息,相比于LSTM等RNN系列的特征抽取器,它能够实现并行,同时还引入了多层,尽管NLP方面的多层不能简单的和图像方面的多层进行比较,但是这也是一大进步,在NLP方面引入了多层能够抽取到更丰富的信息。

3)最大的优势是它明确了如何对海量的无监督的语料进行利用的一个方向,通过pre-train所抽取出的语言学特征具有很强的泛化性,好比于图像领域的image-net,只需在下游具体任务少量语料的基础上进行fine-tuning就能够取得很好的效果。

在位置信息非常重要的NLP任务中,唯一值得诟病的可能是它的position embedding,对位置信息要求比较高的具体任务中在BERT后再加入一层Bi-LSTM可能能够获得更好的效果,但是这又违背了BERT的初衷,本就为了彻底抛弃CNN和RNN。

猜你喜欢

转载自www.cnblogs.com/dyl222/p/10960842.html
今日推荐