网络轻量化 - 注意力迁移(Attention Transfer)

原文:《PAYING MORE ATTENTION TO ATTENTION: IMPROVING THE PERFORMANCE OF CONVOLUTIONAL NEURAL NETWORKS VIA ATTENTION TRANSFER》

目录

  • 动机
  • 前期知识
    • 注意力机制
      • 空间域(Spatial Domain)
      • 通道域(Channel Domain)
      • 混合域(Mixed Domain)
  • 算法部分
    • 基于激活的注意力转移
      • 三种实现方式:
      • 利用注意力转移进行知识蒸馏
    • 基于梯度的注意力转移

动机

在知识蒸馏中,教师网络学习到的注意力图也可以作为一种知识,蒸馏到学生网络中,从而提高学生网络的性能表现。

关于注意力图的生成方式,提出了**基于激活(activation-based)基于梯度(gradient-based)**的两种注意力图表示方式。

前期知识

注意力机制

空间域(Spatial Domain)

通道域(Channel Domain)

SENet:

  • Squeeze:把原来 [ H ∗ W ∗ C ] [H*W*C] [HWC] 的特征,压缩为 [ 1 ∗ 1 ∗ C ] [1*1*C] [11C],每个通道用一个数值表示
  • Excitation:对这个 [ 1 ∗ 1 ∗ C ] [1*1*C] [11C] 特征进行重要性预测,学习不同通道的重要程度
  • Scale:根据学习到的重要性权重,与原特征图相乘,得到最终特征图输出
    网络轻量化 - 注意力迁移(Attention Transfer)_第1张图片

混合域(Mixed Domain)

CBAM:
依次应用通道和空间注意模块,如下图所示:
网络轻量化 - 注意力迁移(Attention Transfer)_第2张图片
通道注意力模块:

  • 先经过两种池化方式聚合信息,得到两个特征输出
  • 然后通过 Shared MLP 来学习不同通道的重要程度
  • 将两个注意力图相加,然后与原特征图相乘,得到最终特征

网络轻量化 - 注意力迁移(Attention Transfer)_第3张图片
空间注意力模块:

  • 沿着通道方向进行最大池化和平均池化,将两个输出特征进行通道叠加
  • 对叠加后的特征图进行卷积处理,生成空间注意力图

网络轻量化 - 注意力迁移(Attention Transfer)_第4张图片

算法部分

基于激活的注意力转移

三种实现方式:

  • 按照通道方向累加特征图中每个点的绝对值
  • 按照通道方向累加特征图中每个点的绝对值的 P 次方
  • 对于每个点,找到其所有通道的绝对值最大值,计算该值的 P 次方

网络轻量化 - 注意力迁移(Attention Transfer)_第5张图片
结论:

  • 网络中不同层有不同的注意力区域,会生成不同的注意力图。如中间层对于最具有判别性的区域激活程度最高,最高层则反应目标整体的特征区域
  • 越强大的网络往往具有更精准的注意力区域

利用注意力转移进行知识蒸馏

以 ResNet 为例,

  • 相同深度:在每个残差块后做注意力转移
  • 不同深度:在每个残差块组后做注意力转移

网络轻量化 - 注意力迁移(Attention Transfer)_第6张图片

Loss 设计:

在这里插入图片描述
其中,

  • S S S:学生网络
  • T T T:教师网络
  • W s W_s Ws:学生网络参数
  • j j j:教师网络和学生网络对应激活层编号
  • Q s Q_s Qs:学生网络激活图的向量表示
  • Q t Q_t Qt:教师网络激活图的向量表示
  • L ( W s , x ) L(W_s, x) L(Ws,x):学生网络交叉熵损失
  • P P P:正则化类型,本文取 2

注:若想和 Hilton 的知识蒸馏中的损失函数结合,只需要在原损失函数基础上,增加 soft 蒸馏损失函数。

基于梯度的注意力转移

对教师网络和学生网络的交叉熵损失函数分别求梯度:
在这里插入图片描述
设计 Loss,以最小化 J S J_S JS J T J_T JT 的距离:
在这里插入图片描述
给定输入和教师网络的参数,求学生网络的 W W W 梯度,用来实现参数更新:
在这里插入图片描述

你可能感兴趣的:(网络,深度学习,计算机视觉,神经网络)