带你熟悉NLP预训练模型:BERT

时间:2024-01-22 18:55:23

将三种信息分别输入Embedding层

image.png

如果出现输入是句子对的情况呢?

image.png

BERT Architecture

BERT由Encoder Layer堆叠而成,Encoder Layer的组成与Transformer的Encoder Layer一致:

自注意力层 + 前馈神经网络,中间通过residual connection和LayerNorm连接

image.png

BERT(Bidirectional Encoder Representation from Transformers)是由Transformer的Encoder层堆叠而成,BERT的模型大小有如下两种:

BERT BASE:与Transformer参数量齐平,用于比较模型效果(110M parameters)

BERT LARGE:在BERT BASE基础上扩大参数量,达到了当时各任务最好的结果(340M parameters)

BERT Output

BERT会针对每一个位置输出大小为hidden size的向量,在下游任务中,会根据任务内容的不同,选取不同的向量放入输出层

image.png

pooler output

例如,在诈骗邮件分类任务中,我们会将表示句子级别信息的[CLS] token所对应的向量,经过Bert Pooler放入classfier中,得到对spam/not spam分类的预测。

image.png

我们一般称[CLS]经过线性层+激活函数tanh的输出为pooler output,用于句子级别的分类/回归任务

sequence output

例如,在词性标注任务(POS Tagging)中,我们需要获得每一个token所对应的类别,因此需要将[CLS]和[SEP]中有实际意义的token输出,分别输入对应的classifier中。

image.png

我们一般称BERT输出的每个位置对应的vector为sequence output

BERT的不同下游任务

image.png

image.png

BERT预训练

BERT预训练任务有两种:Masked Language Modelling(MLM) 和 Next Sentence Prediction (NSP)。

MLM:随机遮盖输入句子中的一些词语,并预测被遮盖的词语是什么(完形填空)

NSP:预测两个句子是不是上下文的关系

image.png

Masked Language Model(MLM)

Masked Language Modelling(MLM) 捕捉词语级别的信息

在输入中随机遮盖15%的token(即将token替换为[MASK])

将[MASK]位置对应的BERT输出放入输出层中,预测被遮盖的token

image.png

在将[MASK]位置所对应的BERT输出放入输出层后,本质上是在进行一个多分类任务

image.png
image.png

为了使得预训练任务和推理任务尽可能接近,BERT在随机遮盖的15%的tokens中又进行了进一步的处理:

80%的概率替换为[MASK]

10%的概率替换为文本中的随机词

10%的概率不进行替换,保持原有的词元

image.png

Next Sentence Prediction(NSP)

Next Sentence Prediction (NSP) 捕捉句子级别信息,简单来说是一个针对句子对的分类问题,判断一组句子中,句子B是否为句子A的下一句(IsNext or NotNext)

image.png

image.png

Bert微调

在下游任务中,我们使用少量的标注数据(labelled data)对预训练Transformer编码器的所有参数进行微调,额外的输出层将从头开始训练。

image.png