序言
经常会听到注意力机制,在很多应用都能落地。跟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有三种方法可以计算:
- softmax ()
- sigmoid()
- L2 normalization – L2()
其中,也比较来论文提出的Attention Residual Learning(ARL)的网络结构 VS Naive Attention Learning (NAL)的网络结构。
ARL是如下的Network图:
NAL是看砍断了Trunk branch 的相加过程,即直接 Mask * Trunk 而不是 Mask*Trunk + Trunk。
实验结果证明 还是ARL的acc更好。