佛山网站建设模板建站,货物公司网站建设方案,制作游戏软件的app,代理公司简介前言
BERT出自论文#xff1a;《BERT#xff1a;Pre-training of Deep Bidirectional Transformers for Language Understanding》 2019年
近年来#xff0c;在自然语言处理领域#xff0c;BERT模型受到了极为广泛的关注#xff0c;很多模型中都用到了BERT-base或者是BE…前言
BERT出自论文《BERTPre-training of Deep Bidirectional Transformers for Language Understanding》 2019年
近年来在自然语言处理领域BERT模型受到了极为广泛的关注很多模型中都用到了BERT-base或者是BERT模型的变体而且在模型中增加了BERT预训练模型之后许多NLP任务的模型性能都得到了很大程度的提升这也说明了BERT模型的有效性。
由于BERT模型内容较多想要深入理解该模型并不容易所以我分了大概三篇博客来介绍BERT模型第一篇也就是本篇博客主要介绍BERT模型的整体架构对模型有一个整体的认识和了解第二篇详细介绍BERT模型中的重点内容包括它所提出的两个任务第三篇从代码的角度来理解BERT模型。
目前我只完成了前两篇论文地址如下之后完成第三篇会进行更新。
第一篇【BERT】深入理解BERT模型1——模型整体架构介绍
第二篇【BERT】深入BERT模型2——模型中的重点内容两个任务
第三篇 BERT整体架构介绍
1、BERT模型基于Transformer架构实现是一种全新的双向编码器语言模型。与ELMo、GPT等单相语言模型不同BERT旨在构建一个双向的语言模型来更好地捕获语句间的上下文语义使其在更多的下游任务上具有更强的泛化能力。因此预训练完成的BERT模型被迁移到下游任务时只需要再添加一个额外的输出层便可以进行微调例如问答和语言推理任务并不需要针对具体的任务进行模型架构的修改。
2、为了使NLP模型能够充分利用海量廉价的无标注数据信息预训练语言模型应运而生。
通过模型预训练我们可以从海量数据集中初步获取潜在的特征规律再将这些共性特征移植到特定的任务模型中去将学习到的知识进行迁移。具体来说我们需要将模型在一个通用任务上进行参数训练得到一套初始化参数再将该初始化模型放置到具体任务中通过进一步的训练来完成更加特殊的任务。
预训练模型的推广使得许多NLP任务的性能获得了显著提升它为模型提供了更好的初始化参数大大提高了其泛化能力。
3、当前的预训练模型主要分为基于特征和微调两大类但它们大都基于单向的语言模型来进行语言学习表征这使得许多句子级别的下游任务无法达到最优的训练效果。本文提出的BERT模型双向预训练表征模型很大程度上缓解了单向模型带来的约束。同时引入了“完形填空”和“上下句匹配”分别作为单词级别和句子级别的两大通用任务对BERT模型进行训练。
基于特征的无监督方法主要是指单词嵌入表征学习。首先将文本级别的输入输出为特征向量的形式再将预训练好的嵌入向量作为下游任务的输入。
基于微调的无监督方法主要是在我们在某些通用任务上预训练完成的模型架构可以被直接复制到下游任务中下游任务根据自身需求修改目标输出并利用该模型进行进一步的训练。也就是说下游任务使用了和预训练相同的模型但是获得了一个较优的初始化参数我们需要对这些参数进行微调从而在特殊任务上获得最优性能。
基于有监督数据的迁移学习是基于存在大量有监督数据集的任务来获取预训练模型例如自然语言推理和机器翻译。
4、BERT模型创造性地将Transformer中的Encoder架构引入预训练模型中成为第一个使用双向表征的预训练语言模型。同时为了适应该双向架构BERT引入了两项新的NLP任务——完形填空和上下句匹配类捕获词语级别和句子级别的表征并使之具有更强的泛化能力。
5、具体方法
BERT整体框架包含Pre-training和Fine-tuning两个阶段Pre-training阶段模型首先在设定的通用任务上利用无标签数据进行训练。训练好的模型获得了一套初始化参数之后再到Fine-tuning阶段模型被迁移到特定任务中利用有标签数据继续调整参数知道在特定任务上重新收敛。 BERT模型采用了Transformer中的Encoder架构通过引入多头注意力机制将Encoder块进行堆叠形成最终的BERT架构。为了适应不同规模的任务BERT将其结构分为了base和large两类较小规模的base结构含有12个Encoder单元每个单元含有12个Attention块词向量维度为768较大规模的large结构含有24个Encoder单元每个单元中含有16个Attention块词向量维度为1024。通过使用Transformer作为模型的主要框架BERT能够更彻底地捕获语句中的双向关系极大地提升了预训练模型在具体任务中的性能。
BERT模型的输入由三部分组成。除了传统意义上的token词向量外BERT还引入了位置词向量和句子词向量。位置词向量的思想与Transformer一致但BERT并未使用其计算公式而是随机初始化后放入模型一同训练句子词向量实质上是一个0-1表征目的是区分输入段落中的上下句。这三种不同意义的词向量相加构成了最终输入模型的词向量。 Pre-trainingBERT的预训练部分使用了完形填空和上下句匹配两个无监督任务。“完形填空”代表了词语级别的预训练任务该任务对输入句子中若干随机位置的字符进行遮盖并利用上下文语境对遮盖字符进行预测。MLM“上下句匹配”代表了句子级别的预训练任务该任务给出两个句子利用句子之间的语义连贯性判定这两个句子是否存在上下句关系。这两个预训练任务对于大量NLP任务的架构具有更好的代表性同时也更能匹配模型本身的双向架构对模型的泛化能力有着巨大的提升帮助。
Fine-tuning训练具体任务时我们只需将具体任务中的输入输出传入预训练完成的BERT模型继续调整参数直至模型再次收敛。该过程成为微调Fine-tuning。相比于预训练来说微调的代价是极小的。在大部分NLP任务中我们只需要在GPU上对模型进行几个小时的微调便可使模型在具体任务上收敛完成训练。
6、实验结果及结论
结果表明即使是在有标签数据量较小的数据集上随着模型规模的提高任务的准确度都获得了显著的提升。进一步可得出结论如果模型已经经过过滤充分的预训练那么当将模型缩放到一个极限的规模尺寸时仍然能够在小规模的微调任务上产生较大的改进。
预训练模型的迁移学习逐渐成为语言理解系统中不可或缺的一部分它甚至能够使得一些低资源的任务从深度单向架构中受益。 以上就是对BERT模型理论知识的整体理解看完之后应该能有个整体的认识吧。