一次注意力,怎样算出一个向量?

点“播放”沿着六步演算。Q、K、V 的数值人为设定,用于核对公式;不是训练所得的词义表示。

一次注意力的数值计算查询与键打分,经过缩放和归一化,再对值向量加权,得到“坐”的新表示。查询、键和值
q坐=[1,0]q_{\text{坐}}=[1,0]
K=[100111]K=\begin{bmatrix}1&0\\0&1\\1&1\end{bmatrix}
V=[200222]V=\begin{bmatrix}2&0\\0&2\\2&2\end{bmatrix}
点积打分
q坐KT=[1,0,1]q_{\text{坐}}K^{\mathsf T}=[1,0,1]
三个分数依次对应:猫、坐、垫
缩放分数
qKT2≈[0.707,0,0.707]\frac{qK^{\mathsf T}}{\sqrt{2}}\approx[0.707,0,0.707]
dk=2d_k=2
归一化权重
a=softmax⁡(s)a=\operatorname{softmax}(s)
[0.4011,  0.1978,  0.4011][0.4011,\;0.1978,\;0.4011]
每一行的权重之和为 1
对值向量加权
0.4011[2,0]+0.1978[0,2]+0.4011[2,2]\begin{gathered}0.4011[2,0]+0.1978[0,2]\\{}+0.4011[2,2]\end{gathered}
权重乘到对应的值向量上
新的上下文表示
z坐≈[1.6044,1.1978]z_{\text{坐}}\approx[1.6044,1.1978]
把三个位置的信息汇入一个向量
一次注意力的数值计算查询与键打分,经过缩放和归一化,再对值向量加权,得到“坐”的新表示。查询、键和值
q坐=[1,0]q_{\text{坐}}=[1,0]
K=[100111]K=\begin{bmatrix}1&0\\0&1\\1&1\end{bmatrix}
V=[200222]V=\begin{bmatrix}2&0\\0&2\\2&2\end{bmatrix}
点积打分
q坐KT=[1,0,1]q_{\text{坐}}K^{\mathsf T}=[1,0,1]
三个分数依次对应:猫、坐、垫
缩放分数
qKT2≈[0.707,0,0.707]\frac{qK^{\mathsf T}}{\sqrt{2}}\approx[0.707,0,0.707]
dk=2d_k=2
归一化权重
a=softmax⁡(s)a=\operatorname{softmax}(s)
[0.4011,  0.1978,  0.4011][0.4011,\;0.1978,\;0.4011]
每一行的权重之和为 1
对值向量加权
0.4011[2,0]+0.1978[0,2]+0.4011[2,2]\begin{gathered}0.4011[2,0]+0.1978[0,2]\\{}+0.4011[2,2]\end{gathered}
权重乘到对应的值向量上
新的上下文表示
z坐≈[1.6044,1.1978]z_{\text{坐}}\approx[1.6044,1.1978]
把三个位置的信息汇入一个向量

读图重点:K 参与计算“取多少”,V 提供“取什么”。数字在完整精度下计算,显示值四舍五入。

播放控件显示当前步骤。键盘 ← / → 切换步骤,Home / End 查看起点和终点。