本文已参与「新人创造礼」活动,一起敞开创造之路。

SCA-CNN

《SCA-CNN: Spatial and Channel-wise Attention in Convolutional Networksfor Image Captioning》

整体介绍

 文章认为CNN具有三个非常重要的性质,channel,spatial,multilayer,可是现有的根据注意力机制的CNN方法大多只在网络最终一层的引入spatial attention机制,罔顾了channel和multilayer这两个特性。作者认为spatial信息是用于答复“哪里”重要,即feature map中哪些位置更为重要(对应原图中的感触野更为重要),channel信息是用于答复“哪些”重要,即feature map中的哪些channle(特征)更为重要,由于不同的channle由不同的filter得到,不同的filter能够认为是不同的特征提取子。而单单在最终一层利用spatial attention,产生了感触野过大,feature map不同位对应感触野差异性缺乏的问题。为此,作者提出了spactial and channle wise attention-CNN来更好的利用CNN前述的三个特性。

模型介绍

 SCA-CNN在某一层的运算流程如下公式:

Vl=CNN(Xl−1)(1)l=(ht−1,Vl)(2)Xl=f(Vl,l)(3)V^l=CNN(X^{l-1})\qquad(1)\\ \gamma^l=\Phi(h_{t-1},V_l)\qquad(2)\\ X^l=f(V^l,\gamma^l)\qquad(3)

能够看出对于咱们首先会核算网络上一层的输出feature map Vl∈RH∗W∗CV^l\in R^{H*W*C},而后经过函数()\Phi()核算出注意力l∈RH∗W∗C\gamma^l \in R^{H*W*C},再将得到的注意力图样与该层的输入feature map经函数f()f()组合得到该层的加权输入XlX^l,这儿的ht−1h_{t-1}能够认为是来及成果层面上的辅导,文章是拿image caption问题做比如,先用CNN做特征提取模块(encoder),送入LSTM得到文字输出(decoder)。公式中的ht−1h_{t-1}就是LSTM在前一时刻的隐状况,函数f()f()就是简略的点乘。实际上这个过程更好的次序表述为(2),(3),(1),即先由前层的输出核算注意力,将输出与注意力点乘得到本层的真正输入,再送入本层CNN得到本层输出。

改善

 上式在理论层面上没有问题,但在实操层面存在着运算量过大的问题,由于注意力图样l∈RH∗W∗C\gamma^l\in R^{H*W*C},咱们需要至少O(kHWC)O(kHWC)的内存(k和隐状况有关,但没看懂),因而作者将l\gamma^l又细分为了通道层面的注意力和空间层面的注意力以别离核算,节省空间。

 空间层面的注意力核算如下:

al=tanh((WsVl+bs)⊕Whsht−1)l=softmax(Wia+bi)a^l=tanh((W_sV^l+b_s)\oplus W_{hs}h_{t-1})\\ \alpha^l=softmax(W_ia+b_i)

其间VV为原始特征图样在空间层面上flatten的成果,V∈RC∗m,m=H∗WV\in R^{C*m},m=H*W,最终得到l∈Rm\alpha^l \in R^m,其余参数尺寸:Ws∈Rk∗C,Whs∈Rk∗d,ht−1∈Rd,Wi∈RkW_s\in R^{k*C},W_{hs}\in R^{k*d},h_{t-1}\in R^d,W_i\in R^k⊕\oplus矩阵向量相加,即把向量加在矩阵的每一行上。

 通道层面的注意力如下:

bl=tanh((Wc⊗vl+bc)⊕Whcht−1)l=softmax(Wi′b+bi′)b^l=tanh((W_c\otimes v^l+b_c)\oplus W_{hc}h_{t-1})\\ \beta^l=softmax(W’_ib+b’_i)

其间vv为原始特征图样在空间层面上mean pooling成果,v∈RCv\in R^C,最终得到∈RC\beta \in R^C 根据是先核算空间层面的注意力仍是通道层面的注意力,咱们的SCA-CNN也能够细分为S-C和C-S类型,值得注意的是此刻后一步运算用到的特征图样已不再是原始的特征图样,而是经前一步得到注意力加权得到的图样。具体流程见下图:

论文解析:SCA-CNN
由函数c()\phi_c()核算出在channel层面上的注意力散布l∈RC\beta^l\in R^C,在此基础上由函数s()\phi_s()得到了spatial层面上的注意力散布l∈RH∗W\alpha^l\in R^H*W,最终将核算出的l,l\alpha^l,\beta^l与原始的VlV^l结合得到当时的加权后feature map。

试验成果

 文章试验主要是为了验证3个问题:

  1. 引入通道层面的注意力是否有用->经过对S,C,C-S,S-C,SAT模型作用比对,证明了当feature map层数过多时引入通道层面的注意力,模型体现更好;而将通道注意力与空间注意力结合则会到达最好的作用;
  2. 引入多层注意力是否有用-经过在S和C-S模型中引入不同数目的attenion module,发现在大部分试验里多层的作用要优于单层,但层数过多存在着过拟合的危险。
  3. 与现有SOTA模型比较,SCA-CNN作用怎么样->比大部分模型作用好的,略逊色与某些模型,要么由于是ensemble modle要么由于模型有着更优越的结构。

总结

 文章的主要思路仍是在开始提出的两个问题,关注”what”和”where”,得到了不错的成果,强调了通道和空间都很重要,至于multilayer,感觉作用没有很明显