自注意力机制的一个非常好的比喻解释:
如上图所示,所谓的自注意力机制其实就是一个自动根据节点特征向量构建加权有向图的过程。这里面的每一个节点表示输入给自注意力层的一个神经元,每个神经元都有三组节点特征向量,分别定义为Query、Key和Value。那么,对于任何两个神经元i和j,它们之间有没有链接呢?这就要由i的Query向量与j的Key向量的内积来决定了。
> 我们不妨把Query理解为一把钥匙,而Key则理解为一把锁,二者的内积大小就是钥匙和锁的匹配程度,这个程度的值就是i应该关注j的注意力大小,它是一个从i指向j的权重值。
进一步,为什么要构建这个网络呢?答案就是,为了提取信息。有了这个注意力数值,i就可以从j的身上来提取信息了(也就是储存在V向量中的信息)。然而,与一般的网络动力学不同的是,这个注意力网络本质上是由神经网络的前馈过程来决定的,也就是说随着输入给注意力机制的信息不同,最终得到的注意力网络也是不同的。于是,各个神经元之间便可以在前馈运算过程中随着流入信息的不同而形成不同的信息通路。
> 我们不妨把一个前馈运算过程和网络权重比喻成水流和河道。一般的神经网络河道是慢变的,水流只能被动地在河道中流淌,而只能通过缓慢的训练过程慢慢改变河道。但是,有了自注意力这种机制,河水能够在流淌的过程中就改变河道的分布情况,这就使得单一的前馈运算过程就已经成为快慢两种时间尺度混合的动力学过程了。