Transformer中自注意力的计算

        对于输入X=begin{bmatrix} x_{1} \ x_{2}\ ... \ x_{m} end{bmatrix},Xepsilon R^{m*n},代表输入了m个长度为n的序列。

        首先,要算出这m个序列的Keys,Queries和Values。这里使用三个矩阵,即:W_{K}^{n*d_{k}}W_{Q}^{n*d_{k}}W_{V}^{n*d_{v}},分别计算如下:

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        Keys=X*W_{K} , Keysepsilon R^{m*d_{k}}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​     Queries=X*W_{Q},Queriesepsilon R^{m*d_{k}}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​      Values=X*W_{V},Valuesepsilon R^{m*d_{v}}

        此处 W_{K}W_{Q}的大小应保持一致,W_{K}^{n*d_{k}},W_{Q}^{n*d_{k}},W_{V}^{n*d_{v}}三个矩阵中的值都是可以学习的。

        由此,得到了对应m个序列的Keys,Queries和Values。下一步要做的是,由Keys,Queries和Values计算出自注意力的分数,(为了简便,以下将Keys,Queries和Values简写为Q,K,V),计算方法如下:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        score=softmax(frac{Q*K^{T}}{sqrt{d_{k}}}),scoreepsilon R^{m*m}

        这个score即为m个序列的权重系数,接下来只需将score与V相乘,即可得到最终输出:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​          ​​​​​​​        Output=score*V

        所以,最终输出矩阵的尺寸为:输入序列的数量x  d_{v}(单个Value向量的维度),不过Transfor-mer的作者在原文中将d_{k}d_{v}设置为了同样的数值。

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>