0%

Self-attention

一、Vector Set as Input

​ 与以前遇到的问题不同,输入的是一个向量的集合。向量的数目不确定。

​ 典型应用:NLP中语句作为输入,每个单词是一个vector,可以用one-hot编码编成向量,也可以用word-embedding包含语义信息;语音输入,以frame为单位,一定步长移动;Social-network,可以将每个节点作为一个vector;高分子结构,同样可以视为一种graph。

二、The output

1.each vector has a label

例子:

  • 词性标注 I saw a saw. –>> N V DET N
  • social networrk每个节点的特性

2.the whole sequence has a label

例子:

  • sentiment analysis
  • 预测高分子的性质

3.Model decides the number of labels tself

例子:

  • 翻译
  • 语音辨识

三、Type one

sequence label问题

1.self-attention作为解决方法

1

不是考虑一个frame或windows,而是考虑整个sequence作为输入

同时self-attention可以多次使用且可以与fully-conntected network交替使用

2

2.self-attention做法

计算一对vector之间的关联程度

3

计算sequence中vector的关联程度

4

最终输出一个vector

5

简化运算形式:

6

7

8

3.multi-head attention

发掘不同的self-attention

9

4.Positional Encoding

上述计算中并没有考虑位置信息,计算过程对称。

但如果认为位置信息比较重要则可以加进去,做法可以对每一个位置生成一个unique vector,与原来的输入相加即可。