NLP最著名的语言模型-BERT

14天阅读挑战赛

NLP最著名的语言模型-BERT

一、传统方法的问题

例如我们采用RNN训练模型时,无法进行并行训练,下一步的输出依赖于上一步的输出结果,不能独立计算。
在这里插入图片描述
因此有的学者想将RNN模型进行改进,实现并行计算,从而提出了transformer
传统的word2Vec遇到的问题是,训练好的词向量就再也不会变了

二、注意力机制

Attention: 对于当前输入的数据的关注点是什么,如何让计算机关注到有价值的信息。
在这里插入图片描述
对于文本中的某个词,需要将上下文中的所有词整体信息融入到当前词的词向量中,这样的话使得该词并不是单个的词语自己而是当前输入的整体。在图中表现为颜色越深,表示加入的权重越大。
self-attention:
在这里插入图片描述
有两个输入Thinking、Machines,首先进行Embedding编码得到向量x1,x2,我们为了能够表示Thinking和Machines这两个单个词在整体中发挥的作用,神经网络采取的方式是提取特征,那么可以定义三个辅助矩阵WQ Queries、WK Keys、WV Values,利用这三个矩阵可以解决我们在对第一个词进行编码时如何考虑上下文,以及在对第二个矩阵编码时如何考虑上下文。
那么接下来,我们的输入向量x1,x2经过三种不同的权重矩阵之后会得到三种不同的特征向量
在这里插入图片描述
Queries:在矩阵中查询当前词与上下文的关系;(要去查的词)
Keys:在矩阵中除了当前词,剩下的等着被查的词;(等着被查的词)
Value:实际的特征信息
self-attention如何计算?
(一)q与k做内积
q与k做内积表示词语之间的相互关系。q要查看词的矩阵向量,k是被查看词的矩阵向量。两者内积越大表示越相关。
在这里插入图片描述
用q1表示的词去查它和其他词的关系,所以两个都是q1。
(二)特征分配与softmax机制
经过q与k的内积操作,我们会得到每一个词的一个分值,但是仅仅只有分值对我们没有太大作用,我们需要得到每一个词对其他词的关系百分比。我想可以想到softmax函数,首先将其做ex,让数值特征更加明显,接着进行归一化操作,这样可以得到一个百分比(相加和为1)。
在这里插入图片描述
那么在self-attention中,我们在进行softmax函数操作之前,还需要对内积进行Scaled Dot-Product Attention,why??为什么要进行这一步操作?

这是因为当 dk较大时,向量内积的值也会容易变得很大,这时 softmax函数的梯度会非常的小,那么如何消除 dot-product attention 的问题呢?其中一个方法就是除以根号下dk

在这里插入图片描述
(三)softmax处理后的值与实际的特征信息V矩阵相乘
得到最终的self-attention结果!

在这里插入图片描述
整体流程如下:
在这里插入图片描述
z1表示第一个词的结果,那么对于后面的每一个词都是可以按照这样的步骤进行运算,因此是可以并行计算的。

三、Multi-head

通过不同的head得到多个特征表达;将所有的特征拼接在一起;最后通过全连接层降维。
在这里插入图片描述
在这里插入图片描述
不同的head得到的最终结果也不同
在这里插入图片描述
堆叠多层,计算方式相同
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

敷衍zgf

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

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

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

打赏作者

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

抵扣说明:

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

余额充值