首页 > 编程知识 正文

bert模型优点,怎样介绍自己

时间:2023-05-05 01:23:07 阅读:109425 作者:1295

本文介绍了最近在11个NLP任务中更新成绩的大热BERT。 效果确实很惊人。 但是,在介绍论文之前,我想说这份工作的重复性不好,如果没有足够的资源的话就不要想了。 我想恐怕将来的利用价值在于直接使用作者公布的事先训练过的模型。

回顾目前有许多利用训练有素的语言特点完成下游NLP任务的研究,作者将其归纳为两种feature-based和fine-tuning:

分类表示task-specific模型使用方案的feature-basedELMo需要将特征作为feature提供给下游任务fine-tuningOpenAI GPT,(上述) ULMFiT是fine tune的预训练的爸爸

作者对这些方法的批评在于没有很好地利用上下文信息。 像ELMo这样的算法利用了正向和反向的语言模型,但本质上是两个unidirectional模型的重合。 对于像SQuAD这样的阅读性任务,能够同时从两个方向提取context信息是很重要的,但是现有的方法有很大的局限性。

与BERT、OpenAI GPT和ELMo的区别如图所示。

作为33558www.Sina.com/fine-tuning这一方法,作者提出了改进方案: http://www.Sina.com/(http://www.Sina.com/I directional 3358 www.com)

具体做法是,

采用新的预训练目标函数: the“maskedlanguagemodel”(MLM )随机mask输入中的一些tokens,并在预训练中对它们进行预测。 这样做的优点是学习的特征可以融合两个方向的上下文。 我觉得这个做法很像skip-gram。 过去的同类算法在这里有所欠缺。 例如,上面的ELMo使用两个单向LSTM连接结果。 还有OpenAI GPT,它同样使用transformer,但只利用了单向的注意机制,本质上也同样是单一的语言模型。 提高语句级别的任务:“next sentence prediction”

作者认为许多NLP任务,如QA和NLI需要理解两个句子之间的关系,但语言模型不能很好地直接产生这种理解。 为了理解句子的关系,作者同时预翻译了“next sentence prediction”任务。 具体而言,随机置换几个句子,使用前文进行IsNext/NotNext的预测。 在实际的事前训练中,这两个任务是jointly training

创新模型框架论文使用了两种模型。

bertbasebert _ { base } Bert base : l=12,H=768,A=12,Total Parameters=110M

bertlargebert _ { large } Bert large 3360 l=24,H=1024,A=16,Total Parameters=340M

其中,l是layers层数(即Transformer blocks个数),h是hidden vector size,a是self-attention的“头数”。

在NLP领域,10层以上的层还是“令人吃惊”的,当年Attention is All You Need首次提出transformer时,给人的印象是在MT任务中使用到了6层。 当然在结构上,transformers之间使用了residual connection,有batch normarlizatio

n这种“常规”操作,多层不是什么问题。有意思的是在于这么多层的结构究竟学到了什么?NLP不能和CV做简单的类比,网络层数并不是“多多益善”;有论点认为低层偏向于语法特征学习,高层偏向于语义特征学习。希望将来的研究能够给出更充分更有启发性的观点。

输入的表示

针对不同的任务,模型能够明确的表达一个句子,或者句子对(比如[问题,答案])。对于每一个token, 它的表征由其对应的token embedding, 段表征(segment embedding)和位置表征(position embedding)相加产生。如下图:

具体细节如下:

论文使用了WordPiece embeddings使用了positional embeddings, 长达512位,即句子的最大长度每句话的第一个token总是[CLS]。对应它的最终的hidden state(即Transformer的输出)用来表征整个句子,可以用于下游的分类任务。模型能够处理句子对。为区别两个句子,用一个特殊token [SEP]隔开它们,另外针对不同的句子,把学习到的Segment embeddings 加到每个token的embedding上(如图)对于单个句子仅使用一个Segment embedding 预训练的任务

Masked LM

具体细节论文上解释的很清楚了,这里从略了。
提一下值得注意的一点吧:为了达到真正的bidirectional的LM的效果,作者创新性的提出了Masked LM,但是缺点是如果常常把一些词mask起来,未来的fine tuning过程中模型有可能没见过这些词。这个量积累下来还是很大的。因为作者在他的实现中随机选择了句子中15%的WordPiece tokens作为要mask的词。
为了解决这个问题,作者在做mask的时候,

