本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.
首先我会详细阐述BERT原理,然后简单介绍一下ELMO以及GPT
BERT详解
BERT全称为 Bidirectional Encoder Representation from Transformer ,是Google以无监督的方式利用大量 无标注 文本「炼成」的语言模型,其架构为Transformer中的Encoder(BERT=Encoder of Transformer)
我在Transformer详解中已经详细的解释了所有Transformer的相关概念,这里就不再赘述
以往为了解决不同的NLP任务,我们会为该任务设计一个最合适的神经网络架构并做训练,以下是一些简单的例子
不同的NLP任务通常需要不同的模型,而设计这些模型并测试其performance是非常耗成本的(人力,时间,计算资源)。 如果有一个能直接处理各式NLP任务的通用架构该有多好?
随着时代演进,不少人很自然地有了这样子的想法,而BERT就是其中一个将此概念付诸实践的例子
Google在预训练BERT时让它同时进行两个任务:
- 漏字填空(完型填空),学术点的说法是 Masked Language Model
- 判断第2个句子在原始本文中是否跟第1个句子相接( Next Sentence Prediction )
对正常人来说,要完成这两个任务非常简单。只要稍微看一下 前后文 就知道完形填空任务中 [MASK]
里应该填 退了
;而 醒醒吧
后面接 你没有妹妹
也十分合理
接下来我会分别详细介绍论文中这两个任务的设计细节
BERT语言模型任务一:Masked Language Model
在BERT中,Masked LM(Masked Language Model)构建了语言模型,简单来说,就是 随机遮盖或替换 一句话里面的任意字或词,然后让模型通过上下文预测那一个被遮盖或替换的部分,之后 做Loss的时候也只计算被遮盖部分的Loss ,这其实是一个很容易理解的任务,实际操作如下:
随机把一句话中15%的token(字或词)替换成以下内容:
[MASK]
之后让模型 预测和还原 被遮盖掉或替换掉的部分,计算损失的时候,只计算在第1步里被 随机遮盖或替换 的部分,其余部分不做损失,其余部分无论输出什幺东西,都无所谓
这样做的号出是,BERT并不知道[MASK]替换的是哪一个词,而且任何一个词都有可能是被替换掉的,比如它看到的apple可能是被替换的词。这样强迫模型在编码当前时刻词的时候不能太依赖当前的词,而要考虑它的上下文,甚至根据上下文进行”纠错”。比如上面的例子中,模型在编码apple时,根据上下文my dog is,应该把apple编码成hairy的语义而不是apple的语义
BERT语言模型任务二:Next Sentence Prediction
我们首先拿到属于上下文的一对句子,也就是两个句子,之后我们要在这两个句子中加一些特殊的token: [CLS]上一句话[SEP]下一句话[SEP]
。也就是在句子开头加一个 [CLS]
,在两句话之间和句末加 [SEP]
,具体地如下图所示
可以看到,上图中的两句话明显是连续的。如果现在有这幺一句话 [CLS]我的狗很可爱[SEP]企鹅不擅长飞行[SEP]
,可见这两句话就不是连续的。在实际训练中,我们会让上面两种情况出现的 1:1
Token Embedding
就是正常的词向量,即PyTorch中的 nn.Embedding()
Segment Embedding
的作用是用embedding的信息让模型分开上下句,我们给上句的token全0,下句的token全1,让模型得以判断上下句的起止位置,例如
[CLS]我的狗很可爱[SEP]企鹅不擅长飞行[SEP] 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Position Embedding
和Transformer中的不一样,不是三角函数,而是学习出来的
Multi-Task Learning
BERT预训练阶段实际上是将上述两个任务结合起来,同时进行,然后计算Loss,例如
Input: [CLS] calculus is a branch of math [SEP] panda is native to [MASK] central china [SEP] Targets: false, south ---------------------------------- Input: [CLS] calculus is a [MASK] of math [SEP] it [MASK] developed by newton and leibniz [SEP] Targets: true, branch, was
Be First to Comment