注意力机制
有一个字典(Python中称为字典,也叫键值对)。我们记为(key, value)。
比方说我们有下列腰围体重数据,我们又有一个样本,他的腰围是57,那么我们预测他的体重值是多少呢?或者说我们怎么预测他的体重值呢?
由于57到56和58的距离一样,那么我们可以预测他的体重值为它们对应体重的平均值,即(43 + 48) / 2 = 0.5 * 43 + 0.5 * 48 = 45.5
,注意此处,由于56和58离57非常接近,所以我们自然会非常"注意"它们,所以我们分给它们的注意力权重各为0.5。但是这里有一个问题,我们没有用上其他的键值对
我们好像要调整一下注意力权重,那么我们该怎么计算权重呢?
简单理解,体重预测值f(q)就是预测值的key与每个已知值的key所计算出来的权重再乘以与已知值相对应的value再进行求和。
而其中的权重就是α(q, ki)
我们将上面的q称为请求(query),k叫做键(key),v叫做值(value)。
q,k,v在多维的情况下也是类似的。
假设q是二维的,由于q1和k1都是二维向量,注意力分数可以使以下几种,如图所示:
以点积模型为例:
为了方便,我们使用矩阵来表示:
为了缓解梯度消失问题,我们还会除以一个特征维度,我们将其称为“缩放点积注意力模型”
如果Q、K、V是同一个矩阵会发生什么?那就是自注意力,
我么用X来表示这个矩阵,那么有:
三个可以训练的矩阵:
写在最后
以上截图和文字均来自于哔哩哔哩:
标签:体重,矩阵,我们,key,哔哩,机制,注意力 From: https://www.cnblogs.com/wephiles/p/17984018【注意力机制的本质|Self-Attention|Transformer|QKV矩阵-哔哩哔哩】 https://b23.tv/W4FwAY4