BERT思想

三,BERT

1.概述

BERT:预训练transformer中的encoder网络,可以大幅增加模型的准确率。

基本思想,增加两个任务:

  1. 随机遮挡1个或多个单词,让encoder网络根据上下文,预测被遮挡的单词。
  2. 把两个句子放在一起,让encoder判断这两句话是否为相邻的对话。

用这两个任务训练transformer中的encoder网络。

2. 预测被遮挡的单词

Transformer encoder网络,输入一句话,被分成很多个单词,embedding将单词映射为词向量,然后是encoder网络,其由多个block组成,每个block有两层。输出也是6个向量。

将第二个单词遮挡住,让神经网络预测第二个单词。

将输入的第2个单词,替换为mask,会被embedding编码为向量xm,将mask的encoder的输出为um,

注意,transformer的encoder网络并非1对1,而是多对1。

Um不仅依赖于xm,而是依赖于所有的向量x,

Um在mask位置上,但是um知道整句话的信息,其包含上下文信息,因此可以用um预测被遮挡的信息。

将um作为特征向量,输入softmax classifier,输出概率向量p,字典里每个单词都有概率值,通过概率值来判断遮挡单词。

遮挡cat,训练的时候,希望输出p的向量,接近于单词cat的one-hot向量e。

注意:bert不需要标注数据,因此数据量很庞大。

3. 预测下一个句子

已知一句话,判断其下个句子是否对?

神经网络可以从海量的数据中学出这种相关性。因为微积分和牛顿有很大的关系。

第一句话讲微积分,第二句话讲熊猫。基本没有关联。

准备训练集:把两句话拼接起来,之间用sep分开,最前面放cls占位。

生成数据中,50%是真实的两句话;其余50%是随机从训练集中获取的。

Cls输出为向量c,c依赖于两句话的全部信息,因此,c可以用来判断两句话是否真的相连。C作为特征向量,输入分类器,输出0-1之间的f,1为true,0为false。

相邻2句话有关联,这样做(此任务)可以强化这种关联,让embedding和词向量之间包含此关联,例如:微积分和牛顿的词向量应该有关联。Encoder中有self-attention就是找这种关联性的。

分类任务,可以找到正确的关联性。

4. 结合两个任务

把两句话拼接起来,随机遮挡15%的单词。

一共有三个任务

 

5. 优势

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值