论文阅读《通过注意力转移提升神经网络性能》
通过注意力转移提升神经网络性能
paying more attention to attention: improving the performance of convolutional networks via attention transfer
论文导读
动机
-
注意力机制在CV和NLP领域的成功应用:受人类观察物品的方式启发,将注意力这个概念引入神经网络中,在CV和NLP领域均有成功应用,提升了网络模型性能表现。
-
在知识蒸馏中, 教师网络学习到的注意力图可以作为一种知识, 蒸馏到学生网络中,让学习网络尝试生成与教师网络相近的注意力图, 从而提升学生网络的性能表现。
现有方法
- 模型压缩: 在已经训练好的模型上进行压缩, 使得网络携带更少的网络参数
- 人工模型设计: 从改变网络结构出发, 设计出更高效的网络计算方式, 从而使网络参数减少的同时,不损失网络的性能。
本文方法:
-
提出注意力迁移(attention transfer)方法,将教师网络学习得到的注意力图作为知识信息,蒸馏到学生网络中,让学生网络生成的注意力图与教师网络的注意力图越来越接近,以此提升学生网络的性能表现。
-
在注意力图的生成方式上,提出基于激活(activation-based)和基于梯度(gradient-based)的两种注意力图生成方式。
研究成果
将Wide-ResNet系列作为教师网络和学生网络, 在CIFAR10数据集上的实验表明, 注意力转移, 知识蒸馏的应用, 降低了分类错误率, 提升了学生网络的性能。
研究意义
- 将注意力机制引入知识蒸馏领域, 提升了学生网络的性能表现
- 探索了不同注意力图生成方式, 每种方式的侧重点均不同
- 启发了知识蒸馏的研究方向, 创新了知识蒸馏方式
计算机的注意力机制
计算机视觉中的注意力机制受人类注意力机制启发, 把这一机制引入神经网络中, 希望网络能够自动学习到图片中的需要注意的地方, 让网络学会忽略无关信息而关注重点信息。
即:
- 决定需要关注输入的哪部分。
- 分配有限的信息处理资源给重要的部分
注意力机制类型
空间域( Spatial Domain)
更多关注特征空间信息, 决定空间中哪些区域是重要的, 哪些是不重要的
代表结构:动态容量网络,包含两个子网络
- Coarse model(粗略子网): 对全图进行处理, 定位到感兴趣的关键区域
- Fine model(精准子网): 对所有感兴趣区域进行更精细的特征提取
通道域( Channel Domain)
更多关注特征通道之间的信息, 决定不同通道之间的重要程度
代表网络: SENet
- Squeeze(压缩), 把原本[HxWxC]的特征, 压缩为[1x1xC], 每个通道用一个数值表示
- Excitation(激励): 对上一步骤得到的[1x1xC]特征进行重要性预测, 学习不同通道的重要程度
- Scale(重定向): 根据学习到通道重要性权重, 与原始特征图相乘, 得到最终特征图输出
混合域( Mixed Domain)
将注意力集中同时集中在特征空间和特征通道上
代表网络:CBAM: Convolutional Block Attention Module
- 依次应用通道和空间注意模块, 来分别在通道和空间维度上学习关注什么、 在哪里关注。
- 通过学习要强调或抑制的信息也有助于网络内的信息流动。
CBAM通道注意力机制
- 首先经过两种池化方式聚合信息, 得到两个特征输出
- 然后通过一个MLP学习通道间的重要程度, 将两个通道注意力图相加, 与原特征图相乘, 得到最终特征输出
CBAM空间注意力机制
- 首先沿着通道方向进行最大池化和平均池化, 将两个输出特征进行通道叠加
- 对叠加后的特征图, 利用7x7卷积生成空间注意力图
基于激活的注意力转移(Activation-based Attention Transfer)
- 假定CNN中某层激活后特征图
其中:C: 特征图通道数,H,W:特征图高, 宽
基于激活的注意力转移, 以某层激活后的特征图A作为输入, 输出空间注意力图( Spatial Attention map)
三种实现方式
- 计算特征图中每个点的绝对值, 按照通道方向累加
- 计算特征图中每个点绝对值的P次方, 按照通道方向累加
- 对特征图中的每个点, 首先找到对应所有通道的绝对值最大值,然后计算该值的P次方
结论:
-
神经元的激活值不仅具有空间相关性, 而且这些相关性与准确率有很大关系, 性能更好, 更强大的网络往往具有更精准的注意力区域
-
网络中不同层有不同的注意力区域, 会生成不同的注意力图。 如中间层对于最具有判别性的区域激活程度最高, 最高层则会反应目标整体的特征区域
-
与 相比, 将更大的权重分配给与激活程度最高的神经元相对应的空间位置。 比如, 将更多的权重分配给最有判别性的部分
-
在相同空间位置的所有激活神经元中, 只选择其中最大的一个来赋予权重,而 更倾向于多个神经元都激活的区域
利用注意力转移进行知识蒸馏的实现流程
首先生成教师网络的注意力图, 这个注意力图可以利用上述三种方式任意一种得到。知识蒸馏的目标是让学生网络生成的注意力图与教师网络生成的注意力图尽可能相似, 从而提升学生网络准确率。
深度相同:在每个残差块
后做注意力转移
深度不同:在每个残差块组
后做注意力转移
损失函数设计
S:学生网络
T:教师网络
Ws:学生网络权重参数
j: 教师网络和学生网络相对应激活层编号
Qs:学生网络激活图的向量表示
Qt: 教师网络激活图的向量表示
L(Ws,x): 学生网络交叉熵损失
P: 正则化类型,本文取2
若要和Hilton知识蒸馏中的损失函数结合, 只需要在
的基础上, 增加soft蒸馏损失函数
基于梯度的注意力转移(gradient-based Attention transfer)
用输入的梯度表示注意力: 关注那些对输出影响大的区域。 例如, 只变化输入图像很小的一个像素块, 就能使网络输出发生巨大变化, 就可以认为, 这个像素块值得我们关注
-
对教师网络和学生网络的交叉熵损失函数分别求梯度(求导) , 作为梯度注意力转移的损失函数
-
我们的目标是, 最小化 和 之间的距离, 这样就将教师网络中对网络输出影响很大的区域转移到学生网络
-
若教师网络的参数和输入均给定, 则对学生网络的参数求导, 得到:
利用注意力转移进行知识蒸馏的实现流程
首先需要进行一次前向传播和一次反向传播, 得到
和
, 然后再进行一次传播,实现学生网络的参数更新
特别的, 提出了迫使梯度注意力图的水平翻转不变的损失函数。 把原图和水平翻转的图像都做传播。 然后加上得到的注意力图和输出的l2损失, 做第二次传播。
实验结果分析
在CIFAR-10数据集上, 利用方式2生成注意力图, 在教师网络和学生网络的选择上, 分别设置相同深度和不同深度两种情况, 注意力转移AT有效降低了识别错误率, 与知识蒸馏结合(AT+KD) , 进一步降低了错误率。 与全部激活都转移相比, 任何一种注意力转移方式都降低了错误率。
-
三种注意力图生成方式比较
选择WRN-16-2为教师网络, WRN-16-1为学生网络, 验证三种注意力图生成方式在CIFAR-10上识别错误率。 结果表明, 三者相对不进行注意力转移的方法, 都降低了错误率, 其中, 的错误率最低。
-
基于梯度的注意力转移实验
在CIFAR-10数据集上, 基于梯度生成注意力图, 有效降低了识别错误率
论文总结
关键点
- 知识蒸馏中知识的表现形式有哪些
- 注意力机制中, 判定某个区域重要与否的标准有哪些
- 如何根据自身任务特点, 设置注意力图生成方式
创新点
- 将注意力机制引入知识蒸馏中, 提升CNN模型性能
- 设计了两类注意力转移方法
- 提供了多类注意力图生成方式
启发点
- Furthermore, it has recently been demonstrated that attention can also play an important role in the context of applying artificial neural networks to a variety of tasks from fields such as computer vision and NLP.
- We show that, by properly defining attention for convolutional neural networks, we can actually use this type of information in order to significantly improve the performance of a student CNN network by forcing it to mimic the attention maps of a powerful teacher network
- To that end, we propose several novel methods of transferring attention, showing consistent improvement across a variety of datasets and convolutional neural network
核心Loss计算
以下代码总结自论文官方代码:
https://github.com/szagoruyko/attention-transfer
模型构建:mode是否训练 base:基本网络是教师网络还是学生网络
def f_s/t(input, params, mode, base=''):
x = F.conv2d(input, params[f'{base}conv0'], padding=1)
g0 = group(x, params, f'{base}group0', mode, 1)
g1 = group(g0, params, f'{base}group1', mode, 2)
g2 = group(g1, params, f'{base}group2', mode, 2)
o = F.relu(utils.batch_norm(g2, params, f'{base}bn', mode))
o = F.avg_pool2d(o, 8, 1, 0)
o = o.view(o.size(0), -1)
o = F.linear(o, params[base+'fc.weight'], params[base+'fc.bias'])
return o, (g0, g1, g2)
#构建一个残差组
def group(o, params, base, mode, stride):
for i in range(n):
o = block(o, params, f'{base}.block{i}', mode, stride if i == 0 else 1)
return o
注意力转移损失计算
#y_s,y_t:学生网络和教师网络的最终输出
#at_loss():得到学生网络的教师网络残差组的注意力转移损失
def f(inputs, params, mode):
y_s, g_s = f_s(inputs, params, mode, 'student.')#生成学生网络的最终输出和每一残差组的输出
with torch.no_grad():
y_t, g_t = f_t(inputs, params, False, 'teacher.')#生成教师网络的最终输出和每一残差组的输出
return y_s, y_t, [utils.at_loss(x, y) for x, y in zip(g_s, g_t)]
def at(x):
#计算每个像素点绝对值的平方,按照通道累加,再进行L2正则化
return F.normalize(x.pow(2).mean(1).view(x.size(0), -1))
def at_loss(x, y):
#计算注意力转移损失,注意,作者在这里并没有和原文一样,再用正则化
return (at(x) - at(y)).pow(2).mean()
输出结果知识蒸馏损失
def distillation(y, teacher_scores, labels, T, alpha):
p = F.log_softmax(y/T, dim=1)
q = F.softmax(teacher_scores/T, dim=1)
l_kl = F.kl_div(p, q, size_average=False) * (T**2) / y.shape[0]#KL散度损失
l_ce = F.cross_entropy(y, labels)#交叉熵损失
return l_kl * alpha + l_ce * (1. - alpha)
最终loss的计算
y_s, y_t, loss_groups = utils.data_parallel(f, inputs, params, sample[2], range(opt.ngpu))
loss_groups = [v.sum() for v in loss_groups]#每个残差组损失累加
[m.add(v.item()) for m, v in zip(meters_at, loss_groups)]#将每个残差组的注意力转移损失累加
return utils.distillation(y_s, y_t, targets, opt.temperature, opt.alpha) + opt.beta * sum(loss_groups), y_s
注意力可视化
def forward(self, x):
x = self.conv1(x)
x = self.bn1(x)
x = self.relu(x)
x = self.maxpool(x)
g0 = self.layer1(x)#第一个残差块
g1 = self.layer2(g0)#第二个残差块
g2 = self.layer3(g1)#第三个残差块
g3 = self.layer4(g2)#第四个残差块
return [g.pow(2).mean(1) for g in (g0, g1, g2, g3)]
for i, g in enumerate(gs):
plt.imshow(g[0], interpolation='bicubic')#插值运算
plt.title(f'g{i}')
plt.show()
论文简译
Abstract
注意力在人类视觉体验中起着至关重要的作用。此外,最近已经证明,在将人工神经网络应用于计算机视觉和NLP等领域的各种任务中,注意力也可以发挥重要作用。在这项工作中,我们展示了,通过正确定义卷积神经网络的注意力,我们实际上可以使用这种类型的信息,通过迫使学生CNN网络模仿强大的教师网络的注意力图,显著提高其性能。为此,我们提出了几种新的转移注意力的方法,在各种数据集和卷积神经网络架构中显示出一致的改进。我们实验的代码和模型可在以下网址获得:https://github.com/szagoruyko/attention-transfer
1. Introduction
作为人类,我们需要注意,以便能够充分感知我们的周围环境。因此,注意力是我们视觉体验的一个关键方面,与感知密切相关–我们需要保持注意力,以建立视觉表现,拥有细节和连贯性。
近年来,随着人工神经网络在计算机视觉和自然语言处理等领域的普及,人工注意力机制也开始发展。人工注意让系统“关注”对象,以更详细地检查它。它也成为理解神经网络背后机制的研究工具,类似于心理学中使用的注意力。
其中一个流行的假设是,存在非注意和注意感知过程。非注意力过程有助于观察一个场景,并收集高级信息,当这些信息与其他思维过程关联时,这些信息有助于我们控制注意力过程并导航到场景的某个部分。这意味着不同的观察者,具有不同的知识,不同的目标,因此不同的注意力策略,可以从字面上看相同的场景。这就把我们带到了本文的主要主题:人工视觉系统中的注意力有什么不同,我们能不能使用注意力信息来提高卷积神经网络的性能?更具体地说,教师网络是否可以通过向另一个学生网络提供关于它的外观的信息,即关于它将注意力集中在哪里的信息来提高另一个学生网络的性能?
要研究这些问题,首先需要正确地指定如何在给定的卷积神经网络中定义注意力。为此,在这里,我们将注意力视为一组空间映射,这些映射本质上试图编码网络最关注的输入空间区域,以做出其输出决策(例如,对图像进行分类),其中,这些映射可以在网络的各个层中定义,以便它们能够捕获低级、中级和高级表示信息。更具体地说,在本工作中,我们定义了两种类型的空间注意力图:基于激活的和基于梯度的。我们探索了这两个注意力图如何在各种数据集和体系结构上变化,并表明这些数据集和体系结构实际上包含了有价值的信息,这些信息可以用于显著提高卷积神经网络体系结构(各种类型并为各种不同任务训练)的性能。为此,我们提出了几种新的方法,将注意力从强大的教师网络转移到较小的学生网络,目的是提高后者的表现(图1)。
总之,这项工作的贡献如下:
- 我们建议将注意力作为将知识从一个网络转移到另一个网络的机制
- 我们建议使用基于激活和基于梯度的空间注意力图
- 我们实验表明,我们的方法在各种数据集和深度网络架构中提供了显著的改进,包括剩余网络和非剩余网络
- 我们证明了基于激活的注意力转移比完全激活转移提供了更好的改进,并且可以与知识蒸馏结合
本文的其余部分结构如下:我们首先在第2节中描述相关工作,在第3节中解释了我们基于激活和基于梯度的注意力转移的方法,然后在第4节中给出了这两种方法的实验结果。我们在第5节结束论文。
2. Related work
基于注意力的跟踪Larochelle & Hinton的早期工作(2010年),Denil等人。(2012年)的动机是人类注意力机制理论Rensink(2000年),并通过限制博尔兹曼机器完成。它最近被改编成具有递归神经网络的神经机器翻译,例如Bahdanau等人。(2014年)以及其他几项与NLP相关的任务。它也被用于计算机视觉相关的任务,如图像字幕徐等人。(2015),视觉问题回答杨等人。(2015),以及弱监督对象本地化Oquab等人。(2015年)和分类Mnih等人。(2014年),举几个典型的例子。在所有这些任务中,注意力被证明是有用的。
在深度卷积神经网络中可视化注意力图是一个开放的问题。最简单的基于梯度的方法是计算网络输出w.r.t.输入的雅可比(这导致不一定是类鉴别的注意力可视化),例如Simonyan等人。(2014年)。Zeiler & Fergus(2014年)提出了另一种方法,包括附加一个名为“deconnet”的网络,该网络与原始网络共享权重,并用于将某些特征投影到图像平面上。还提出了许多方法来改善基于梯度的注意力,例如引导反向传播Springenberg等人。(2015),在计算梯度w.r.t.上一层输出期间添加ReLU层的更改。用引导反向传播获得的注意力图也是非类鉴别的。在现有的可视化注意力的方法中,我们还应该提到类激活映射周等人。(2016),它基于删除顶部平均池层并将线性分类层转换为卷积层,为每个类生成注意力图。Selvaraju等人的一种结合引导反向传播和CAM的方法是格拉德CAM。(2016),将图像级细节添加到类区分注意力地图中。
Hinton等人开创了神经网络知识蒸馏的先河。(2015年);Bucila等人。(2006年),这是一种转移学习方法,旨在依靠从强大的教师网络借用的知识来改善学生网络的培训。虽然在某些特殊情况下,浅层网络已被证明能够在不损失准确性的情况下近似更深层网络(2014年),但后来与知识蒸馏有关的工作主要基于这样的假设,即更深层网络总是学习更好的表示。例如,菲特网罗梅罗等人。(2014年)试图使用具有更多参数的浅层网络学习薄深度网络。斯里瓦斯塔瓦等人高速公路的引入。(2015年)和后来的残余网络He等人。(2015年)允许以更高的精度训练非常深入的体系结构,这些网络的通用性在大量数据集上得到了实验证明。虽然剩余网络的主要动机是增加深度,但Zagoruyko & Komodakis(2016年)后来表明,在一定深度之后,改进主要来自网络容量的增加,即参数的数量(例如,一个只有16层的更宽的深残差网络被证明,它可以学习到与非常薄的1000层一样好或更好的表示,前提是它们使用的参数数量相当。
由于上述事实,以及由于薄深度网络的并行性不如宽深度网络,我们认为需要重新审视知识转移,并采取与健身网方法相反的方法,我们试图学习不那么深入的学生网络。我们用于传输的注意力图与上面提到的基于梯度和基于激活的地图相似,它们在FitNets中起着类似于“提示”的作用,尽管我们没有引入新的权重。
3. Attention transfer
在本节中,我们解释了我们用于定义卷积神经网络的空间注意力图的两种方法,以及在每种情况下我们如何将注意力信息从教师传输到学生网络。
3.1 Activation-based attention transfer
让我们考虑CNN层及其相应的激活张量A△RC×H×W,它由空间维度为H×W的C个特征平面组成。基于激活的映射函数F(w.r.t.该层)将上述3D张量A作为输入,并输出空间注意力映射,即,在空间维度上定义的扁平2D张量,或
为了定义这样的空间注意力映射函数,我们在本节中做出的隐式假设是,隐藏神经元激活的绝对值(当网络在给定输入上评估时产生)可以用作该神经元w.r.t重要性的指示。特定输入。因此,通过考虑张量A元素的绝对值,我们可以通过计算通道维度上这些值的统计信息来构建空间注意力图(见图3)。更具体地说,在本工作中,我们将考虑以下基于激活的空间注意力图:
其中,Ai = A(i, :, :)(使用Matlab符号),max、幂和绝对值操作是元素的(例如,|Ai|p等效于abs(Ai)。Matlab符号中的p)。
我们在几个数据集上可视化了各种网络的激活,包括ImageNet分类和定位、COCO对象检测、人脸识别和细粒度识别。我们主要关注的是没有顶级密集线性层的现代体系结构,如Network-InNetwork、ResNet和Inception,它们简化了卷积结构。我们还检查了相同体系结构、宽度和深度的网络,但使用不同的框架进行训练,性能差异显著。我们发现,上述隐藏激活的统计信息不仅与图像水平上的预测对象具有空间相关性,而且这些相关性在精度较高的网络中也往往更高,而较强的网络在弱网络中具有注意力峰值(例如,参见图4)。此外,注意力图集中在网络中不同层的不同部分。在第一层,低层梯度点的神经元激活水平较高,在中间,对于眼睛或轮子等最具鉴别力的区域,神经元激活水平较高,在顶层,神经元激活水平反映了完整的物体。例如,为人脸识别训练的网络的中层注意力图Parkhi等人。(2015年)将在眼睛、鼻子和嘴唇周围有更高的激活,顶级激活将对应于全脸(图2)。
关于上面定义的不同注意力映射函数,这些函数可能具有略有不同的属性。例如:
- 与Fsum(A)相比,空间映射Fpsum(A)(其中p>1)对与具有最高激活的神经元相对应的空间位置赋予了更多的权重,即,把更多的权重放在最具鉴别力的部分上(p越大,就越关注那些激活度最高的部分)。
- 此外,在对应于相同空间位置的所有神经元激活中,Fpmax(A)将只考虑其中一个为该空间位置分配权重(与Fpsum(A)相反,Fpsum(A)将有利于携带多个具有高激活的神经元的空间位置)。
为了进一步说明这些功能的差异,我们可视化了3个网络的注意力图,这些网络在分类性能上有足够的差异:网络中(62%的top-1值精度),ResNet-34(73%的top-1值精度)和ResNet-101(77.3%的top-1值精度)。在每个网络中,我们提取了最后一个预降采样激活映射,在图4中,左边是中层,右边是顶部前平均池激活。顶层地图是模糊的,因为它们的原始空间分辨率是7×7。很明显,大多数鉴别区域都有较高的激活水平,例如狼的脸,形状细节随着参数p(用作指数)的增加而消失。
在注意力转移中,考虑到教师网络的空间注意力图(使用上述任何注意力映射函数计算),目标是训练一个学生网络,该网络不仅会做出正确的预测,而且会拥有与教师相似的注意力图。一般来说,可以将传输损失放置在跨几个层计算的注意力图上。例如,在ResNet体系结构的情况下,根据教师和学生的深度,可以考虑以下两种情况:
- 相同深度:在每个残留块之后可能有注意力转移层
- 不同深度:对每组剩余块的输出激活进行注意力转移
图4:各种ImageNet网络的激活注意力图:网络中网络(62%top-1 val精度)、ResNet-34(73%top-1 val精度)、ResNet-101(77.3%top-1 val精度)。左侧部分:中层激活,右侧部分:顶级前softmax激活
图5:当两个网络都是残余的,教师更深时,师生注意力转移示意图。
类似的情况也适用于其他体系结构(如NIN,在这种情况下,组是指3×3、1×1、1×1卷积的块)。在图5中,我们提供了剩余网络架构的不同深度情况的示意图。
在不丧失一般性的情况下,我们假设转移损失放置在相同空间分辨率的学生和教师注意力图之间,但是,如果需要,注意力图可以插值以匹配它们的形状。设S、T和WS、WT相应地表示学生、教师及其权重,设L(W, x)表示标准交叉熵损失。让我也表示我们要转移注意力图的所有师生激活层对的索引。然后,我们可以定义以下总损失:
其中QjS=vec(F(AjS))和QjT=vec(F(AjT))分别是矢量化形式的第j对学生和教师注意力图,并更喜欢范数类型(在我们使用的实验中)。可以看出,在注意力转移过程中,我们使用了l2-归一化的注意力图,即,我们用Q△Q△2替换每个矢量化的注意力图Q(也可以使用l1归一化)。值得强调的是,注意力图的正常化对于学生培训的成功至关重要。
注意力转移也可以与知识蒸馏Hinton等人结合起来。(2015年),在这种情况下,只需将额外的术语(对应于教师和学生标签上软化分布之间的交叉熵)包括在上述损失中。当结合起来时,注意力转移增加的计算成本很少,因为教师的注意力图可以很容易地在正向传播期间计算,这是蒸馏所需的。
3.2 Gradient-based attention transfer
在这种情况下,我们将注意力定义为梯度w.r.t.输入,它可以被视为输入灵敏度映射Simonyan等人。(2014),即,输入空间位置处的注意力编码输出预测的灵敏度w.r.t.在该输入位置处的变化(例如,如果像素处的微小变化会对网络输出产生很大影响,那么假设网络正在“关注”该像素是合乎逻辑的。让我们将教师和学生的损失w.r.t输入的梯度定义为:
然后,如果我们希望学生梯度注意力与教师注意力相似,我们可以最小化它们之间的距离(这里我们使用l2距离,但也可以使用其他距离):
当给定WT和x时,要获得所需的导数w.r.t.WS:
因此,要进行更新,我们首先需要进行正向和反向传播以getJSandJT,计算第二个错误β2||JS-JT||2并第二次传播它。在这种情况下,第二传播类似于正向传播,并涉及二阶混合偏导数计算△2△WS△x。上述计算类似于Druck&LeCun(1992)开发的双反向传播技术(其中2梯度w.r.t.输入的范数用作正则化器。此外,它可以在具有自动微分支持的框架中有效地实现,即使对于具有复杂图形的现代体系结构也是如此。第二反向传播的成本与第一反向传播大致相同,不包括前向传播。
我们还建议在梯度注意力图上强制水平翻转不变性。为此,我们传播水平翻转的图像以及原始图像,反向传播和翻转梯度注意力映射回来。然后,我们在获得的注意力和输出上添加l2损失,并进行第二次反向传播:
其中,翻转(x)表示翻转运算符。这与Cohen & Welling(2016年)的Group Equivariant CNN方法相似,但这并不是一个硬约束。我们实验发现,这对训练有正则化的影响。
我们应该注意到,在这项工作中,我们只考虑输入层的梯度,但通常,我们可能会有建议的注意力转移和对称约束,w.r.t.网络的高层。
4. Experimental section
在下一节中,我们将探讨各种图像分类数据集上的注意力转移。我们将该部分分为两部分,第一部分包括CIFAR上基于激活的注意力转移和基于梯度的注意力转移实验,第二部分包括在较大数据集上基于激活的注意力转移实验。对于基于激活的注意力转移,我们使用了Network-InNetwork Lin等人。(2013年)和基于ResNet的体系结构(包括最近推出的广残差网络(WRN)Zagoruyko & Komodakis(2016年)),由于与AlexNet或VGG相比,它们的性能最高,并在参数数量方面设置了强大的基线,并且已经在小型和大型数据集的各种论文中进行了探索。在场景、CUB和ImageNet上,我们实验了ResNet-18和ResNet-34。至于基于梯度的注意力,由于需要复杂的自动区分,我们将自己限制在没有批量标准化和CIFAR数据集的Network-In-Network上。
4.1 CIFAR Experiments
我们从CIFAR数据集开始,它有小的32 × 32图像,在下采样后,顶部激活的分辨率甚至更小,因此没有太多的空间用于注意力转移。有趣的是,即使在这种对抗性的环境下,我们发现注意力转移似乎能带来合理的好处,在所有情况下都能提供一致的改进。我们使用水平翻转和随机作物数据增强,所有网络都有批量归一化。我们发现ZCA白化对验证精度有负面影响,并忽略它,有利于更简单的均值归一化。我们将ResNet传输的知识蒸馏(KD)温度提高到4,并使用α = 0.9(有关这些参数的解释,请参见Hinton等人(2015年))。
4.1.1 Activation-based attention transfer
CIFAR-10上各种网络的注意力转移结果(使用F2sumat注意力映射)可在表1中找到。我们实验了具有相同深度(WRN-16-2/WRN-16-1)以及不同深度(WRN-40-1/WRN-16-1、WRN-40-2/WRN-16-2)的教师/学生。在所有组合中,注意力转移(AT)都显示出显著的改善,当它与知识蒸馏(AT+KD)结合时,这种改善也会更高。
为了验证在WRN传输中,每个组至少有一个基于激活的注意力传输损失是否重要,我们分别在组1、组2和组3中训练了三个网络,每个网络只有一个传输损失,并与训练了所有三个损失的网络进行了比较。相应的结果为8.11、7.96、7.97(单独损失)和7.93(使用WRN16-2/WRN-16-1作为教师/学生对)。每一次损失都提供了一定程度的注意力转移。
我们还探索了哪些注意力映射功能往往最有效地使用WRN-16-1和WRN-16-2分别作为学生和教师网络(表2)。有趣的是,基于和的函数的工作原理非常相似,而且比基于max的函数要好。从现在开始,为了简单起见,我们将使用平方注意力映射函数F2sum的和。至于等式中的参数β。2、它通常变化约0.1,因为我们将它设置为103,按注意力图中的元素数量和每层的批处理大小划分。如果将AT和KD结合起来,我们在训练过程中衰减它,以简化学习更难的例子。
4.1.2 Activation-based AT vs Transferring full activation
为了检查从完全激活张量传输信息是否比从注意力映射传输信息更有益,我们尝试了在完全激活上直接使用l2损失的FitNets风格的提示,使用1×1卷积层来匹配张量形状,并发现与基线学生相比的改善最小(见表1中的F-ActT栏)。对于相同宽度不同深度的网络,我们试图直接回归到激活,而没有1×1卷积。我们还在传输损失之前使用l2归一化,在等式中使用衰减β。2在训练期间,因为这些都能提供更好的表现。我们发现AT以及全激活传输极大地加快了收敛速度,但AT比全激活传输提供了更好的最终精度提高(见图7(b),附录)。有趣的是,注意力图携带的信息对传输比完全激活更重要。
4.1.3 Gradient-based attention transfer
为了简单起见,我们在这些实验中使用了瘦网络中网络模型,并且不应用随机裁剪数据增强与批处理标准化,只应用水平翻转增强。我们也只使用确定性算法和固定种子采样,因此报告的数字用于单次运行实验。我们发现,在这种情况下,网络已经很难适应训练数据,甚至在基线实验中也会关闭权重衰减。未来,我们计划探索使用批量归一化的师生对的基于梯度的注意力,因为到目前为止还不清楚批量归一化在基于梯度的注意力转移过程中所需的第二个反向传播步骤中应该如何表现(例如,它是否有助于批处理标准化参数,或者是需要固定参数的单独正向传播)。
我们探索了以下方法:
- 最小化梯度w.r.t.输入的l2范数,即双反向传播方法Druck&LeCun(1992年);
- 梯度注意力图上的对称范数(见等式6);
- 基于学生-教师梯度的注意力转移;
- 基于学生-教师激活的注意力转移。
各种方法的结果见表3。有趣的是,仅仅最小化梯度的l2范数就已经很好地工作了。此外,对称范数是表现最好的注意力范数之一,我们计划在未来在其他数据集上进行研究。我们还观察到,与基于激活的注意力转移类似,使用基于梯度的注意力转移会提高性能。我们还在相同的训练条件下训练了一个基于激活的AT的网络,这导致了所有方法中最好的性能。我们应该注意到,没有批处理规范化的学生NIN的体系结构与教师网络略有不同,它在池化层之前没有ReLU激活,这导致在没有批处理规范化的情况下性能更好,而在没有批处理规范化的情况下性能更糟。因此,为了使用基于激活的AT实现最佳性能,我们必须训练一个新的教师,在池化层之前使用批量归一化和不使用ReLU激活,并在卷积层的输出上有AT损失。
4.2 Large input image networks
在本节中,我们在具有224 × 224输入图像大小的ImageNet网络上实验隐藏激活注意力转移。据推测,注意力在这种网络中更重要,因为注意力图的空间分辨率更高。
4.2.1 Transfer learning
为了了解注意力转移在微调中的工作原理,我们选择了两个数据集:加州理工学院-UCSD鸟-200-2011细粒度分类(CUB),由华等人。(2011年)和麻省理工学院室内场景分类(场景),由Quattoni & Torralba(2009年),都包含大约5K图像训练图像。Wetok在ImageNet上预训练ResNet-18和ResNet-34,并在两个数据集上微调。在CUBwe裁剪边界框上,在一维中重新缩放为256,然后进行随机裁剪。固定批量归一化层进行微调,并冻结第一组残留块。然后,我们对ResNet-34网络进行了微调,并将它们用作在ImageNet上预训练的ResNet-18的教师,最后2组的F2和注意力损失。在这两种情况下,注意力转移都提供了显著的改进,缩小了ResNet-18和ResNet-34在准确性上的差距。在场景AT和KD一样工作,在CUB AT上工作得更好,我们推测这是因为中间注意对细粒度识别的重要性。此外,在微调后,学生的注意力图看起来确实与教师的注意力图更相似(图6,附录)。
4.2.2 ImageNet
为了在ImageNet上展示基于激活的注意力转移,我们以ResNet-18作为学生,ResNet-34作为教师,并试图提高ResNet-18的准确性。我们在最后2组残差块中只添加了两个损失,并使用了平方和注意F2sum。我们也没有时间调整任何超参数,并阻止它们微调实验。然而,ResNet-18与注意力转移实现了1.1%的前1和0.8%的前5验证准确性(表5和图7(a),附录),我们计划更新论文,并在所有4组剩余块上损失。
我们未能在ImageNet上使用KD取得积极的结果。使用ResNet-18-ResNet-34学生-教师对,它实际上会损害与CIFAR上相同的超参数的收敛性。据报道,如果教师和学生有不同的体系结构/深度(我们在CIFAR上观察到的是相同的),KD很难工作,因此我们尝试使用相同的体系结构和深度进行注意力转移。在CIFAR上,AT和KD在这种情况下都能很好地工作,并提高了收敛性和最终精度,尽管KD收敛速度要慢得多(由于缺乏计算资源,我们直到最后才训练)。在文献中,我们也找不到FitNets、KD或类似方法在ImageNet上的应用。鉴于此,我们可以假设所提出的基于激活的AT是第一个成功应用于ImageNet的知识转移方法。
5 Conclusions
我们提出了几种将注意力从一个网络转移到另一个网络的方法,并在几个图像识别数据集上进行了实验结果。在空间信息更重要的情况下,例如物体检测或弱监督定位,注意力转移是如何工作的,这将是很有趣的,这是我们计划在未来探索的。
总体而言,我们认为我们有趣的发现将有助于进一步推进知识蒸馏,并理解卷积神经网络。
- 点赞
- 收藏
- 关注作者
评论(0)