一、Bert的模型结构
trm
Input
Input = token emb + segment emb + position emb
- CLS: classifier 分类(NLP分类任务)
- SEP:seprator 分隔两句语料,当系统发现SEP之后,就是你当前这句话就已经结束了
- ##ing : 字词分隔,把一个复杂的英文单词把它拆分成对应的>=2 tokens, 像原token是playing,拆分成play + ing
- 将CLS的输出向量接一个二分类器,做一个二分类任务。
- Segment Embeddings 需要对两个句子进行区分,假设第一个句子全用0来表示,第二个句子都用1来表示,代表两个句子
- Position Embeddings 的初始位置是随机初始化,让模型自己去学习更新。
MLM掩码语言模型
- AR(autoregressive) 自回归模型,只考虑单侧的信息,典型的就是GPT
- AE(autoencoding) 自编码模型: 从损坏的输入数据中预测重建原始数据,可以使用上下文的信息,Bert就是使用的AE
mask的概率问题
网友:为了解决pretraining 和 fine tuning 的 mismatch问题
NSP
NSP样本如下:
- 从训练语料库中取出两个连续的段落作为正样本
- 从不同的文档中随机创建一堆段落作为负样本
缺点:主题预测和连贯性预测合并为一个单项任务。- 主题预测:判断两个样本是不是来自同一个文档
- 连贯性预测:判断两个段落是不是顺序关系
如何微调BERT
微调:预训练模型基础上,添加全连接,softmax
一般做法:
- 获取谷歌中文BERT
- 基于任务数据进行微调
BERT的输出
- 可以做情感识别,监督学习的任务
多句话的文本分类和一句话的文本分类
- O:代表不属于任何一个实体
- B:begin实体的开始
- M:中间的实体
- PER:person指的是一个人名
应用
- 文本分类
- 知识问答