NLP最著名的Bert语言模型详细解读

云IDE产品介绍
云IDE使用教程
免费使用地址:点击【云IDE】,即可开始创建工作空间啦~

Bert语言模型详细解读

一、前言

要理解Bert语言模型,必须要先掌握Transformer,可以参考本人的博客Transformer原理详解,Bert是2019年谷歌团队提出的语言模型,一经提出就在NLP领域火热起来。因为Bert它作为预训练模型,在训练好之后可以帮助一大批的NLP任务去提升它们的性能,在针对个人不同的子任务时去进行微调即可。那么想要针对Bert模型有更加细致的了解,推荐去看这篇论文 《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》 ,那么下面本人将会针对Bert模型的每一个部分做详细介绍,感谢支持😄😄

二、Bert模型的整体架构

如果了解Transformer,那么下面这张图一定不会陌生,它是Transformer架构的Encoder部分,其中包括:输入部分;多头注意力机制;前馈神经网络。
在这里插入图片描述
那么Bert模型的基础架构就是由多个 Transformer架构的Encoder部分堆叠而成的。其中在 《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》 这一论文中(下面简称Bert论文)作者提出两种形式的Bert,Bert_base是由12层的Encoder堆叠而成;Bert_large是由24层的Encoder堆叠而成。
这里需要区别于Transformer结构,Transformer是由6个Encoder堆叠形成编码端,6个Decoder堆叠形成解码端。

三、Bert模型的输入部分

那么对于Bert的输入有哪些组成呢?
Input = token embeddings + segment embeddings + position embeddings
在这里插入图片描述
(一)首先对于第一行input:
需要关注的有正常词汇:my dog is cute he likes playing;
被分割的词:由于Bert关注词汇的词性,在wordpiece分词时将原型和后缀分开,在后缀前需要添加字符“##”;
特殊词汇:[CLS] 、[SEP],在句子首部添加[CLS],在每一句子结尾添加[SEP]。
为什么要添加两种特殊词汇?
这是由于在Bert预训练中,有一个任务叫做NSP(Next Sentence Prediction)任务。判断两个句子之间的关系,因此需要用到[SEP]告诉模型,在[SEP]之前是一个句子,在[SEP]之后是另一个句子。
而又由于NSP任务是一个二分类任务,也就是说判断两个句子之间是什么关系的二分类任务,在句子前加上[CLS],在训练时,用[CLS]的输入向量连接二分类器,从而去做二分类任务。
(二)token embeddings
对于输入的所有词汇(包括正常词汇,被分割的词以及特殊词汇)做Embedding词嵌入。
(三)segment embeddings
由于处理的是两个句子,因此需要对两个句子进行区分。对于第一个句子的所有词可以用EA表示,第二个句子的所有词可以用EB表示。
(四)position embeddings
这里的position embeddings和Transformer的位置编码有很大的区别。在Transformer中,我们采用正余弦函数来计算位置编码。而对于Bert,采用的是随机初始化,让模型自己学习,通过定义index:0-511,让模型自己去学习每一个embeddings是什么样子的。

四、Bert模型的预训练

(一)MLM(Masked Language Model)掩码语言模型
Bert在预训练时使用的是大量的无标注的语料,因此在预训练任务设计时采用无监督来做。对于无监督的目标函数有两种:
1.AR(autoregressive) 自回归模型:只考虑单侧的信息,典型的是GPT
2.AE(autoencoding)自编码模型:从损坏的输入数据中预测重建原始数据,可以使用上下文信息,在Bert中使用。

