关于深度网络自学习attention mask的随笔

Attention 的出发点是学习一个 scale ,对深度网络的中间特征做线性激活,即:
对特征中有利于目标任务(如正确分类)的部分作增强( a > 1 a>1 a>1),对特征中不利于或无关目标任务的部分做抑制( a < 1 a<1 a<1


  1. 基于CAM(Class Activation Mapping)的注意力机制
    借助一个辅助分类器,在 [conv]* -> [GAP/GMP] -> [Full Connected] -> [Sigmoid] 的常见分类网络中,通过目标类别对应的 C C C 个全连接层的权重对 GAP/GMP 之前的特征( ∈ R H × W × C \in \Bbb R^{H\times W\times C} RH×W×C)作 channel-wise 的乘积。
    细节可以查看这篇博文
  2. Self-Attention
    最经典的用途是 SAGAN
  3. 自学习的 attention
    这是本文的主题哈!
    最近看到引用 u-gat-it 的一篇文章 Breaking the cycle—Colleagues are all you need,里边也使用了 attention 来辅助图像转换,不过这里的 attention 不是像 u-gat-it 中使用 CAM,而是使用一个网络分支来预测一个 mask,其中对 mask 的约束包括3个方面:(以当个 channel 的 mask M c ∈ R h × w M_c\in\Bbb R^{h\times w} McRh×w

稀疏性限制
min ⁡ ∑ i , j h , w M c , i , j \min \sum_{i,j}^{h,w}M_{c,i,j} mini,jh,wMc,i,j
这是因为一般 mask 的使用方式是 f e a t _ r e f i n e d = f e a t × m a s k feat\_refined=feat \times mask feat_refined=feat×mask,为了有所输出,同时简单化,模型很容易就使得 m a s k = a l l   o n e s mask=all~ones mask=all ones

平滑度限制
这是因为我们希望得到的 attention 足够平滑,并且较为集中,不会说出现很多个簇;我们可以使用 TV 正则项(Total Variation),即:
min ⁡ ∑ i , j h , w ( M c , i + 1 , j − M c , i , j ) 2 + ( M c , i , j + 1 − M c , i , j ) 2 \min \sum_{i,j}^{h,w}(M_{c,i+1,j}-M_{c,i,j})^2+(M_{c,i,j+1}-M_{c,i,j})^2 mini,jh,w(Mc,i+1,jMc,i,j)2+(Mc,i,j+1Mc,i,j)2
详情见

极端化促进
min ⁡ ∑ i , j h , w 1 ∣ M c , i , j − 0.5 ∣ ↑ + ϵ ↓ \min \sum_{i,j}^{h,w}{1\over{|M_{c,i,j}-0.5|\uparrow+\epsilon}}\downarrow mini,jh,wMc,i,j0.5+ϵ1
这个正则项比较好懂,就是,让 mask 的值原理均值 0.5.
深度网络的本质是统计学习,统计学习最爱的就是均值 mean,因此,mask 比较容易回归到中规中矩的 mean
同时这个形式的正则项的图像为:在这里插入图片描述,我们发现,在 0.5 附近梯度很大,更有利于 attn 的生成,而不是陷入 all 0.5 的情况。

猜你喜欢

转载自blog.csdn.net/WinerChopin/article/details/104025226