Transformer中自注意力的计算

本文深入探讨了自注意力机制的计算过程,包括如何从输入序列生成Keys, Queries和Values矩阵,以及如何通过这些矩阵计算注意力分数和最终输出。重点介绍了Transformer模型中自注意力的运用,其中Keys、Queries和Values的维度设置对模型的影响。
摘要由CSDN通过智能技术生成

        对于输入X=\begin{bmatrix} x_{1} \\ x_{2}\\ ... \\ x_{m} \end{bmatrix},X\epsilon 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} , Keys\epsilon R^{m*d_{k}}

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

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​      Values=X*W_{V},Values\epsilon 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}}}),score\epsilon R^{m*m}

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

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

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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值