80%的时间真的用[MASK]取代被选中的词。比如 my dog is hairy -> my dog is [MASK]10%的时间用一个随机词取代它:my dog is hairy -> my dog is apple10%的时间保持不变: my dog is hairy -> my dog is hairy
为什么要以一定的概率保持不变呢? 这是因为刚才说了,如果100%的时间都用[MASK]来取代被选中的词,那么在fine tuning的时候模型会有一些没见过的词。那么为啥要以一定的概率使用随机词呢?这是因为Transformer要保持对每个输入token分布式的表征,否则Transformer很可能会记住这个[MASK]就是"hairy"。至于使用随机词带来的负面影响,文章中说了,所有其他的token(即非"hairy"的token)共享15%*10% = 1.5%的概率,其影响是可以忽略不计的。

Next Sentence Prediction
具体做法很容易理解,这里仍然从略。
简单说一下这么做的原因。很多NLP的任务比如QA和NLI都需要理解两个句子之间的关系,而语言模型并不能直接反应这种关系。为了是预训练出来的模型很好的适应这些任务,作者提出了这样的一个预训练任务。实验表明,增加这样的一个任务在针对下游的QA和NLI任务时效果非常好。

在预训练中文章使用了BooksCorpus(800M 词)和English Wikipedia(2,500M 词)。

微调过程

对于句子级的分类任务,BERT的微调方法非常直观。论文用刚才介绍过的特殊符号[CLS]来对应整个句子的表征。我们只需要把它作为输入通过一层网络,最后做softmax就可以了。

实验

GLUE
GLUE是一个自然语言任务集合,它包括以下这些数据集:

名称全名用途MNLIMulti-Genre NLI蕴含关系推断QQPQuora Question Pairs问题对是否等价QNLIQuestion NLI句子是否回答问句SST-2Stanford Sentiment Treebank情感分析CoLACorpus of Linguistic Acceptability句子语言性判断STS-BSemantic Textual Similarity语义相似MRPCMicrosoft Research Paraphrase Corpus句子对是否语义等价RTERecognizing Texual Entailment蕴含关系推断WNLIWinograd NLI蕴含关系推断

包含了各种理解句子含义和关系的任务。看一下效果:

BERT在每一个单项上的表现都是最优。一个很有意思的现象是:在所有的任务上 B E R T L A R G E BERT_{LARGE} BERTLARGE​远超过 B E R T B A S E BERT_{BASE} BERTBASE​,其中甚至包括那些仅有少量训练数据的任务。

Ablation Studies
BERT本身包含了很多创新点,下面看一下各个部分的贡献。
先看一下pre-training中所用到的各种技术的重要性。

No NSP : 没有next sentence prediction(NSP)任务
LTR & No NSP: 没有MLM,而是用Left-to-Right(LTR) LM
+BiLSTM: fine-tuning过程中,在LTR & No NSP上增加一个随机初始化的BiLSTM

另外作者还实验了模型大小,预训练步数,已经feature-based版本的BERT,实验结果也非常令人信服。特别要强调的一点是:我们知道在大型任务中大的模型会带来持续的效果增长,但是这是我们第一次看见,只要模型经过了足够的预训练,在小任务中大模型也能够带来显著的增长。

总结

BERT绝对是一项里程碑式的工作。我想可能利用语言模型预训练然后在fine-tuning这条路可能已经走到底了。无论是从技术上还是从资源上来讲。技术上来讲,BERT使用了masked lm和下一句预测的联合训练方法,在加上12层( B E R T B A S E BERT_{BASE} BERTBASE​)的transformer,的确碾压ELMo,ULMFiT,OpenAI GPT; 从资源上讲,开销巨大,个人很难复现其工作。相信很多人在等着Google发布模型。它有可能是CV领域利用image net预训练出的那些著名模型在NLP领域的对等物。这同时也是Transformer的巨大胜利,它的self attention机制和position embedding相信会赢得更大的关注。理论上来讲,还是存在那么多的未知:12层或者24层的架构究竟学到了什么?这不是CV领域,低层学语法特征,高层学语义特征不足以解释其效果; 另外实验中的复杂模型竟然在小数据集上也表现优异,个人觉得这不是经过了充足的预训练就能够解释清楚的。

关注公众号《没啥深度》有关自然语言处理的深度学习应用,偶尔也有关计算机视觉

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。