一、引入

当处理的输入向量长度不一样,且有多个向量输入的时候。

例如:文字处理。

对每一个文字进行One-Hot编码。(词汇之间没有关系)。

对文字进行词嵌入。

输出则会有三种可能:

① 和输入向量一样多Sequence Labeling

② 一个输出

③ 输出任意个向量Seq2Seq

二、自注意力机制

自注意力机制维护了一整个句子的上下文。

其中自注意力机制可以继续叠加,对整个上下文产生更好的维护。

FC处理局部的资讯,自注意力维护全局资讯。

而对自注意力机制的最好运用就是Attention is all you need。

提出了 Transformer。

三、自注意力机制

步骤:查询其他词汇对当前词汇的相关度α

1.1 计算注意力

一种使用Dot-product法。注意这里不是点乘。

一种使用Additive法。

1.2 计算相关度

当前词汇乘以q查询矩阵。

其余词汇(自己和自己也会计算关联)乘以k键矩阵。

计算出来注意力分数。

进行Softmax操作。(ReLU也行)

从而得出关联度α。

1.3 抽取重要资讯

依据注意力分数进行抽取。

将词向量乘以v值矩阵。

再乘以注意力分数。

再加起来。

例如,a1和a2的关系近,那么b1就会接近v2

以上计算可以化简。

四、多头自注意力机制

将q,k,v进行分解。

从而得出不同的相关性。

五、位置编码

我们发现计算完相关度之后,其实每一个向量的位置没有被维护。

这个位置资讯没有被维护。

所以我们提出来位置编码。