六 神经网络与深度学习——注意力机制( 四 )


对于整个输入序列 X \{X} X,线性映射过程可以简写为 Q = W q X ∈ R D k × N K = W k X ∈ R D k × N V = W v X ∈ R D v × N \begin{array}{l}\{Q}=\{W}_{q} \{X} \in \{R}^{D_{k} \times N} \\ \{K}=\{W}_{k} \{X} \in \{R}^{D_{k} \times N} \\ \{V}=\{W}_{v} \{X} \in \{R}^{D_{v} \times N}\end{array} Q=Wq?X∈RDk?×NK=Wk?X∈RDk?×NV=Wv?X∈RDv?×N?
其中 W q ∈ R D k × D x , W k ∈ R D k × D x , W v ∈ R D v × D x \{W}_{q} \in \{R}^{D_{k} \times D_{x}}, \{W}_{k} \in \{R}^{D_{k} \times D_{x}}, \{W}_{v} \in \{R}^{D_{v} \times D_{x}} Wq?∈RDk?×Dx?,Wk?∈RDk?×Dx?,Wv?∈RDv?×Dx?分别为线性映射的参数矩阵,Q = [ q 1 , ? , q N ] , K = [ k 1 , ? , k N ] , V = [ v 1 , ? , v N ] \{Q}=\left[\{q}_{1}, \cdots, \{q}_{N}\right], \{K}=\left[\{k}_{1}, \cdots, \{k}_{N}\right], \{V}=\left[\{v}_{1}, \cdots, \{v}_{N}\right] Q=[q1?,?,qN?],K=[k1?,?,kN?],V=[v1?,?,vN?]分别由查询向量、键向量和值向量构成的矩阵 。
2)对于每一个查询向量 q n \{q}_{n} qn?利用键值对注意力机制,可以得到输出 h n \{h}_{n} hn?
h n = att ? ( ( K , V ) , q n ) = ∑ j = 1 N α n j v j = ∑ j = 1 N? ( s ( k j , q n ) ) v j \begin{} \{h}_{n} &=\{att}\left((\{K}, \{V}), \{q}_{n}\right) \\ &=\sum_{j=1}^{N} \{n j} \{v}_{j} \\ &=\sum_{j=1}^{N} \{}\left(s\left(\{k}_{j}, \{q}_{n}\right)\right) \{v}_{j} \end{} hn??=att((K,V),qn?)=j=1∑N?αnj?vj?=j=1∑N?(s(kj?,qn?))vj??
其中 n , j ∈ [ 1 , N ] n,j\in[1,N] n,j∈[1,N]为输出和输入向量序列的位置,α n j \{nj} αnj?表示第 n n n个输出关注到第 j j j个输入的权重 。
如果使用缩放点积来作为注意力打分函数,输出向量序列可以简写为
H = V? ( K ? V D k ) \{H}=\{V} \{}\left(\frac{\{K}^{\top} \{V}}{\sqrt{D_{k}}}\right) H=(Dk??K?V?)
其中 (·)为按列进行归一化的函数 。
下图为全连接模型和自注意力模型的对比,实线表示可学习的权重,虚线表示动态生成的权重 。由于自注意力模型的权重是动态生成的,因此可以处理变成的信息序列 。
一个有助于理解的延伸阅读:详解 ( Is All You Need) 。