赞
踩
论文:《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》
一、模型介绍
BERT采用了双向Transformer Encoder来作为语言模型(《Attention is all you need》论文中的transformer结构),采用了两种预训练方法:
1)Masked LM(随机mask 15%的token)
2)Next Sentence Prediction(预测下一个句子)
二、模型对比
1)BERT:采用了Transformer Encoder,如图中所示,通过前后全部时刻的输入来计算每个时刻attention值
2)OpenAI GPT: 采用了Transformer Encoder,但区别在于OpenAI GPT为单向语言模型,仅通过当前时刻之前的输入来计算每个时刻的attention值
3)ELMo:分别训练前向语言模型与后向语言模型,将其联合表示(即两个单向lstm的拼接)
对比来看,BERT的效果更好,能够捕捉全文信息。
三、Input Embedding
首先介绍模型的输入,如下图所示,输入为三个embedding的求和,分别是:
1)Token embedding:词向量
2)Segment Embedding:区分不同句子的标志(预训练中需要预测是否为下一个句子)
3)Position Embedding :单词的位置信息
四、预训练
1. Task #1: Masked LM
为了训练双向特征,这里采用了Masked Language Model的预训练方法,随机mask句子中的部分token,然后训练模型来预测被去掉的token。
具体操作是:
随机mask语料中15%的token,然后将masked token 位置输出的final hidden vectors送入softmax,来预测masked token。
这里也有一个小trick,如果都用标记[MASK]代替token会影响模型,所以在随机mask的时候采用以下策略:
1)80%的单词用[MASK]token来代替
my dog is hairy → my dog is [MASK]
2)10%单词用任意的词来进行代替
my dog is hairy → my dog is apple
3)10%单词不变
my dog is hairy → my dog is hairy
2. Task 2#: Next Sentence Prediction
为了让模型捕捉两个句子的联系,这里增加了Next Sentence Prediction的预训练方法,即给出两个句子A和B,B有一半的可能性是A的下一句话,训练模型来预测B是不是A的下一句话。
训练模型,使模型具备理解长序列上下文的联系的能力。
五、预训练的模型
1)BERT-Base: L = 12, H = 768, A = 12, Total parameters = 110M
2)BERT-Large: L = 24, H = 1024, A = 16, Total parameters = 340M
L为Transformer层数,H为Transformer维度,A表示Heads的数量,Total parameters 为参数大小。
六、任务微调
比如(a)sequence-level的分类任务,取第一个[CLS]token的隐层输出,输入softmax,做class label分类。
七、总结
BERT被称为NLP领域里程碑式的突破,在11项NLP任务中达到了state-of-art,它主要结构为双向Transformer结构,并通过两个预训练任务来进行模型的训练。可以捕捉长距离的上下文信息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。