深度学习|Bert模型

Bert模型: 无监督:预训练
【深度学习|Bert模型】有监督:微调
BERT的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,





深度学习|Bert模型
文章图片

深度学习|Bert模型
文章图片



144个self-attention机制


离当前字的距离越远,相关程度越低
深度学习|Bert模型
文章图片



Bert模型的输入:3部分
nsp二分类任务:处理2个句子之间的关系,所以加特殊符号,
cls向量不能代表整个句子的语义信息。
cls的作用:训练时,将cls的输出向量接一个二分类器。
深度学习|Bert模型
文章图片
这里的Embedding由三种Embedding求和而成:
其中:

  • Token Embeddings是词向量,第一个单词是CLS标志,可以用于之后的分类任务
  • Segment Embeddings用来区别两种句子,因为预训练不光做LM还要做以两个句子为输入的分类任务
  • Position Embeddings和之前文章中的Transformer不一样,不是三角函数而是学习出来的

深度学习|Bert模型
文章图片









深度学习|Bert模型
文章图片

深度学习|Bert模型
文章图片

bert的第一个任务:预测被遮挡的单词。

深度学习|Bert模型
文章图片

用神经网络来预测 被遮挡的单词。
深度学习|Bert模型
文章图片


把输入的第二个单词替换成MASK符号,MASK符号会被Embedding层编码成词向量Xm,把MASK位置的输出记作向量uM,Transform的Encoder网络不是一对一映射,而是多对一,uM向量不仅依赖于Xm,而且依赖于所以的X向量,uM在MASK位置上,但uM知道整句话(the sat on the mat)的信息,uM包含上下文信息,所以可以用uM来预测被遮挡的单词。把uM作为特征向量输入softmax分类器,分类器的输出是一个概率分布p,遮挡住的是单词cat,希望分类器的输出p向量接近于cat的one-hot向量。
深度学习|Bert模型
文章图片


把cat的one-hot向量记为e,希望让p接近于e,把e和p的crossEntropy作为损失函数,用反向传播计算出损失函数关于模型参数的梯度,然后用梯度下降更新模型参数。
Bert模型任务二:预测下一个句子;
深度学习|Bert模型
文章图片

深度学习|Bert模型
文章图片



最前面放了一个CLS,占一个位置,输出向量c。向量c不止依赖于CLS符号,向量c包含两句话的全部信息,靠c可以判断出两句话是否真的相邻。把c作为一个特征向量输入一个分类器,分类器的输出是一个介于0~1之间的f,1代表True,分类器认为两句话是从原文中拿出来的;0代表false,分类器认为第二句话是假的。用crossEntropy作为损失函数来预测衡量f与真实标签之间的区别,有了损失函数,就可以用梯度下降更新参数。目的作用:强化句子间的相关性。

    推荐阅读