自注意力机制 ¶
约 461 个字 预计阅读时间 2 分钟
输入和输出向量数量相同,输出的每一个向量都考虑了输入的所有向量,简单框架如下

框架 ¶
输入到输出推导 ¶
我们希望考虑所有的输入向量,但是又不希望所有的信息全部输入,因此引入关联参数 \(\alpha\),这个向量决定了 \(a^1\) 分别与另外几个输入的关联程度

\(\alpha\) 的计算则引出了最为关键的三个向量 \(q\)、 \(k\)、\(v\) ,下面是一个主流的计算方法,引入矩阵 \(W^q\)、\(W^k\)、\(W^v\)
- 查询(Query,Q):当前需要处理的信息,是模型“想要找什么”的核心依据。
- 键(Key,K):输入序列的特征表示,用于和 Query 计算相关性(判断“哪些信息和当前需求相关”
) 。 - 值(Value,V):输入序列的特征表示,是最终要提取的信息,会根据相关性权重加权求和。

下面是求第一个词与四个词之间的关联度,在进行 softmax 规则化处理,得到 attention 的分数

得到分数后,再求 \(b^1\)

然后依次可以得到所有的 \(b^i\)
矩阵形式 ¶
其中 \(I\) 代表输入,\(A\) 的每一列对应每一个 \([\alpha_{i,1},\alpha_{i,2},\alpha_{i,3},\alpha_{i,4}]\)

Multi-head Self-attention¶
在上面的 Self-attention 中,我们是用 \(q\) 去找相关的 \(k\),但是相关有很多不同的定义,因此这里提出 Multi-head Self-attention,引入多组 \(q,k,v\)

对 Self-attention 的缺陷
缺少了每一个 Input 在 Sequence 的位置信息
Self-attention 和 attention 的区别
attention 只规定了后面对于 \(QKV\) 三个矩阵运算规则,没有规定这三个矩阵是怎么得来的 而Self-attention则规定了\(QKV\)三个矩阵是同源的,都是由X乘不同矩阵得到的