毕业论文
您现在的位置: 语言识别 >> 语言识别资源 >> 正文 >> 正文

干货丨Bert算法语言模型BERT详细

来源:语言识别 时间:2024/12/8

今天,要跟大家分享的内容是,解析著名的语言模型-BERT,全文将分4个部分由浅入深的依次讲解,NLP爱好者们不要错过哦!

01Bert简介

BERT是年10月由GoogleAI研究院提出的一种预训练模型。BERT的全称是BidirectionalEncoderRepresentationfromTransformers。BERT在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩:全部两个衡量指标上全面超越人类,并且在11种不同NLP测试中创出SOTA表现,包括将GLUE基准推高至80.4%(绝对改进7.6%),MultiNLI准确度达到86.7%(绝对改进5.6%),成为NLP发展史上的里程碑式的模型成就。

02关于Bert的模型架构

总体架构:

如下图所示,最左边的就是BERT的架构图,可以很清楚的看到BERT采用了TransformerEncoderblock进行连接,因为是一个典型的双向编码模型。

3.1关于Bert训练过程中的关键点

1)四大关键词:

Pre-trained,Deep,BidirectionalTransformer,LanguageUnderstanding

a.Pre-trained:首先明确这是个预训练的语言模型,未来所有的开发者可以直接继承!

整个Bert模型最大的两个亮点都集中在Pre-trained的任务部分。

b.Deep

Bert_BASE:Layer=12,Hidden=,Head=12,TotalParameters=M

Bert_LARGE:Layer=24,Hidden=,Head=16,TotalParameters=M

对比于Transformer:Layer=6,Hidden=,Head=8,是个浅而宽,说明Bert这样深而窄的模型效果更好(和CV领域的总体结论基本一致)。

C.BidirectionalTransformer:Bert的个创新点,它是个双向的Transformer网络。

Bert直接引用了Transformer架构中的Encoder模块,并舍弃了Decoder模块,这样便自动拥有了双向编码能力和强大的特征提取能力。

D.LanguageUnderstanding:更加侧重语言的理解,而不仅仅是生成(LanguageGeneration)

3.2Bert的语言输入表示包含了3个组成部分:(见上面第二张图)

词嵌入张量:wordembeddings

语句分块张量:segmentationembeddings

位置编码张量:positionembeddings

最终的embedding向量是将上述的3个向量直接做加和的结果。

3.3:Bert的预训练中引入两大核心任务(这两个任务也是Bert原始论文的两个最大的创新点)

a引入MaskedLM(带mask的语言模型训练)

a.1在原始训练文本中,随机的抽取15%的token作为即将参与mask的对象。

a.2在这些被选中的token中,数据生成器并不是把他们全部变成[MASK],而是有下列3个选择:

a.2.1在80%的概率下,用[MASK]标记替换该token,比如mydogishairy-mydogis[MASK]

a.2.2在10%的概率下,个随机的单词替换该token,比如mydogishairy-mydogisapple

a.2.3在10%的概率下,保持该token变,比如mydogishairy-mydogishairy

a.3TransformerEncoder在训练的过程中,并不知道它将要预测哪些单词?哪些单词是原始的样?哪些单词被遮掩成了[MASK]?哪些单词被替换成了其他单词?正是在这样一种高度确定的情况下,反倒逼着模型快速学习该token的分布式上下文的语义,尽最大努学习原始语言说话的样子!!!同时因为原始文本中只有15%的token参与了MASK操作,并会破坏原语言的表达能和语言规则!!!

b引入NextSentencePrediction(下句话的预测任务)

b.1目的是为了服务问答,推理,句主题关系等NLP任务。

b.2所有的参与任务训练的语句都被选中参加。

·50%的B是原始本中实际跟随A的下句话。(标记为IsNext,代表正样本)

·50%的B是原始本中随机抽取的句话。(标记为NotNext,代表负样本)

b.3在该任务中,Bert模型可以在测试集上取得97-98%的准确率。

3.4关于基于Bert的模型微调(fine-tuning)

只需要将特定任务的输入,输出插入到Bert中,利用Transformer强大的注意力机制就可以模拟很多下游任务。(句子对关系判断,单文本主题分类,问答任务(QA),单句贴标签(命名实体识别))

微调的若干经验:

batchsize:16,32

epochs:3,4

learningrate:2e-5,5e-5

全连接层添加:layers:1-3,hidden_size:64,

04Bert模型本身的优点和缺点

优点:

Bert的基础建立在transformer之上,拥有强大的语言表征能力和特征提取能力。在11项NLP基准测试任务中达到stateoftheart。同时再次证明了双向语言模型的能力更加强大。

缺点:1)可复现性差,基本没法做,只能拿来主义直接用!2)训练过程中因为每个batch_size中的数据只有15%参与预测,模型收敛较慢,需要强大的算力支撑!

转载请注明:http://www.0431gb208.com/sjslczl/8011.html