数解 transformer 之 self attention transformer 公式整理

句子长度为n;比如2048,或1024,即,一句话最多可以是1024个单词。

1, 位置编码

E=[e_1 e_2 \cdots e_{n}]\\ e_{pos}(2i) = PE(pos, 2i) = sin(pos/10000^{2i/n})\\ e_{pos}(2i+1) =PE(pos,2i+1)=cos(pos/10000^{(2i+1)/n})\\ where\,\, pos \in \{1,2,\cdots,n\}

可知,E是由n个列向量组成的矩阵,每个列向量表示该列号的位置编码向量。

2, 输入向量

加入本句话第一个单词的词嵌入向量是x_1, 第二个单词是 x_2, 以此类推,最多是x_n.

如果句子长度不足 n个单词,则后面没有单词对应的x_i = \mathbf{0}

X=(x_1\,x_2\,\cdots\,x_n)为句子的词嵌入编码矩阵表示,为了让单词携带位置信息,直接将每个单词的词嵌入向量上加位置编码向量:

x_i = x_i + e_i

矩阵表示为:

X=X+E

X=(x_1+e_1 \,\,x_2+e_2\,\,\cdots\,\,x_n+e_n)

作为第一层 self-attention 模块的输入向量。

3, 完整的一层编码器计算过程

X=(x_1\,\,x_2\,\, \cdots\,\,x_n)

[q_1\,q_2\cdots\,q_n] = Q = W_qX=W_q[x_1\,\,x_2\,\,\cdots\,\,x_n]

[k_1\,k_2\,\cdots\,k_n]=K=W_kX=W_k[x_1\,\,x_2\,\,\cdots\,\,x_n]

[v_1\,v_2\,\cdots\,v_n]=V=W_vX=W_v[x_1\,\,x_2\,\,\cdots\,\,x_n]

\left[ \begin{array}{cccc} a_{1,1} & a_{2,1} & \cdots &a_{n,1}\\ a_{1,2} & a_{2,2} & \cdots &a_{n,2}\\ \vdots & \vdots & \ddots & \vdots\\ a_{1,n} & a_{2,n} & \cdots &a_{n,n}\\ \end{array} \right] = A =K^TQ= \left[ \begin{array}{c} k_1^T\\ k_2^T\\ \vdots\\ k_n^T\\ \end{array} \right] [q_1\,q_2\, \cdots \,q_n]

\left[ \begin{array}{cccc} a_{1,1}^{'} & a_{2,1}^{'} & \cdots &a_{n,1}^{'}\\ a_{1,2}^{'} & a_{2,2}^{'} & \cdots &a_{n,2}^{'}\\ \vdots & \vdots & \ddots & \vdots\\ a_{1,n}^{'} & a_{2,n}^{'} & \cdots &a_{n,n}^{'}\\ \end{array} \right] = A^{'} = \mathbf{softmax}_{column}(\mathbf{A}) = \mathbf{softmax}_{column} ( \left[ \begin{array}{cccc} a_{1,1} & a_{2,1} & \cdots &a_{n,1}\\ a_{1,2} & a_{2,2} & \cdots &a_{n,2}\\ \vdots & \vdots & \ddots & \vdots\\ a_{1,n} & a_{2,n} & \cdots &a_{n,n}\\ \end{array} \right] )

Y=\mathbf{V}\mathbf{A}^{'}=[v_1\,v_2\,\cdots\,v_n]\mathbf{A}^{'}

\mathbf{Y}=\mathbf{Y}+\mathbf{X}

\mathbf{Y}=normalized(\mathbf{Y})

\mathbf{Y}=\mathbf{FFN}(\mathbf{Y})

\mathbf{Y} = \mathbf{Y}+\mathbf{X}

然后将 \mathbf{Y} 送入下一层编码器,进行相同的计算过程,只是其中的\mathbf{W_q, W_k, W_v, FFN} 的权重不同而已。

4, 更多参考资料

 The Illustrated Transformer – Jay Alammar – Visualizing machine learning one concept at a time.

图解Transformer(完整版)!翻译

自然语言处理Transformer模型最详细讲解(图解版)-CSDN博客

未完待续 ... ...

你可能感兴趣的:(transformer,深度学习,人工智能)