例如:有这样一段文本:我爱吃饭
AR:P(我爱吃饭) = P(我)P(爱|我)P(吃|我爱)P(饭|我爱吃)
可以发现AR采用的单侧信息。
AE:mask之后:【我爱mask饭】用mask去遮盖某些或者某几个字
P(我爱吃饭|我爱mask饭) =P(mask=吃|我爱饭)
mask机制是打破原有的文本信息,在做预训练时,让模型去做文本重建,模型从上下文中去获取各种信息,使得预测出mask的词汇无限接近或者就是原本的词汇。
mask模型的缺点:
mask之后:【我爱mask mask】
优化目标:P(我爱吃饭|我爱mask mask) =P(吃|我爱) P(饭|我爱) ,很明显能够发现优化目标中,吃和饭是相互独立的,也就是mask与mask之间相互独立

在Bert论文中,作者是这样做的:
在这里插入图片描述
随机mask15%的字,在这15%的字中,有80%替换成真正的mask标签,10%原封不动,最后10%替换成词典中的其他字。至于这个概率为啥是这些,作者在论文中也没有详细的解释,只是介绍了按照这个百分比效果确实好。

(二)NSP(Next Sentence Prediction)任务
NSP样本如下:
1.从训练语料中取出两个连续的段落作为正样本;
2.从不同的文档中随机创建一对段落作为负样本。
缺点:将主题预测和连贯性预测合并为一个单项任务。主题预测就是判断两个文本是不是来自同一个文档(1);连贯性预测就是判断两个段落是不是顺序关系(2)。

五、如何在下游任务中微调(fine turning)Bert

在这里插入图片描述
a.句子对分类;b.单个句子分类;c.问答任务;d.序列标注任务

六、如何提升Bert在下游任务中的效果

四个步骤:
例如:微博文本情感分析

  1. 在大量通用语料上训练一个LM (Pretrain): 一中文谷歌BERT
  2. 在相同领域上继续训练LM(Domain transfer) :一在大量微博文本上继续训练这个BERT
  3. 在任务相关的小数据上继续训练LM(Task transfer):一在微博情感文本上(有的文本不属于情感分析的范畴)
  4. 在任务相关数据上做具体任务:—微调fine turning
    一般情况下都是先Domain transfer再进行Task transfer最后fine turning性能是最好的。

如何在相同领域数据中进行further pre-training

  1. 动态mask︰就是每次epoch去训练的时候mask,而不是一直使用同一个。
    在Bert模型当中,每次使用的mask都是固定的,就是说Bert将文本mask后存在本地,在训练时每次使用的同样的mask标志。
  2. n-gram mask:其实比如ERNIE和SpanBert都是类似于做了实体词的mask
    在这里插入图片描述
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
BERT(Bidirectional Encoder Representations from Transformers)是一种预训练的自然语言处理模型,由Google公司研发。它的特点是双向编码器(Bidirectional Encoder),能够同时考虑上下文信息,因此在多项自然语言处理任务上表现优异。 下面介绍基于BERT模型自然语言处理实战案例: 1. 文本分类 文本分类是自然语言处理的常见任务之一,可以通过BERT模型来实现。可以使用BERT对文本进行预训练,然后再将其Fine-tuning到特定的文本分类任务上。具体步骤如下: (1)使用BERT模型对大量文本进行预训练。 (2)将预训练的BERT模型Fine-tuning到特定的文本分类任务上。 (3)使用Fine-tuning后的模型对新的文本进行分类。 2. 问答系统 问答系统是自然语言处理中的另一个重要应用场景。可以使用BERT模型来构建问答系统。具体步骤如下: (1)使用BERT模型对大量文本进行预训练。 (2)使用预训练好的BERT模型对问题和文本进行编码。 (3)将编码后的问题与文本进行匹配,并输出答案。 3. 命名实体识别 命名实体识别是自然语言处理中的一个重要任务,可以使用BERT模型来实现。具体步骤如下: (1)使用BERT模型对大量文本进行预训练。 (2)使用预训练好的BERT模型对文本进行编码。 (3)使用CRF等算法对编码后的文本进行标注,识别出文本中的命名实体。 总之,BERT模型自然语言处理中有着广泛的应用,可以用于文本分类、问答系统、命名实体识别等任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敷衍zgf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值