6. Bert

https://blog.csdn.net/jiaowoshouzi/article/details/89073944

目录

 

6.1 bert是什么?

6.2 bert改进点

6.2.1 输入表示

6.2.2 Masked Language Model

6.2.3 Next Sentence Prediction(NSP)

6.2.4 fine-tuning

6.2.5 bert优缺点


6.1 bert是什么?

Bert是一个预训练模型

那什么是预训练模型呢?简单举例如下:

假设已有训练集A,先用A对网络进行与训练,在A任务上学会网络参数,然后保存备用。当有一个新的任务B,且采取相同的网络结构时,则可以加载A学习好的参数作为网络初始化的参数,其他的高层参数随机初始化;之后用B任务的训练数据在重新训练网络。当加载参数保持不变时,称为“frozen”;当加载的参数随着B任务的训练进行不断变化时,称为“fine-tuning”,即:更好的把参数进行调整使起更适合当前任务B

预训练模型的优点:当任务B的训练数据很少时,难以做到很好的训练网络;但是获取A训练的参数之后,会比仅仅使用B训练得到的参数更优

6.2 bert改进点

Bert的特点:

  1. 无监督
  2. 使用Transformer作为算法的主框架,基于多层双向转换编码旨在通过联合调节所有层中的上下文来预先训练深度双向表示

【补充】“双向”表示模型在处理某一个词时没能同时利用前面的词和后面的词两部分,这种“双向”的来源在于BERT与传统语言模型不同,不是根据前面词预测最可能的当前词,而是随机mask一些词,并利用没有被mask的词进行预测,方式为:MLM。

    3. 使用Mask Language Model (MLM) 和 Next Sentence Prediction (NSP) 的多任务训练目标,两种方法分别捕捉词语和句子级别的representation

6.2.1 输入表示

Bert的输入的编码向量是由3个embedding特征的和所表示,如下图:

其中:

  1. Token embedding:词向量,需要将每个单词及特殊符号【CLS、SEP】都转化成word embedding向量,因为神经网络智能进行数值计算。

【补充】: 第一个单词是【CLS】标志,可以用于分类任务,如判断句子B是否是A的下一句,会借助该标志;每句最后一个单词是【SEP】,表示分割符,用于断开语料中的两个句子。

    2. Segment embedding:用来区分两种句子,这是因为希望预训练的结果不只用于LM(language model)中,还可以用于以两个句子为输入的分类任务。

    3. Position embedding:是指将单词的位置信息编码成特征向量,是向模型中引入单词位置关系的至关重要的一环,也是由transformer架构本身决定的。

6.2.2 Masked Language Model

为训练双向特征,采用MLM的预训练方法,随机mask句子中的部分token,然后训练模型来预测被mask的token,如下图所示。之后,与masked token对应的最终隐藏向量输入到词汇表上的输出softmax中,根据得到的概率值对masked token进行预测。

这种随机mask住token的方式,虽然确实能让团队获得双向预训练模型,但仍有缺点:如果句子中的某个token 100%都被mask,那么在fine-tuning的时候模型就会有一些没有见过的单词。

为了解决这个问题,并不总是用实际的【MASK】token替换被“masked”的词汇。相反,训练数据生成器随机选择15%的token(加入随机token的原因是因为transformer要保持对每个输入token的分布式表征,否则模型就会记住这个masked token是哪个值,如下面例子中就会记住这个【mask】是token“hairy”)。然后执行以下过程:随机mask的时候10%的单词会被替换成其他单词,10%的单词不变,剩下80%的单词才会被替换为【MASK】。至于新单词带来的负面影响,因为一个单词被随机替换掉的概率只有15%*10% = 0.15%,这个负面影响可以忽略不计。

Eg:my dog is hairy

  • 80%:my dog is hairy -> my dog is [mask]
  • 10%:my dog is hairy -> my dog is apple
  • 10%:my dog is hairy -> my dog is hairy

要注意的是,MLM预训练阶段,模型是不知道真正被mask的是哪个词,所以模型每个词都要关注

此外,由于序列长度太大(512维)会影响训练速度,所以90%的steps都用seq_len=128训练,余下的10%部署训练512长度的输入

6.2.3 Next Sentence PredictionNSP

NSP的任务是判断句子B是否是句子A的下文,如果是的话,输出“IsNext”,否则输出“NotNext”。训练数据的生成方式是从平行语料中随机收取连续两句话,其中50%保留抽取的两句话,它们符合“IsNext”关系;另外50%的第二句话是随机从语料中提取的,他们的关系是“NotNext”。这个关系就保存在第一部分输入表示中的【CLS】符号中

【注意】要选document-level语料,而不是sentence-level的,这样可以具备抽象连续长序列特征的能力

6.2.4 fine-tuning

6.2.5 bert优缺点

优点:

  1. 通过预训练和fine-tuning横扫了11项NLP任务;
  2. 使用transformer,也就是相对RNN更搞笑、能捕捉更长距离的依赖;
  3. 双向的;

缺点:

  1. 【MASK】标记在实际预测中不会出现,训练时用过多的【MASK】会影响模型表现;
  2. 每个batch只有15%的token被预测,所以BERT收敛的比left-to-right模型要慢,会预测每个token。

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值