转载地址
https://www.zhihu.com/question/320174043/answer/651998472
解释
正如你所说的,Attention的最终输出可以看成是一个“在关注部分权重更大的全连接层”。但是它与全连接层的区别在于,注意力机制可以利用输入的特征信息来确定哪些部分更重要。
举个例子:
输入层有A,B,C三个特征向量,我们需要构造一层网络来确定三者的权重,然后加权求和得到输出O。也就是得到三个权重 ,然后得到
。
这个式子形式上看上去确实是全连接层没错。然而如果用全连接层有什么问题呢?
问题就在于在全连接层里, 是根据位置确定的。我第一次给你三个数据ABC,然后你得出了B最重要,也就是让
最大。然而我下次给你的顺序可能是BAC,这次A在刚才B的位置,如果你用全连接层来实现的话,得出的结果就会变成
。这就变成了A最重要了,这显然不是我们想要的结果。
那么如何解决这个问题呢?我们就要根据实体自身的特征,而不是它们的位置来确定它们的重要程度。也就是说, 不该是固定的,而是要与A,B,C的值相关。简单考虑,也就是要定义一个函数f,令
。
于是我们就给每个实体分配了一个与它们的位置无关的权重。这里的函数f就是我们所说的注意力机制。注意力机制f的定义方式有很多种,但是不属于这个问题的范围,这里我就不讨论了。
我们最终得出的输出为
可以看出,最终整合信息时加权求和的形式没有变,所以可能是这样才让题主产生了注意力机制与全连接层没有区别的疑惑。然而事实上注意力机制的意义是引入了权重函数f,使得权重与输入相关,从而避免了全连接层中权重固定的问题。
2019年4月21日更新:
经评论区一位朋友的提醒,想到可以从另外一个角度解释这个问题:
全连接的作用的是对一个实体进行从一个特征空间到另一个特征空间的映射,而注意力机制是要对来自同一个特征空间的多个实体进行整合。
全连接的权重对应的是一个实体上的每个特征的重要性,而注意力机制的输出结果是各个实体的重要性。
比如说,一个单词“love”在从200维的特征空间转换到100维的特征空间时,使用的是全连接,不需要注意力机制,因为特征空间每一维的意义是固定的。而如果我们面对的是词组“I love you”,需要对三个200维的实体特征进行整合,整合为一个200维的实体,此时就要考虑到实体间的位置可能发生变化,我们下次收到的句子可能是“love you I”,从而需要一个与位置无关的方案。