动手学深度学习 | 注意力分数 | 65

注意力分数

刚刚的注意力权重,如何设计使得和我们现在的东西比较相像?里面一个东西叫做注意力分数。

可以看看之前的使用过了高斯核的注意力。

上图有一堆key-value pair(训练时候的x和y),输入一个query(推理时候的x),然后query和每一个key做一个计算,得到一个注意力分数a,然后这些注意力分数a经过softmax得到注意力权重,然后(alpha(x,x_i)y_i)就可以得到一个注意力的输出。

拓展到高维度,就是这些向量可以是长度不同的,应该怎么处理呢?

可加性的注意力是什么意思?

k是长度为k的向量,q是长度为q的向量,那么(W_kk)会得到一个长度为h的向量,(W_qq)也会得到一个长度为h的向量,然后将两个向量加起来,再和长度为h向量v进行计算。

好处:key,value可以是任意的长度

如何query和key的长度一样,长度为d,那么最简单的方式就是不学东西,直接query和key进行内积,在除$sqrt{d} $

这个操作就是让其相对来说对参数没有那么敏感。

这个的好处是不用学习参数。

代码

QA

  1. 把之前的x和x_i换成了q和k_i吗?

是的,之前核方法的注意力那里使用的是x和x_i,这里换成了q和k_i。

沐神说干脆下次把书的公式进行统一,统一为q和k_i。

原文地址:https://www.cnblogs.com/Rowry/p/15378449.html