问题背景
我们有一组KV对应表,现在来了一个新的q怎样计算q对应的V
朴素的解决方案
只考虑最相邻的两个元素,做线性插值,第一步要找到插值系数,比如上图中的57位于 56、58 正中间,所以系数可以选为0.5、0.5.
如果不只是和两个K相关呢
扩展前面的想法,如果要把所有的K都考虑进来,只需要计算q和每一个K的相关系数就好了。
我们可以使用softmax的方式得到一系列的相关系数:
下面的黄框叫做注意力分数,红框叫做注意力权重。朴素的就叫做相关系数,可能更好理解。
再将得到的相关系数作用到所有的V上面,问题就解决了。
来到二维的情况
问题长这个样子:
要计算的是一个二维的q的得分。
最终q的计算公式跟一维的情况没区别
唯一的区别在于权重的计算,我们有了多种选择:
可以将这个问题矩阵表示:
自注意力
如果QKV都是同一个矩阵,那么就是自注意力。