Bert学习记录

这里写自定义目录标题

2018年的10月11日,Google公司发布了《Pre-training of Deep Bidirectional Transformers for Language Understanding》,成功地在11项NLP任务中取得了state of the art的结果,获得了一众赞誉。
论文原文链接:《Pre-training of Deep Bidirectional Transformers for Language Understanding》

Seq2Seq模型

传统的机器翻译基本都是基于Seq2Seq模型来做的,该模型包括了Encode层和Decode层,并均为RNN或RNN的变体构成。
Bert学习记录Encode阶段第一个结点输入一个词,下一个结点会输入一个词和上一个节点的hidden state,最后,Encode阶段会输入一个context,这个context会作为Decode的输入,然后每个Decode的结点都会输出一个词和一个hidden state作为下一个Decode结点的输入。

Attention

Attention,顾名思义,注意力,这个模型在Decode阶段,会选择最适合当前结点的context进行输入。
Decoder选择最合适的hidden state作为输入,具体选择步骤如下:
1)计算每一个hidden state的相关分数值
2)对每一个hidden state的分数值进行一个softmax的计算,使hidden state之间的分数值差距变大
Bert学习记录

Transformer

和Attention一样,Transformer也采用了encoder-decoder的架构,但比Attention要复杂,由多层encoder-decoder堆叠构成。
Bert学习记录每一个encoder和decoder的内部结构简版如下:
Bert学习记录

Bert训练方法

1)句子中有15%的词汇被随机遮蔽掉
2)交给模型去预测被mask的词汇是什么
3)中文词语的可能性太多,一般采用字
4)如果bert训练的向量好,那分类也就好
该方法有一个问题,因为是mask15%的词,其数量已经很高了,这样就会导致某些词在fine-tuning阶段从未见过,为了解决这个问题,作者做了如下的处理:
1)80%的时间是采用[mask]
2)10%的时间是随机取一个词来代替mask的词
3)10%的时间保持不变

总结

总结BERT的贡献
1)引入了Masked LM,使用双向LM做模型预训练。
2)为预训练引入了新目标NSP,它可以学习句子与句子间的关系。
3)进一步验证了更大的模型效果更好: 12 --> 24 层。
4)为下游任务引入了很通用的求解框架,不再为任务做模型定制。