一、Bert整体模型架构
基础架构是transformer的encoder部分,bert使用多个encoder堆叠在一起。
主要分为三个部分:1、输入部分 2、注意力机制 3、前馈神经网络
bertbase使用12层encoder堆叠在一起,6个encoder堆叠在一起组成编码端,6个decoder堆叠在一起组成解码端。
对于Bert的encoder部分重点关注输入部分
对于transformer来说,输入包括两部分:
1、input embedding:做词的词向量,比如做词的初始化
2、positional encoding:位置编码,使用的是三角函数正余弦函数去代表他。
在Bert中分为了三个部分:
input = token emb + segment emb + position emb
二、Bert的输入部分
1、input
正常词汇: my dog is cute he likes play ## ing
特殊词汇:CLS SEP
这两个存在是因为在Bert预训练时有NSP(Next Sentence Prediction)任务存在,这个任务是用于处理两个句子之间的关系
SEP主要是做句子间隔:之前的是一个句子,SEP之后的是另一个句子。
CLS 的输出向量接一个二分类器,去做一个二分类任务(误区:CLS向量输出不能代表整个句子的语义信息)
2、输入的内容
token embeddings
对input中的所有词汇,包括正常词汇和特殊词汇,都去做正常的embedding比如随机初始化
segment embeddings
由于处理的是两个句子,所以需要对两个句子进行区分,第一个句子使用0来表示,第二个句子使用1来表示;并使用不同的符号来表示。
position embeddings
Bert的输入部分与transformer输入部分很大的不同点:
transformer中使用正余弦函数
Bert使用随机初始化,然后让模型自己去学习出来,整个512的长度,让模型自己去学习出来每个位置应该是什么样子的
三、预训练:MLM+NSP
MLM(Masked Language Modeling)是指掩码语言模型。这是一种预训练语言模型的方法,旨在通过预测被掩码(或称为遮盖、掩盖)的单词来学习语言的上下文表示。
NSP(Next Sentence Prediction)是一个特定的预训练任务,旨在预测两个句子在原始文本中是否连续出现。
BERT 在预训练的时候使用的是大量的无标注的语料,所以在设计的时候,一定会考虑无监督来做。
无监督目标函数
AR: auto regressive,自回归模型:只能考虑单侧的信息,典型的就是GPT
AE:auto encoding,自编码模型:从损坏的输入数据中预测重建原始数据。可以使用上下文信息。
MLM模型
1、基本原理
打破了文本,让他文本重建。模型在周围的文本中学习各种信息,来让预测出来的文本无限接近原本的词汇。就像是让模型根据上下文去做完形填空
2、缺点
mask 和mask之间是独立的,但是在实际中不一定是独立的,而是有关系的。
3、模型概率
随机 mask 15% 的单词 ==》 10%替换成其他 10%原封不动 80%替换成马赛克
后续继续补充。。。