Bert模型: 无监督:预训练
【深度学习|Bert模型】有监督:微调
BERT的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,
文章图片
文章图片
144个self-attention机制
离当前字的距离越远,相关程度越低
文章图片
Bert模型的输入:3部分
nsp二分类任务:处理2个句子之间的关系,所以加特殊符号,
cls向量不能代表整个句子的语义信息。
cls的作用:训练时,将cls的输出向量接一个二分类器。
文章图片
这里的Embedding由三种Embedding求和而成:
其中:
- Token Embeddings是词向量,第一个单词是CLS标志,可以用于之后的分类任务
- Segment Embeddings用来区别两种句子,因为预训练不光做LM还要做以两个句子为输入的分类任务
- Position Embeddings和之前文章中的Transformer不一样,不是三角函数而是学习出来的
文章图片
文章图片
文章图片
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向量。
文章图片
把cat的one-hot向量记为e,希望让p接近于e,把e和p的crossEntropy作为损失函数,用反向传播计算出损失函数关于模型参数的梯度,然后用梯度下降更新模型参数。
Bert模型任务二:预测下一个句子;
文章图片
文章图片
最前面放了一个CLS,占一个位置,输出向量c。向量c不止依赖于CLS符号,向量c包含两句话的全部信息,靠c可以判断出两句话是否真的相邻。把c作为一个特征向量输入一个分类器,分类器的输出是一个介于0~1之间的f,1代表True,分类器认为两句话是从原文中拿出来的;0代表false,分类器认为第二句话是假的。用crossEntropy作为损失函数来预测衡量f与真实标签之间的区别,有了损失函数,就可以用梯度下降更新参数。目的作用:强化句子间的相关性。
推荐阅读
- 论文阅读|bert 源码解读(基于gluonnlp finetune-classifier)
- bert|BERT模型的深度解读
- NLP|【Bert】(十一)简易问答系统--源码解析(bert基础模型)
- dl|bert源码解析-modeling.py
- NLP|深度学习之文本分类 ----FastText
- 深度学习原理及实战|手把手教你深度学习和实战-----逻辑回归算法
- YOLOv5|基于改进YOLOv5轻量化的烟火检测
- 机器视觉|工业检测深度学习方法综述
- YOLOv7|YOLOv7 训练报错 IndexError: list index out of range