读懂BERT

读懂BERT

BERT(Bidirectional Encoder Representations from Transformers)
在这里插入图片描述

谷歌AI语言实验室在2019年的一篇论文《BERT : Pre-training of Deep Bidirectional Transformers for Language Understanding》提出了一种新的语言模型BERT。
目前在11项自然语言处理任务中都取得了SOA(state-of-the-art)的结果。这篇论文的贡献有以下三点:
1.证明了双向预训练对于语言模型的重要性。
2.BERT是预训练+微调概念的典型代表,而微调这种概念也被证明是可以减少工程领域工作量的一种做法,通过预训练和微调获得的模型的效果甚至超过了某些专用的领域模型。
3.BERT刷新了11项NLP任务的记录,而且代码和预训练的模型已经开源在 Github上了。

BERT的深度和双向体现在什么地方?

OpenAI GPT
OpenAI 在2018年的一篇论文《Improving Language Understanding by Generative Pre-Training》中提出了Generative Pre-Training(GPT)的概念,也就是不管下游的NLP子任务是什么,通用的语言模型都是可以经过无监督的方式预先训练好的,再根据下游的子任务和有监督的方式进行参数的微调。
在这里插入图片描述
BERT建立在许多语言模型预训练的基础之上,Google团队指出以往的语言模型预训练是有缺陷的,要么是单向的(unidirectional ),要么是浅双向的(shallowly bidirectional)。
“I made a bank deposit”,如果预测的目标词是bank,那么单向的语言模型就是依靠I made a来进行预测,但是其实deposit的重要信息就遗漏了;而如果是浅双向的,只是在形式上变为了双向,本质还是单向的从左到右或者从右到左,只不过是进行了两个方向的简单叠加。
BERT提出了Masked LM(MLM,Masked Language Model)这种方式进行训练,其能够真正使用到双向的信息,作者认为这种训练才是真正意义上的深层次双向(deeply bidirectional)。
在这里插入图片描述

问题:如何理解BERT的预训练+微调模式(同OpenAI GPT)?

在这里插入图片描述
BERT预训练+微调模式( Pre-training + Fine-tuning )
类比饭店的厨房准备菜的过程,往往大的饭店由于顾客众多,所以需要提前准备好半成品的菜,当有顾客来的时候,根据顾客个人的口味需要,进行不同的加工方式。
在这里插入图片描述
Pre-training is fairly expensive (four days on 64 Cloud TPUs), but is a one-time procedure for each language (current models are English-only, but multilingual models will be released in the near future). We are releasing a number of pre-trained models from the paper which were pre-trained at Google. Most NLP researchers will never need to pre-train their own model from scratch.
Fine-tuning is inexpensive. All of the results in the paper can be replicated in at most 1 hour on a single Cloud TPU, or a few hours on a GPU, starting from the exact same pre-trained model.
在这里插入图片描述
张量处理单元(TPU是一种定制化的 ASIC 芯片,它由谷歌从头设计,并专门用于机器学习工作负载。TPU 不是通用的处理器,而是专用于神经网络工作负载的矩阵处理器。TPU 不能运行文本处理软件、控制火箭引擎或执行银行业务,但它们可以为神经网络处理大量的乘法和加法运算,同时 TPU 的速度非常快、能耗非常小且物理空间占用也更小。
BERT框架中有两个步骤是预训练和微调。在预训练期间,通过不同的预训练任务对未标记的数据进行训练(非监督)。在微调阶段,首先使用预训练的参数初始化BERT模型,然后使用下游任务中的标记数据对所有参数进行微调(有监督)。除了输出层外,预训练和微调都使用相同的体系结构。BERT的一个显著特征是其跨不同任务的统一体系结构,预训练和最终下游架构之间的差异很小。
在这里插入图片描述
BERT模型架构是多层双向Transformer编码器。论文中有两种类型的BERT模型架构,分别是 B E R T B A S E BERT_{BASE} BERTBASE B E R T L A R G E BERT_{LARGE} BERTLARGE
作者将层数(即Transformer块)的数量表示为L,将隐藏大小表示为H(指字向量的维度),并将自注意力头的数量表示为A。
B E R T B A S E BERT_{BASE} BERTBASE(L=12, H=768, A=12, Total Parameters=110M)和 B E R T L A R G E BERT_{LARGE} BERTLARGE(L=24, H=1024, A=16, Total Parameters=340M)的区别仅在这些超参数的不同,为了便于和OpenAI GPT相比较, B E R T B A S E BERT_{BASE} BERTBASE的规模大小设置成和OpenAI GPT一样。
BERT Transformers使用双向自注意( bidirectional self-attention ),而GPT Transformers则使用约束自注意( constrained self-attention),其中每个标记只能关注其左侧的上下文。
在这里插入图片描述

BERT模型的输入输出表示

为了使BERT处理各种下游任务,输入能够明确地表示一个句子和一对句子(例如,<Question,Answer>)。 这里的“句子”可以是连续的任意文本范围,而不是实际的语言句子。
“序列”是指BERT的输入单位表示序列,它可以是一个句子或两个句子拼接在一起。每个序列的第一个标记始终是一个特殊的分类标记([CLS])。与该标记相对应的最终隐藏状态用作分类任务。句子对打包在一起形成单个序列。 我们通过两种方式区分句子。 首先,我们使用特殊标记([SEP])将它们分开。 其次,我们在每个标记上添加了一个段(segment)的嵌入,表示它是否属于句子A或者句子B。

在这里插入图片描述
对于给定的token(单位输入),其输入表示形式是通过将相应的token嵌入(可以简单地认为是词向量)、段的嵌入和位置嵌入相叠加得到的。
在这里插入图片描述

BERT模型的预训练过程

利用两个无监督任务对BERT进行预训练:Masked LM(MLM)和Next Sentence Prediction(NSP)
Masked LM(MLM):论文中随机地掩盖一部分百分比的输入,然后预测这些被掩盖位置的输出,这种方式被称为Masked LM。训练数据生成器随机选择15%的token进行预测。 如果选择了第i个token,BERT将进行下列操作:
(1)80%的概率[MASK]会用来替代该token
(2)10%的时间将token替换为随机的内容
(3) 10%的时间保持该token不变。 然后,通过交叉熵损失来预测原始词。
在这里插入图片描述
Next Sentence Prediction(NSP) :许多重要的下游任务,例如问答系统(QA),都是基于对两个句子之间关系的理解,而这并不是语言建模直接捕获的。 为了训练能够理解句子关系的模型,作者预训练了可以从任何单语语料库容易得生成的二值化的下一个句子预测任务。
具体来说,当为每个预训练示例选择句子A和B时,B有50%的概率是紧随A的下一个句子(标记为IsNext),而另有50%的概率是语料库中的随机句子(标记为NotNext)。
在这里插入图片描述

总结

BERT的提出对于NLP领域是一项里程碑。再一次证明了利用语言模型的预训练然后再针对具体下游任务微调是NLP研究近些年来的优秀做法。从方法上讲,BERT使用了MLM和NSP的非监督预训练方法,从实验效果看超过了ELMo、OpenAI GPT; 从计算资源上讲,开销巨大,个人很难复现其工作。相信很多NLP研究者在等着Google发布模型。它有可能是CV领域利用Image Net预训练出的那些著名模型在NLP领域的对等物。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值