14天阅读挑战赛

NLP最著名的语言模型-BERT

一、传统方法的问题

例如我们采用RNN训练模型时,无法进行并行训练,下一步的输出依赖于上一步的输出结果,不能独立计算。

nlp最新ner模型 nlp最强模型_自然语言处理


因此有的学者想将RNN模型进行改进,实现并行计算,从而提出了transformer

传统的word2Vec遇到的问题是,训练好的词向量就再也不会变了

二、注意力机制

Attention: 对于当前输入的数据的关注点是什么,如何让计算机关注到有价值的信息。

nlp最新ner模型 nlp最强模型_nlp最新ner模型_02


对于文本中的某个词,需要将上下文中的所有词整体信息融入到当前词的词向量中,这样的话使得该词并不是单个的词语自己而是当前输入的整体。在图中表现为颜色越深,表示加入的权重越大。

self-attention:

nlp最新ner模型 nlp最强模型_语言模型_03


有两个输入Thinking、Machines,首先进行Embedding编码得到向量x1,x2,我们为了能够表示Thinking和Machines这两个单个词在整体中发挥的作用,神经网络采取的方式是提取特征,那么可以定义三个辅助矩阵WQ Queries、WK Keys、WV Values,利用这三个矩阵可以解决我们在对第一个词进行编码时如何考虑上下文,以及在对第二个矩阵编码时如何考虑上下文。

那么接下来,我们的输入向量x1,x2经过三种不同的权重矩阵之后会得到三种不同的特征向量

nlp最新ner模型 nlp最强模型_自然语言处理_04


Queries:在矩阵中查询当前词与上下文的关系;(要去查的词)

Keys:在矩阵中除了当前词,剩下的等着被查的词;(等着被查的词)

Value:实际的特征信息

self-attention如何计算?

(一)q与k做内积

q与k做内积表示词语之间的相互关系。q要查看词的矩阵向量,k是被查看词的矩阵向量。两者内积越大表示越相关。

nlp最新ner模型 nlp最强模型_并行计算_05


用q1表示的词去查它和其他词的关系,所以两个都是q1。

(二)特征分配与softmax机制

经过q与k的内积操作,我们会得到每一个词的一个分值,但是仅仅只有分值对我们没有太大作用,我们需要得到每一个词对其他词的关系百分比。我想可以想到softmax函数,首先将其做ex,让数值特征更加明显,接着进行归一化操作,这样可以得到一个百分比(相加和为1)。

nlp最新ner模型 nlp最强模型_nlp最新ner模型_06


那么在self-attention中,我们在进行softmax函数操作之前,还需要对内积进行Scaled Dot-Product Attention,why??为什么要进行这一步操作?

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

nlp最新ner模型 nlp最强模型_语言模型_07


(三)softmax处理后的值与实际的特征信息V矩阵相乘

得到最终的self-attention结果!

nlp最新ner模型 nlp最强模型_bert_08


整体流程如下:

nlp最新ner模型 nlp最强模型_bert_09


z1表示第一个词的结果,那么对于后面的每一个词都是可以按照这样的步骤进行运算,因此是可以并行计算的。

三、Multi-head

通过不同的head得到多个特征表达;将所有的特征拼接在一起;最后通过全连接层降维。

nlp最新ner模型 nlp最强模型_语言模型_10


nlp最新ner模型 nlp最强模型_并行计算_11


不同的head得到的最终结果也不同

nlp最新ner模型 nlp最强模型_bert_12


堆叠多层,计算方式相同

nlp最新ner模型 nlp最强模型_nlp最新ner模型_13