BERT原理详解
一、BERT原理
1.1 BERT原理
网上关于BERT的模型讲的好的很多
参考
BERT模型学习与分析
1.2 BERT 和 OpenAI GPT 区别与联系
这里简单描述一下BERT和OpenAI GPT模型区别与联系
BERT和GPT 都是使用了Transformer结构,Transform的Encoder和Decoder是有区别的,这也是BERT和GPT的区别,很多博客描述GPT用的是Transform的Decoder部分,BERT用的是Encoder部分,这是对的,不过还有人不理解区别在哪,区别就在Masked attention,说白了就是attention的叠加方向不一样,模型真没啥区别,再往细里说,Decoder之所以是masked attention,因为是解码嘛,自然在做attention时候不能给词语看到未来信息,比如下面这个图:
所以GPT用的就是Decoder部分:
GPT训练方式和NNLM一样,利用前n-1个词预测第n词训练向量。
BERT是如何训练的?
两个点:
- 对中间的词利用一定规则变成mask(规则指masked LM),然后把这些要预测的词做成标签进行预测。
- 多任务,预测两个句子是不是有关联性。
这里提一下masked LM:
随机屏蔽(masking)部分输入token,然后只预测那些被屏蔽的token。在这个例子中,与masked token对应的最终隐藏向量被输入到词汇表上的输出softmax中,就像在标准LM中一样。随机地屏蔽了每个序列中15%的WordPiece token。与去噪自动编码器相反,只预测masked words而不是重建整个输入。
以“my dog is 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. 这样做的目的是将表示偏向于实际观察到的单词。
使用masked LM 缺点(也是BERT缺点):
A:因为[MASK]字符在fine-tuning阶段根本不会存在,所以在pre-training阶段用[MASK]代替原来的word参与训练,会导致pre-training和fine-tuning阶段mismatch。
B:因为在每一轮训练(each batch)只有15%的tokens会被预测,pre-training阶段的模型收敛就需要迭代更多的steps
XLNET可以解决BERT的缺点(下一章准备写)