Transformer网络

注意力机制

Attention机制最早在视觉领域提出,2014年Google Mind发表了《Recurrent Models of Visual Attention》。

2015年,Bahdanau等人在论文《Neural Machine Translation by Jointly Learning to Align and Translate》中,将attention机制首次应用在nlp领域,其采用Seq2Seq+Attention模型来进行机器翻译

2017年,Google 机器翻译团队发表的《Attention is All You Need》中,完全抛弃了RNN和CNN等网络结构,而仅仅采用Attention机制来进行机器翻译任务。

Transformer、Attention与Self-Attention
https://blog.csdn.net/weixin_41712499/article/details/103199986
 

Encoder-Decoder模型,也可以称之为Seq2Seq模型。
对于序列到序列的数据来说,可以把Encoder和Decoder分别看成是RNN,在Encoder中根据输入数据生成一个语义编码C。
拿到C之后,就可以用另一个RNN进行解码,这部分RNN被称为Decoder,具体做法就是将C当做之前的初始状态h0输入到Decoder中。

Attention(注意力机制)
“机","器","学","习”的信息,在翻译"macine"时,第一个上下文向量C1应该和"机","器"两个字最相关,所以对应的权重a比较大,在翻译"learning"时,第二个上下文向量C2应该和"学","习"两个字最相关,所以"学","习"对应的权重a比较大。
a其实是一个0-1之间的值。
https://zhuanlan.zhihu.com/p/52119092

Transformer是一个利用注意力机制来提高模型训练速度的模型。

一般情况下,Encoders里边有6个小编码器,同样的,Decoders里边有6个小解码器。
 

我们放大一个encoder,发现里边的结构是一个自注意力机制加上一个前馈神经网络。
 .

self-attention:
自注意力机制,顾名思义就是自己和自己计算一遍注意力。
Q:query  K:key  V:value
 

论文为了进一步细化自注意力机制层,增加了“多头注意力机制”的概念,这从两个方面提高了自注意力层的性能。
第一个方面,他扩展了模型关注不同位置的能力。
第二个方面,他给了自注意力层多个“表示子空间”。
对于多头自注意力机制,我们不止有一组Q/K/V和权重矩阵Z,而是有多组(论文中使用8组),所以每个编码器/解码器使用8个“头”(可以理解为8个互不干扰自的注意力机制运算),每一组的Q/K/V都不相同。然后,得到8个不同的权重矩阵Z,每个权重矩阵被用来将输入向量投射到不同的表示子空间。

self-attention的输出即是前馈神经网络层的输入,然后前馈神经网络的输入只需要一个矩阵就可以了。

为了解决梯度消失的问题,在Encoders和Decoder中都是用了残差神经网络的结构,即每一个前馈神经网络的输入不光包含上述self-attention的输出Z,还包含最原始的输入。

首先对输出(machine learning)计算自注意力得分,不同的地方在于,进行过自注意力机制后,将self-attention的输出再与Decoders模块的输出计算一遍注意力机制得分,之后,再进入前馈神经网络模块。
 

位置编码
我们可以给每个词向量加上一个有顺序特征的向量,发现sin和cos函数能够很好的表达这种特征
https://zhuanlan.zhihu.com/p/82312421
 

你可能感兴趣的:(神经网络,transformer,网络,自然语言处理)