Attention Is All You Need

                                                                -Ashish Vaswani


1.Self-Attention是个啥,自己注意自己?

2.Q、K、V又是什么?

3.为什么它们要叫query、key、value,它们有什么关系?

先来看一个问题,假设现在有一个键值对(Python字典)

自然地,推断其体重在43~48之间,但是还需要定量计算体重预测值。

由于57到56、58的距离一样,所以一种方法是取它们对应体重的平均值。

因为57距离56、58最近,我们自然会非常“注意”它们,所以分给它们的注意力权重各为0.5。不过没有用上其它的(Key,Value),似乎应该调整一下注意力权重,但权重如何计算? 

假设用a(q,k)来表示q与k对应的注意力权重,则体重预测值f(q)为

a是任意能刻画相关性的函微,但需要归一化,我们以高斯核(注意力分数)为例(包括softmax函数) 。

通过这种方式我们就可以求得体重估计值,这也就是注意力机制(Attention)。

 所以把上面的q叫做query(请求),k叫做key(键),v叫做value(值) 。

q、k、v都为多维的情况也是类似的 ——假设现在给出的q是二维的

由于q1和k1都是二维向量 

注意力分数a(q,ki)可以是以下几种

 以点积模型为例

q2也是类似的,不再赘述

为了方便,用矩阵来表示

 为了缓解梯度消失的问题,还会除以一个特征维度

把这一系列操作形象地称为缩放点积注意力模型(scaled dot-product attention) 

4.如果Q、K、V是同一个矩阵会发生什么? 

没错,那就是自注意力(Self-Attention)

用X来表示这个矩阵

则可以表示为如下式子

 但在实际运用中可能会对X先做不同的线性变换再输入,比如(Transformer)模型

这可能是因为X转换空间后能更加专注注意力的学习。 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