ICLR 2017 | AT_注意力引导的知识蒸馏

ICLR2017 | Paying More Attention to Attention
https://github.com/szagoruyko/attention-transfer

1.注意力机制

注意力在人类视觉体验中起着至关重要的作用。如下图所示,以图像分类为例,注意力地图展示了学习完成后的网络模型更关注于图像的哪个区域,是网络模型学习成果的体现。本文通过迫使学生模型模仿强大的教师模型的注意力特征图,来显著提高学生模型的性能。为此,本文提出了基于激活注意力地图的蒸馏法。

2.获取激活注意力地图

要利用激活注意力地图进行知识蒸馏的第一步就是得到当前网络的激活注意力地图。对于神经网络的某一层来说,激活注意力地图的获取方式如下图和公式所示。作者将把当前层中所有通道的激活进行合理的组合,最终形成一张可以表征当前层信息的激活注意力地图,该组合函数为F。

本文中,作者提出了三种F函数,也就是三种组合形式。如下三个组合函数的前提都是假设每个通道中的特征绝对值大,就认为当前位置被激活的程度也大。其中与Fsum()相比,Fpsum()(其中p > 1)更重视激活程度最高的神经元对应的空间位置。而Fp max(A)将只考虑其中一个位置来激活,Fp sum(A)将倾向于携带多个高激活神经元的空间位置。

通过实验比对本文最终采用的是Fpsum()函数(p=2),来对每个层中所有通道进行激活组合,并生成一个表征当前层的激活注意力图,具体操作如下代码所示。

    def avg_channel(self,f_s,f_t):
        f_s = f_s.pow(2).mean(0)
        f_t = f_t.pow(2).mean(0)

        return f_s,f_t
3.基于激活注意力地图的知识蒸馏

下图表达了位于网络不通深度的激活注意力地图是不同的。具体来说,我们可以看到靠近网络输入层的注意力比较分散;靠近中间层的注意力图主要集中在一些分辨性强的区域,比如说眼睛,鼻子,嘴巴;而高层的注意力图更加关注整体目标的激活。

基于上述的这种不同层隐含着不用性质的激活图,如下图所示,这种基于注意力激活的蒸馏方式被应用于网络的不同层中,使得学生模型能够分阶段的学习教师模型中不同层级间不同含义的激活注意力图。

得到每一层的激活注意力图之后,进行蒸馏损失的构建过程,本文与之前介绍过的蒸馏方法类似,都是计算两者之间的 距离用以约束,实现知识学习。

4.结果展示及思考

如下表所示,展示了激活注意力引导的知识蒸馏策略的有效性。值得注意的是,本文提到的这种Attention蒸馏方式适合用于教师模型和学生模型整体结构比较类似的情况下,反之这种策略将不会有效。我自己在应用的时候也验证了这一点。而且本文提到的ATLoss可以和我们之前讲到过的RKD,PKT,SP,VID等用来学习网络最终输出蒸馏的方式进行结合使用,初步来看将AT和PKT结合起来使用会产生较好的效果。上述提到的几种蒸馏方法的详解在下面给出了链接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章