题目标题

bert原理

难度:初级

算法 NLP
参考解析
  1. BERT整体结构
    Embedding + Transformer Encoder + Loss优化
    1) Embedding :
    word embedding(无预训练) + position embedding + type embedding
    BERT输入的数据是两句话,通过【sep】分隔符标记,分割符前称为前段,分隔符后面的称为后段,一次输入两句,是为了后面计算一个叫classification的loss;
    2)Transformer Encoder:
    Multi_Head Attention (多头注意力机制) + Feed Forward (前向传播)
    3)Loss 定义——模型怎么训练?
    总的来说是Mask Language Model + Next sentence prediction
    Mask Language Model:将输入句子‬mask(挖)掉一个词,然后通过上下文的词来预测这个词。通过预测的loss,计算Mask LM Loss
    Next sentence prediction:在word embedding的时候说到,模型的输入是由【sep】标记分割的两句话,因此这两句话有两种可能,一、两句话出自同一篇文章,上下两句是连续的,classfication 为True;二、两句话不相关,不是上下文关系,classfication 为False。
    因此整个模型通过优化这两个任务的损失,来训练整个模型。
  2. 模型实现上的一些细节
    预训练数据的构建:
    输入的两个部分都是包含完整的句子;
    同一个句子不会同时Mask同一个词;
    非连续的句子都是取自不同的文档;
    有一些输入采用(padding 补齐)
    对于超长的文本,随机从句子头和尾消减
    模型:
    Encoder LM任务的输出,经过一个gelu非线性层,再进行LM loss计算
    Classify任务输出后经过一个tanh非线性层,再进行二分类