BERT 读论文

BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding

论文地址;https://arxiv.org/abs/1810.04805

0 Abstract

1、Bert,是一个基于Transformer的双向编码表示器,从unlabeled text中学习上下文双向信息。

( GPT,基于Transformer的单向语言模型 、ELMo,基于双向LSTM的语言模型)

2、pre-trained bert模型,接下游任务只需要加个输出层。

1 Introduction

主要介绍预训练语言模型的作用、如何用、和Bert的主要思路

1、事实证明真的有用!

预训练语言模型对很多NLP任务都有提升作用,包括sentence-level 和 token-level。


2、怎么用?feature-based 和 fine-tuning

feature-based,以ELMo为代表,作为下游任务模型的输入特征;

fine-tuning,以GPT为代表,加一个适用于下游任务的输出层,在下游任务训练过程中,微调模型的所有参数。


3、现有研究的不足。都是单向的!

标准的语言模型是单向的,只能使用前序序列预测当前词。

在模型选择上受到了限制,例如在GPT中 ,只能选择解码器(Masked multi-head attention)。

在finetuning方法中,如果下游任务是序列标注,那需要看整句来推测当前时刻标签,双向的模型表现效果会更好。


4、本文的贡献。MLM和NSP

1)Masked Language Model,使用掩码语言模型代替标准语言模型,实现双向编码;

标准语言模型:输入 tok_1, tok_2, ...., tok_n,从左到右,用toki-k ...toki-1 预测toki ,k是窗口大小

掩码语言模型:同上面一样的输入,随机mask掉一些token,预测tok[MASK]

2)Next Sentence Prediction,输入句子对,判断是否为上下句

2 Related Work

2.1 无监督的特征学习方法,Elmo,以词嵌入为主,主要通过单向的语言模型任务进行预训练

2.2 无监督的微调方法,GPT,在无标签的文本上预训练,然后在有标签数据的下游任务上进行微调

2.3 有监督的迁移学习,NLP在NLI和机器翻译任务上有大量的公开数据,在这两个任务上训练完的模型可以用在别的任务上

3 BERT

1、Bert的pre-training 和fine-tuning

pre-training: 在MLM和NSP上,使用无标签数据进行预训练

fine-tuning: 首先使用预训练好的参数对模型进行初始化,然后在下游任务的训练中,微调模型所有的参数。

每个下游任务都要单独对模型进行微调。


2、BERT-BASE 和 BERT-LARGE

使用多层双向Transformer encoder,Transformer 的层数记作L,隐藏层的大小记作H, self-attention的头数记作A

BERT-BASE: L=12,H=768, A=12,模型大小与GPT一样,方便进行对比;

BERT-LARGE: L=24,H=1024, A=16


3、输入和输出

输入:input representation=token embedding + segment embedding + position embedding

1)可以是单个句子,也可以是句子对。输入为句子对的时候,中间加分隔符[SEP],嵌入层加segment embedding。

2)使用WordPiece embedding,当token在语料中出现频率过低,但它的词根出现频率高的话,就把这个token切成词根

3)输入序列的首字符是[CLS],用来表示整个序列的特征

输出:

1)下游任务为分类时,[CLS]最终的hidden state作为输出层的输入

2)下游任务为序列标注时,取每个token的representations作为输出层的输入


4、Pretraining

Task #1: Masked LM

1)为了训练双向的表示,BERT将输入序列的tokens,以15%的概率随机mask,masked token的最后一层隐层的输出进入softmax层,softmax的大小是语料词典大小,用来推测masked token的真实值。

2)[MASK]在fine-tuning的过程中不会用到,所以会导致pretraining和finetuning的输入数据不一样,为了减少影响,masked的token中,有80%是真的用[MASK]进行替代,10%是用使用随机一个token进行替代,10%不做任何处理。

Task #2:Next Sentence Prediction

很多NLP的任务需要计算两个句子之间的关系,这在语言模型中并没有被学习到,所以BERT中加入NSP任务作为预训练任务。

我们在语料中随机抽取50%的上下句对和50%的无关句对作为训练语料。

Data: 预训练语料使用了800M words的BooksCorpus和2500M的English Wikipedia


5、Finetuning

微调的输入输出见 3、输入和输出

相比pretraining,微调训练起来比较简单,一个GPU几个小时就可以达到不错的效果

6 Conclusion

主要贡献是:双向

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值