·阅读摘要:
Bert是继Transformer之后的又一杰出的模型。Bert是一种预训练语言模型,是在GPT、Elmo、Transformer的基础上提出的。基于Bert的多个NLP领域任务都取得了非常大的提升。
·参考文献:
[1] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
[0] 阅读本论文最好了解前置知识:
Transformer ⭐Bert就是基于Transformer提出的
什么是预训练语言模型 ⭐Bert到底是怎么使用的
了解Transformer模型,可以参考我的另外一篇博客:【文本分类】Attention Is All You Need。
[1] 摘要
提出了Bert模型,它不同于Elmo模型和GPT模型,Bert是对左右文(上下文)的一种双向提取训练,而且是对大数据集进行无监督学习。Bert训练好之后,其他人只需要根据自己的特定数据集,再微调一下,就能得到自己模型特有的词向量表示,而且这样做通常效果比较好。
【注一】:Elmo模型和GPT模型一个采用了RNN,一个采用了单向顺序来训练。Bert是使用Transformer为基础,然后看到了一个句子的双向顺序来训练的。
【注二】:什么是微调 一般情况下,训练一个模型是从头开始训练,花费时间较长,bert微调就是在预训练模型bert的基础上只需更新后面几层的参数,这相对于从头开始训练可以节省大量时间,甚至可以提高性能,通常情况下在模型的训练过程中,我们也会更新bert的参数,这样模型的性能会更好。bert是在通用语料上训练的,在你的特定领域,这些通用语料训练出的模型无法充分抽取出token的内在含义,所以需要用你的领域语料微调一下。
[2] 介绍
预训练语言模型已被证明对提高NLP任务是有效的。
在下游任务中,使用预训练语言模型有两种方式,基于特征和基于微调。
作者认为标准语言模型是单向的,这限制了我们的模型训练。但是从两个方向结合上下文来表征句子是很重要的。
Bert做无监督训练的思想如下图:
核心点有3:
· mask LM,类似于Word2Vec的CBOW一样,但是CBOW是有窗口大小限制的,而mask LM是在整个句子的规模上随机mask一些词。
· 下一句预测,为了训练一个理解句子关系的模型,预训练了一个下一句预测的二元分类任务,这个任务可以从任何单语语料库中简单地归纳出来,预测输入BERT的两端文本是否为连续的文本。具体来说,在为每个训练前的例子选择句子 A 和 B 时,50% 的情况下 B 是真的在 A 后面的下一个句子,50% 的情况下是来自语料库的随机句子。
· 采用12个Transformer的Encoder块进行双向提取句子特征。
[3] 相关工作
· 无监督的基于特征的方法,以Elmo为代表。
· 无监督的基于微调的方法,以GPT为代表。
· 有些研究显示,在大型数据集上进行有监督的训练,之后迁移到语言推理和机器翻译任务上比较有效。CV领域也有类似研究。
【注三】:但是Bert是在大型数据集上进行无监督的训练,效果更好。
[4] Bert模型
Bert主要有两个步骤:预训练(pre-training) 和 微调(fine-tuning)。
【注四】:原理就是CV领域的预训练使用流程
· 预训练(pre-training):在一个大型数据集上进行无监督训练,预训练原理在“[2] 介绍”中已经阐述。
· 微调(fine-tuning):利用预训练的结果给下游任务的参数作初始化,然后在下游任务的数据集上,再进行一定的训练,即可。
Bert模型的输入格式: