文章目录
- 摘要
- 文献阅读
- 1.题目
- 2.摘要
- 3.问题和方案
- 4.介绍
- 5.Attention Transfer
- 5.1 Activation-based Attention Transfer
- 5.2 Gradient-based Attention Transfer
- 6.实验
- 7.结论
- 深度学习
- Attention机制的本质
- Encoder to Decoder
- 抛开encoder-decoder
- Attention函数工作机制
- Attention机制的优缺点
- 总结
摘要
This week, I read a paper on attention mechanism, the main content of the paper can be summarized as two points. Firstly, correctly define CNN’s attention, and then use this type of information to force the student network to imitate the powerful teacher network, thereby greatly improving the performance of the student network. Secondly, by improving various datasets and CNN network architecture, several novel methods to transfer attention are proposed. Finally, I simply learn the attention mechanism and try to understand the essence of the attention mechanism.
本周,我阅读了一篇关于注意力机制相关的论文,论文的主要内容可以概括为两点。一是正确定义CNN的注意力,然后使用这种类型信息去迫使学生网络模仿强大的教师网络,从而极大改进学生网络性能。二是通过改进各种数据集和CNN网络架构,提出几种新颖的转移注意力的方法。最后,我简单地学习了注意力机制,并试图去理解注意力机制的本质。
文献阅读
1.题目
文献链接:PAYING MORE ATTENTION TO ATTENTION: IMPROVING THE PERFORMANCE OF CONVOLUTIONAL NEURAL NETWORKS VIA ATTENTION TRANSFER
2.摘要
Attention plays a critical role in human visual experience. 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. In this work 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 architectures. Code and models for our experiments are available at https://github.com/szagoruyko/attention-transfer.
3.问题和方案
解决问题:为了提升学生网络的性能
解决方案:提出了transferring attention, 目标是训练出的学生模型不仅预测精度更高,而且还需要让他们的特征图与教师网络的特征图相似。
4.介绍
有关注意力的一个假设:
1)非注意力视觉过程可以用于感知整体场景,聚合高层信息,可以用于控制注意过程,引导到场景的某个部分。
2)不同的视觉系统的观察角度可能不相同,如何利用注意力信息来提升性能是一个值得研究的问题。
3)更具体来说,如何使用教师网络来提升其他学生网络的性能。
注意力选择方面:AT选择使用空间注意力图,空间注意力图具有更高的可解释性。同时网络不同阶段的特征图拥有者捕获底层、中层、高层的表征信息。具体来说可以划分为:activation-based 和 gradient-based
论文工作贡献:
1)论文提出将attention作为将知识从一个网络转移到另一个网络的特殊机制
2)论文提出同时使用activation-based和gradient-based的空间注意力图
3)论文中的方法在多个数据集和深度网络结构(残差或非残差)得到了显著的性能提升。
4)论文表明了activation-based注意力转移比full-activationtransfer更好,并且能与知识蒸馏(KD)结合。
5.Attention Transfer
5.1 Activation-based Attention Transfer
如下图所示,通过映射函数F将3D向量A∈R映射成扁平的2D向量(即空间注意力图),其中C为通道数。
考虑基于激活的空间注意力图:
为了定义一个空间注意力映射函数,论文做出的隐含假设是隐藏神经元激活的绝对值可以用作关于神经元的具体输入。因此,通过考虑张量A元素的绝对值,我们可以通过计算这些值在通道维度上的统计数据来构建空间注意力图。
注意力图关注于网络中不同层的不同部分。在第一层中,低级梯度点的神经元激活水平较高,在中间,对于最具辨别力的区域较高,而在顶层,它反映了完整对象的图层。
在注意力转移中,给定教师网络的空间注意力图,目标是训练一个学生网络,该网络不仅可以做出正确的预测,而且具有类似于老师的注意力图。例如,在ResNet架构的情况下,可以考虑以下教师和学生的两种情况:
相同深度:可能在每个残差块之后都有注意力转移层
不同深度:对每组残差块的输出激活进行注意力转移
残差网络架构的不同深度情况的示意图:
在不失一般性的情况下,论文假设转移损失放置在具有相同空间分辨率的学生和教师注意力图之间,但如果需要,可以对注意力图进行插值以匹配它们的形状。令S, T和Ws, WT 分别表示学生、教师及其权重,设L(W, x)表示标准交叉熵损失。然后可以定义以下总损失:
总结:这种方法能够对网络性能带来一定的提升
5.2 Gradient-based Attention Transfer
论文将教师和学生输入的损失梯度定义为:
论文希望学生梯度注意力类似于教师注意力,因此可以最小化它们之间的距离:
由于给出了WT和x,得到所需WS的偏导:
论文建议在梯度注意力图上实施水平翻转不变性。为此,论文传播水平翻转的图像以及原始图像、反向投影和翻转梯度注意力图。然后,在获得的注意力和输出上添加l2损失,并进行第二次反向传播:
其中:flip(x)表示翻转操作
总结:这种方法效果不大
6.实验
将Wide-ResNet系列作为教师网络和学生网络,在CIFAR10数据集上的实验表明:注意力转移和知识蒸馏的应用,降低了分类错误率,提升了学生网络的性能。
三种注意力图生成方式比较:
选择WRN-16-2为教师网络,WRN-16-1为学生网络,验证三种注意力图生成方式在CIFAR-10上识别错误率。结果表明,三者相对不进行注意力转移的方法,都降低了错误率, 其中, F^2_{sum}的错误率最低。
基于梯度的注意力转移实验:
在CIFAR-10数据集上,基于梯度生成注意力图,有效降低了识别错误率。
7.结论
关键点:
1)知识蒸馏中知识的表现形式有哪些
2)注意力机制中,判定某个区域重要与否的标准有哪些
3)如何根据自身任务特点,设置注意力图生成方式
创新点:
1)将注意力机制引入知识蒸馏中,提升CNN模型性能
2)设计了两类注意力转移方法
3)提供了多类注意力图生成方式
深度学习
Attention机制的本质
attention机制的本质是从人类的视觉注意力机制中学习其中的精髓。当人类视觉在感知事物时,一般不会对一个事物从头到尾的全部进行观察,而往往是根据每个人的需求取注意事物上特殊的部分。而且当我们发现一个事物某一部分经常出现自己想观察的信息时,我们会学习在将来再出现类似场景时,把注意力放到该部分上。
Attention机制:其实就是注意力分配一系列权重参数
Encoder to Decoder
以机器翻译为例子,当给出一句“我爱你” (sorce)中文,要把它翻译成英文’I love you’ (target)时,利用现在深度学习最为流行的model–encoder to decoder,‘我爱你’被编码(这里指语义编码)成C,然后在经过非线性函数,通过decoder得到目标Target中的每一个单词。
上述的过程是一个分心模型,这是因为sorce中每一个元素对语义编码C的作用是相同的,也就是每一个元素的重要程度都是一样的。可实际上,“我”这个元素对target中的’I’的结果是影响最大的,其他元素的影响是非常小的。但在上述模型中,这个重要程度没有被体现出来,所以这是一个分心的模型。而与其对应的注意力模型就是要从序列中学习到每一个元素的重要程度,然后按重要程度将元素合并。这就表明了序列元素在编码的时,所对应的语义编码C是不一样的。
attention机制运行的图如下:
抛开encoder-decoder
这里要提出一个函数叫做attention函数,它是用来得到attention value。
比较主流的attention框架如下:
上图可以描述attention value的本质:它是一个查询(query)到一系列键值(key-value)对的映射。
attention函数的工作实质如下图:
Attention函数工作机制
attention函数通过三步得到attention value:
1)Q与K进行相似度计算得到权值
2)对上部权值归一化
3)用归一化的权值与V加权求和
在自然语言任务中,往往K和V是相同的。这时计算出的attention value是一个向量,此向量包含了元素的上下文关系,即包含全局联系和局部联系。全局联系是因为在求相似度的时候,序列中元素与其他所有元素的相似度计算,然后加权得到了编码向量。局部联系是计算出的attention value是属于当前输入的,这也是attention的强大优势之一,它可以灵活地捕捉长期和local依赖,而且是一步到位的。
Attention机制的优缺点
优点:
1)一步到位的全局联系捕捉
2)并行计算减少模型训练时间
3)模型复杂度小,参数少
缺点:
attention机制不能捕捉语序顺序,即元素的顺序,这在NLP中是比较糟糕的,因为自然语言的语序是包含了太多的信息。
总结
Attention机制是一种能让模型对重要信息重点关注并充分学习吸收的技术,通俗的讲,就是把注意力集中到重要的点上,而忽略其他不重要的因素,其中重要程度的判断取决于应用场景。根据应用场景的不同,Attention分为空间注意力和时间注意力,前者用于图像处理,后者用于自然语言处理。下周,我会继续深入地学习Attention机制。