自注意机制和RNN

发布时间 2023-07-20 17:33:51作者: 天亮yǐ后

self attention(自注意机制)

  • 输入:以往神经网络的输入都是一个向量;如果现在输入的是一排向量,并且数量不唯一,应该如何处理:

例一:一句英文

One-hot Encoding:开一个长度为世界上全部词汇数的向量表示一个词汇(缺点:词汇间没关系)

Word Embedding:给每个词汇一个坐标向量,这种方式有关系的词汇坐标距离接近

例二:声音讯号;一般会把一段声音讯号划分为一个向量(frame)(长度为25毫秒),并且每段向后移动10毫秒

例三:图;每个结点都是一个向量

  • 输出:每一个输入的向量对应一个输出;

  •  输出:整个序列(sequence)只输出一个标签(label),(筛选留言是正面还是反面)

  • 输出:输出的标签(label)的个数不定,由机器自定

 Sequence Labeling(序列标签)

  • Self attention:传入整个序列(Sequence)的数据,传入几个向量就输出几个向量,输出的向量都是考虑序列全部输入向量而得出的结果;

 并且Self attention可以叠加多次。所以Self attention可以和FC(Fully connected network)交替使用;Self attention处理整体信息,FC专注处理某个位置的信息。

Self attention内部:

 产生b1的过程:

1.根据a1找出整个序列中与a1相关的其他向量的联系程度,记a1与其他几个的联系程度为α;(得到α可以用Dot product或Additive等)

 2.得到联系程度α后,再做一个Softmax或Relu等得到 α(规范化norm),可以通过 α抽取出序列中重要想信息

矩阵过程:

 

  •  得到关系程度分数 α

  • 得出输出结果:

 总结:

根据

得出,需要训练得到的参数只有Wq、Wk、Wv

扩展:

  • Multi head Self attention(多头自我注意),相互之间有多种相关关系

例如head=2:

 最终结果:

 求法二:

 法二的计算量比法一的计算量较少

Self attenton和CNN

  • Self attenton是考虑序列中全部的向量得出某向量的输出向量
  • CNN(卷积神经网络Convolutional neural network)则是只考虑该向量及其周围的几个向量

Recurrent Neural Network(循环神经网络)

例:当分析一句话中各词汇是什么词性,往往需要结合前一个词汇一起分析,并且一句话中相同的词汇可能得出不同的结果;这时就需要RNN(循环神经网络)

  • RNN(循环神经网络):是有记忆力的,上图中同样是Taipei,要得出不同的结果就需要结合之前的一个词汇
  • 刚开始给memory赋初始值,之后会把前一个词汇的输出存入memory,达到有记忆力的效果

 并且可以叠多层:

 RNN由分为Elman和Jordan

Bidirectional RNN(双向RNN)

 

RNN:LSTN… 

  • 训练:计算L对w的偏微分;用Gradient Descent(梯度下降法)优化参数

 Graph Neural Networks(图神经网络)

 。。。