BERT(Transformer Encoder)详解和TensorFlow实现(附源码)

一、BERT简介

1. 模型

  BERT的全称为Bidirectional Encoder Representation from Transformers,从名字中可以看出,BERT来源于Transformer的Encoder,见如下Transformer网络结构图,其中红框部分即BERT:
在这里插入图片描述
  图中Encoder(BERT)和Decoder(GPT)结构相似,核心的区别在于其Attention Model的不同。BERT采用了双向注意力模型,而GPT采用的是单向注意力模型(即某个token只与该句子中位于其前方的token计算Attention),如下图:
在这里插入图片描述
  单向语言模型会限制模型的表征能力,使其只能获取单方向的上下文信息,而BERT利用双向注意力来构建整个神经网络,因此最终生成能融合左右上下文信息的深层双向语言表征,即真正意义上的Bi-Directional Context信息。这使得该模型在“完型填空”、“问答”、“情感分析”、“目标式搜索”、和“辅助性导航”等需要完整理解左右上下文信息的场景上,有着非常优秀的表现。

2. 训练

  BERT使用两种预训练方法:Masked Language Model和Next Sentence Prediction,分别捕捉词语和句子级别的特征。

2.1 Masked Language Model

  Masked Language Model称作遮蔽语言模型(简称 MLM)。MLM可以理解为完形填空,我们会随机屏蔽(mask)每一个句子中15%的词,用其上下文来预测原本的词语。
  例如:my dog is hairy → my dog is [MASK],此处将hairy进行了mask处理,然后预测mask位置的词是什么。
  训练过程中,我们要做如下处理:
  80%的情况下采用[MASK],my dog is hairy → my dog is [MASK]
  10%的情况下随机取一个词来代替[MASK]的词,my dog is hairy -> my dog is apple
  10%的情况下保持不变,my dog is hairy -> my dog is hairy
  这么做的主要原因是:在后续微调任务中语句中并不会出现[MASK]标记,且预测一个词汇时,模型并不知道输入对应位置的词汇是否为正确的词汇(10%概率),这就迫使模型更多地依赖于上下文信息去预测词汇,并且赋予了模型一定的纠错能力,训练过程如下图:
在这里插入图片描述

2.2 Next Sentence Prediction

  Next Sentence Prediction称作下一句预测(简称 NSP),即给定一篇文章中的两句话,判断第二句话在文本中是否紧跟在第一句话之后,如下图所示:
在这里插入图片描述
  在实际的训练中,通常另训练集中的50%符合IsNext关系,另外50%的第二句话随机从语料中提取,它们的关系是NotNext,并将这个关系保存在[CLS]中。

2.3 BERT的输出

  众所周知,BERT(以及GPT、Transformer)的模型特点是有多少个输入就有多少个对应的输出,如下图:
在这里插入图片描述
  故,理解其输出具有重要的意义。图中“C”为分类token “[CLS]”对应的输出,而“T_i”
则代表其他token “Tok_i”对应的输出。
  对于一些token级别的任务(如完型填空或问答任务),就把“T_i” 输入到额外的输出层中进行预测;对于一些句子级别的任务(如情感分类任务),就把“C”输入到额外的输出层中。
  注:图中的“[CLS]”代表了输入句子的分类;“[SEP]”代表输入的分隔符,其前后代表两个不同的句子。

3. 微调

  在海量语料训练完BERT之后,便可以将其应用到NLP的各个任务中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bestaier

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值