序言

经常会听到注意力机制,在很多应用都能落地。跟CNN,RNN(LSTM)等深度学习都是热点。而且Attention机制在机器翻译,图片描述,语音识别和文本摘要中取到很大的成功。
那么Attention机制到底是怎样子的一个存在呢?
现在举一个简单例子。
假设输入X = [0.1, 1, 0.1, 0.2, 0.2, 0.3 0.1, 0.1, 0.1, 0.2] 而该分类的Y是1。则其实 在X的第二个特征1就很好的决定了分类Y,表明第二个特征跟Y关系大。所以我们想着能不能把第二个特征的权重提高。使用的方法是Attention机制。创建一个概率数组,使得第二特征的概率大一点,最好当然是 [0,1,0,0,0,0,0,0,0,0]. 然后再跟input X相乘,直接得到 Y = 1 分类结束。

#创建mask/probs 概率--用softmax函数得出概率
probs = Dense(input_dim, actication = 'softmax')(inputs)
#再跟inputs相乘
attention_mul = merge([probs, inputs],output_shape = 32)

如果不记得softmax激活函数
softmax函数其实就是将多个神经元的输入,映射在(0,1)之间。可以当作概率的计算,公式为:
S i = e i ∑ j = 1 n e j S_i = \frac{e^i}{\sum_{j=1}^n e^j} Si=j=1nejei
【值得关注的是: ∑ i = 1 n S i = 1 \sum_{i=1}^n S_i = 1 i=1nSi=1

在论文 Attention Residual Network on Image Classification的应用
回忆论文内容
在这里插入图片描述

其中,Attention Module是由soft mask Branch和 Trunk Branch 组成
而Soft mask Branch 充当 Attention probs 来与Trunk Branch相乘。
其中概率的计算是用Sigmoid来计算出来的。
Attention Probs有三种方法可以计算:

  1. softmax ()
  2. sigmoid()
  3. L2 normalization – L2()

其中,也比较来论文提出的Attention Residual Learning(ARL)的网络结构 VS Naive Attention Learning (NAL)的网络结构。
ARL是如下的Network图:
在这里插入图片描述
NAL是看砍断了Trunk branch 的相加过程,即直接 Mask * Trunk 而不是 Mask*Trunk + Trunk。
实验结果证明 还是ARL的acc更好。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