BERT模型介绍
BERT模型的全称是:BidirectionalEncoder Representations from Transformer。从名字中可以看出,BERT模型的目标是利用大规模无标注语料训练、获得文本的包含丰富语义信息的Representation,即:文本的语义表示,然后将文本的语义表示在特定NLP任务中作微调,最终应用于该NLP任务
模型输入、输出
BERT 模型中每个 token 的输入表示由三个 Embedding 向量求和得来,即:
- token embedding: 每个词本身的 embedding。
- segment embedding:每个词所在句子的标记 embedding,来自同一个句子的词它们的segment embedding是相同的,也就是说,该embedding本意在于区分词的来源,它向最终的输入表示提供了句子来源信息,有助于文本对的训练任务。
- position embedding:句子中每个词位置的 embedding,类似于 Transformer 中的 positional encoding,不同之处在于,BERT模型会直接学习每个词的位置表示,而 Transformer 是利用双曲函数对其位置进行固定编码。
对于不同的NLP任务,模型输入会有细微调整,例如:
- 单文本分类任务:对于文本分类任务,BERT模型在文本前插入一个[CLS]符号,并将该符号对应的输出向量作为整篇文本的语义表示,用于文本分类,如下图所示。可以理解为:与文本中已有的其它字/词相比,这个无明显语义信息的符号会更“公平”地融合文本中各个字/词的语义信息。
- 语句对分类任务:该任务的实际应用场景包括:问答(判断一个问题与一个答案是否匹配)、语句匹配(两句话是否表达同一个意思)等。对于该任务,BERT模型除了添加[CLS]符号并将对应的输出作为文本的语义表示,还对输入的两句话用一个[SEP]符号作分割,并分别对两句话附加两个不同的文本向量以作区分,如下图所示。
预训练任务
在预训练阶段,模型有两个任务,即Masked Language Model (简称MLM) 和Next Sentence Prediction (简称NSP)MLM
MLM的任务描述为:给定一句话,随机抹去这句话中的一个或几个词,要求根据剩余词汇预测被抹去的几个词分别是什么
具体来说,文章作者在一句话中随机选择15%的词汇用于预测。对于在原句中被抹去的词汇,80%情况下采用一个特殊符号[MASK]替换,10%情况下采用一个任意词替换,剩余10%情况下保持原词汇不变。这么做的主要原因是:在后续微调任务中语句中并不会出现[MASK]标记,而且这么做的另一个好处是:预测一个词汇时,模型并不知道输入对应位置的词汇是否为正确的词汇(10%概率),这就迫使模型更多地依赖于上下文信息去预测词汇,并且赋予了模型一定的纠错能力。
NSP
NSP的任务描述为:给定一篇文章中的两句话,判断第二句话在文本中是否紧跟在第一句话之后
假设选取句子对A和B:
- 有 50% 的概率选取的句子B就是句子A的下一句(将句子对标记为IsNext)
- 有 50% 的概率句子B是从语料库中随机选取的句子 (将句子对标记为NotNext)
模型结构
BERT用的是transformer的encoder结构(下图的红色部分)
把多个Transformer Encoder一层一层地堆叠起来,就得到了BERT模型
BERT Fine-tuning
BERT的fine-tuning,与GPT的第二阶段类似,通常是根据任务在pre-training模型上再加一层简单的网络层
参考资料
https://cloud.tencent.com/developer/article/1389555
https://zhuanlan.zhihu.com/p/558393190?utm_id=0
标签:BERT,模型,语义,embedding,文本,句子 From: https://www.cnblogs.com/xumaomao/p/17926633.html