【论文精读】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

《李沐论文精读》

1 摘要

1.1 改进

  1. 与ELMO模型的区别:
    ELMO模型使用的是RNN的架构,因此还需要在原始模型的基础上进行改进

  2. 与GPT模型的区别
    GPT模型是单向的,利用左边的上下文信息来预测未来的

1.2 结果

提升了GLUE分数7.7%,MultiNLI提升了4.6%,SQuAD v1.1任务上提升了1.5%,SQuAD v2.0任务提升了5.1%。

2 相关工作

2.1 预训练模型

迁移学习的一部分, 一般用在句子层面的任务(情绪识别)以及词源层面的任务(识别词是不是实体),在CV上已经用了很多年,NLP很少用。而Bert使预训练模型更加流行。

预训练模型在特征表示上有以下几种类型:

2.1.1 Word2vec模型

一种基于神经网络的语言模型,将单词映射到连续向量空间中的向量。向量的特征包括单词出现的上下文以及单词在语料库中的频率。目的是捕捉单词之间的语义关系,使得相似的单词在向量空间中距离更近。通过将单词表示为向量,我们可以在向量空间中计算单词之间的相似度和距离,并使用这些向量来解决各种自然语言处理问题,如语言分类、文本聚类、信息检索等。

Word2Vec是轻量级的神经网络,其模型仅仅包括输入层、隐藏层和输出层,模型框架根据输入输出的不同,主要包括CBOW和Skip-gram模型。

在这里插入图片描述

缺点:静态模型,一个单词就对应一个向量,不会随着上下文的变动而变动,无法解决多义词。

2.1.2 ELMO模型(基于特征的)

ELMO是对上下文进行深度学习的预言模型,是基于特征的模型。

ELMO的本质思想是:事先用一个语言模型去学习单词的word embedding, 当使用时,单词已经具备了特定的上下文,这时候可以根据上下文的语义去调整单词的word embedding, 这样经过调整的word embedding更能表达这个上下文中具体的含义,也就解决了一词多义问题。

ElMO采用典型的两阶段过程:第一阶段使用预训练语言模型进行训练,第二阶段当做具体的下游任务时,从预训练的网络中提取对应的词的Word Embedding作为特征补充到下游任务中。

缺点:对每一个单词都需要运行LSTM,运行效率低下,模型过于庞大。

2.1.3 GPT模型(基于微调的)

GPT模型是一种基于Transformer的预言模型,使用多层单向的Transformer模型,拥有很强的表达能力,在处理长文本上存在天然的优势,是基于微调的模型。

GPT模型是在大规模的无监督数据集上进行训练,并在下游任务中使用fine-tuning。

缺点:GPT模型使用的是单向的Transformer,是一种从左到右的结构,无法看到全文的信息。

2.1.4 预训练模型的局限性

根据判断主题的级别, 将所有的NLP任务分为两种类型:
token-level task::token级别的任务. 如完形填空(Cloze), 预测句子中某个位置的单词; 或者实体识别; 或是词性标注; SQuAD等.
sequence-level task::序列级别的任务, 也可以理解为句子级别的任务. 如情感分类等各种句子分类问题; 推断两个句子的是否是同义等.

而预训练模型在特征表示上会存在部分限制:标准的语言模型都是单向的,从左到右,这会限制架构的选择。sequence-level task和token-level task的部分任务都需要看到整个句子,或者说看到整个句子会使得任务精准度上升。

2.2 从监督数据中转移学习

在NLP(自然语言理解和机器翻译)和CV领域(imagnet上训练好模型),从监督数据中进行转移学习是很有效的。
但在NLP模型上,这种转移学习效率并不高,是由于NLP领域的数据量让仍然不足。
但是在BERT模型和之后一系列的研究中,没有标号的大量数据集可能会比有标号的小量数据集要好很多。

3 BERT模型

3.1 模型的架构

一个多层的双向的transformer编码器,直接基于原始论文及其代码,没做太多变动。因此BERT模型实际上就是一个表征模型,将token转化为向量。

