BERT简介
今天来讲讲BERT,就是上面这个淡黄色肤色的家伙, 据《芝麻街》前编辑说,它和Ernie是Gay Couple,oh my god ... ...
开个玩笑,言归正传!BERT是基于语义理解的深度双向与训练模型,全称Bidirectional Encoder Representation from Transformers。BERT来自Google的论文《Pre-training of Deep Bidirectional Transformers for Language Understanding》,它做了两个事情,分别是MaskedLM和Next Sentence Prediction。从名字就能看出,它其实来自transformer的encoder部分。其网络架构如下图:
值得注意的是,相较于Transformer,BERT的输入还多了一个Segment Embeddings.
Pre-training Task
1.MaskedLM
这个做法类似完形填空,需要根据上下文语境做预测。
具体来说就是,随机mask语料中15%的Token,让模型去预测这些token。由于[mask]标记在后续任务中并不存在,作者解决方案是,其中80%用[mask]标记替换;有10%用随机采样的一个单词来替换,最后10%不替换。这样做的另一个好处是,使得模型更多的依赖上下文信息来预测,同时让它有了一定的纠错能力。
2.Next Sentence Prediction
句子级别的连续性预测任务,即预测输入的两端文本是否是连续的,这个任务可以更好的让模型学到连续文本片段之间的关系。
例如:输入:“醒醒吧”,“你没有女朋友”,
输出:True。
(其实就是判断这两个句子是否是上下句关系。)
值得注意的是,BERT对这两个任务同时训练,得到的效果才是最好的。
Q&A
- Q: BERT的优势哪里?
- A: 相比于一般RNN,它可以并行处理,这得益于self-attention机制,另外它采用的Multi-Head Attention,将一个词放到更高的维度进行学习,每一维度都能学到不同的东西,更细化。
- Q: 什么是self-attention?
- A: Attention的做法来自Transformer,论文名称是《Attention Is All You Need》,我的理解是:ta对句子中的所有词赋予一个权重,训练时把更多的注意力放在权重大的词上。有兴趣的同学可以参考Reference(已经把比较好的资料整理好了)
- Q: Segment Embedding和Position Embedding是用来干嘛的?
- A: Position Embedding是用来表示词在句中所在位置的,因为当文字出现在不同位置时所表示的语义可能是存在差异的;Segment Embedding是在做第二个任务时用来表示两个句子是否是连句的。
Reference:
【Seq2Seq】
https://www.youtube.com/watch?v=ZjfjPzXw6og&feature=youtu.be
【Transformer】
https://www.youtube.com/watch?v=ugWDIIOHtPA
【BERT】
https://www.youtube.com/watch?v=UYPa347-DdE
【BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding】
https://arxiv.org/abs/1810.04805
[Attention Is All You Need ]
https://arxiv.org/abs/1706.03762