BERT 理解

BERT的基础架构是Transformer的encoder部分:
BERT 的基础架构
为什么说基础架构是Transformer的encoder部分,原因:BERT是12个encoder的叠加:
BERT的编码部分
而Transformer的架构是这样的:
Transformer 架构
Transformer中的输入是input embedding和positional encoding,而BERT的输入是:input=token embedding + segment embedding + position embedding
BERT 的INPUT
解释一下上面的3个部分的输入:
Token embedding:一行句子中的每个单词(包括特殊符号CLS和SEP)作为一个token,对这些token做embedding。
Segment embedding:对于一些特殊的任务比如NSP(Next Sentence Prediction),这个任务是预测两个句子之间的关系,是否属于顺序上下文关系(二分类),这个任务的输入需要句子对,那么就需要特殊符号来区别这两个句子。一行句子中第一个SEP符号之前的单词,属于第一个句子,那么它们的Segment embedding全为0,第一个SEP符号之后的单词,属于第二个句子,它们的Segment embedding全为1。而CLS呢,它是一个向量,当我们的BERT模型训练完成之后,就将CLS输入到最后一层prediction层,去完成NSP二分类任务。(需要注意的一点是,CLS不能代表整个句子的语义信息,如果直接拿CLS向量去做文本相似度的任务效果非常不好,不过有些论文已经在这上面做出了改进,现在是有一些方法可以用BERT做文本相似度)。
Position embedding:对一行句子中每个单词(包括特殊符号)的索引做一个embedding,BERT规定句子的Max_len=512。
接下来看BERT的两个任务:MLM(Mask Language Model掩码语言模型)和NSP(Next Sentence Prediction)

MLM

在介绍MLM之前,先来了解两个概念,AR和AE:
AR和AE
举个例子:
AR和AE的比较
对于同样的一句话:我爱吃饭,AR模型在预测这句话出现的概率时是单侧的,先预测“我”出现的概率,再预测在“我”出现的条件下“爱”出现的概率,以此类推,可以看出这是依照句子顺序来预测的。而AE模型会mask句子中的单字(是单字,不是单词),比如mask吃之后,那么公式左边在“我爱mask饭”的条件下“我爱吃饭”出现的概率就变成了,在“我爱饭”条件下“吃”出现的概率。AE模型mask文本之后,能够利用上下文信息使得文本重建。BERT中就是用到了AE模型。
但AE模型有个问题,当mask的单词存在依赖关系时,它不能够利用这两个单字之间的关系,只能将它们认为是相互独立的,如下图所示。
AE的缺点
BERT中的做法是,对于所有的文本,只mask 15%的文本,并且在mask的15%中,80%的是用[mask]符号代替,10%是保持原来的字,另10%是从词列表中选择任意一个词替代。BERT中代码是这样写的:
BERT部分源码

NSP

BERT中训练NSP任务时使用的样本如下:
在这里插入图片描述
这样会混淆两个概念(主题预测和连贯性预测),同一训练语料库中抽取到的两个连续的段落大概率是属于同一个主题的,而从不同文档中随机创建的一对段落大概率是不同主题的,这样做出来的效果是非常好,但是已经混淆了概念。(因为主题预测比连贯性预测要容易得多)。但目前已经有论文提出了新的样本(同一文档中的连续段落为正样本,颠倒顺序之后为负样本做训练)。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值