在这里插入图片描述

  • 预训练阶段使用无监督数据
    • BooksCorups(800M words)
    • Wikipedia(2500M words)
  • 微调阶段使用有监督数据,针对不同的下游任务使用具体的数据集。

3.2 模型的输入

输入:一个序列(一个句子或者是两个句子,看输入模式的不同),与transformer不同,不是句子对。

BERT模型输入的处理过程分为以下几步:

  1. 分词(Tokenization):使用WordPiece分词算法,将一个单词划分成若干个子词,并且将每个子词视为一个token。
  2. 添加特殊标记(Special Tokens):使用[CLS]标记来表示序列的开始([CLS]还代表了class,综合了全部输入的信息,可以用来进行NSP任务),使用[SEP]标记来分隔两个句子或文本段落。
  3. 掩盖一部分token(Masked Tokens):在输入序列中随机选择一些token进行掩盖(mask)(用来进行MLM任务)。
  4. 随机替换一些token(Random Tokens):使用15%的概率随机替换输入序列中的token。
  5. 为每个token添加其位置编码(Positional Embeddings)和段落编码(Segmet Embeddings)(和[SEP]标记一样,用来区分两个句子):使BERT模型能够处理输入序列中的单词顺序,以及区分两个句子。

worldpiece
如果一个词出现的概率不大,应当将它切开,如果切开后得到的子序列出现概率较大,则应保留。

  • 将中文词语拆分成字或者子词的组合。
  • 将单词切分成一系列的子词,这些子词可以是一个单独的字母、一个前缀或一个后缀,也可以是一个由多个字母组成的子串。

句子的embedding:
Token(词汇)+Segment(句子)+Position(位置)
三种embedding都是通过学习得到的。
在这里插入图片描述

在这里插入图片描述

在随机替换过程中,15%被选中的token中80%进行掩码,10%进行随机替换,10%保持不变。

3.3 预训练阶段

3.3.1 MLM(Masked LM)任务

基于微调的改进方法,受到1953年泰勒的Cloze task的启发,使用了一种MLM模型来突破单向的限制,并以此训练一个双向transformer模型。

在输入处理过程中,对部分进行掩码处理的token进行预测(clozen)。这样使得BERT模型必须学习每一个token的上下文信息。用来解决token级别的任务,比如完形填空(Cloze), 预测句子中某个位置的单词; 或者实体识别; 或是词性标注; SQuAD等.

MLM模型的任务有两种:

  • 句子中随机屏蔽部分token,并使用模型来预测这些token。
  • 在两个句子中预测是否一个句子是另一个句子的下一句。
    在这里插入图片描述

3.3.2 NSP(Next Sentence Prediction)任务

对输入的两句话,预测一句话是否是另一句话的下一句话。这样使得BERT模型必须识别全文的信息。用来解决sequecne级别的任务。比如情感分类等各种句子分类问题; 推断两个句子的是否是同义等。

在这里插入图片描述

其中第二个句子50%是第一句的后一句话,50%不是

3.4 微调阶段

对于不同的下游任务,使用不同的数据集进行微调。
在这里插入图片描述

3.5 BERT模型的贡献

  1. 与以往简单将两个从左到右的模型和从右到左的模型合并在一起不同,BERT模型全面考虑了上下文的整体信息。
  2. BERT模型是第一个基于微调的表示模型。
  3. 开源。

3.5.1 参数

  • L:transformer块的个数
  • H:隐藏层的尺寸
  • A:自注意力头的个数
    Base模型:L=12,H=768,A=12,总共1.1亿的参数,与GPT模型类似,用来比较。
    LARGE模型:L=24,H=1024,A=16,总共3.4亿的参数,用来刷榜!

在这里插入图片描述
在这里插入图片描述

4 结论

通过迁移学习带来的无监督预训练模型成了目前NLP领域的一个重要组成部分,这使得数据量比较少的任务也能在这种模型上受益,BERT模型的贡献就是将预训练模型推广到了深度双向架构中。

5 组会PPT

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值