这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战
上一篇文章我们介绍了Transformer,这篇文章我们一起看一下他的衍生网络之一Bert。
Bert
整体框架
Bert采用了Transformer的编码器结构,但是网络结构比Transformer更深,有BERT BASE 和BERT LARGE两个版本。Bert是给基于微调的模型,完成新的任务只需要增加一个简单的输出层即可,它在大规模数据上进行训练,训练主要分为两个阶段:预训练阶段(在大型数据集上进行训练得到预训练模型)和Fine-tuning阶段(后续迁移到其他任务中的微调)
对输入的修改
与Tranformer模型进行比较,Bert对输入的修改包括以下几个部分:
- 输入的每一个样本是一个句子对
- 加入了[CLS]和[SEP]分隔符
- 使用Segment Embedding区分每个单词归属于那个句子
- 位置编码信息通过模型训练过程中学习得到的
预训练任务一:带掩码的语言模型
使用 < mask > 随机掩盖句子中的一部分单词,然后传入Bert模型,预测掩盖位置的正确单词,这样预测词时能看到上下文的信息,从而更好的根据全文理解单词的意思。
预训练任务二:下一个句子预测
将50%传入句子对的第二个句子的替换成预料库中的随机句子,然后预测第二个句子是否承接上一句,以此让模型学习到全文的信息。
微调
预训练完得到模型之后就可以利用微调让模型适应下游任务,下图时四个常见的下游任务。