Knowledge Distillation(4)——Paying more attention to attention

PAYING MORE ATTENTION TO ATTENTION: IMPROVING THE PERFORMANCE OF CONVOLUTIONAL NEURAL NETWORKS VIA ATTENTION TRANSFER 论文阅读


IMPROVING THE PERFORMANCE OF CONVOLUTIONAL
NEURAL NETWORKS VIA ATTENTION TRANSFER 论文阅读

概述

不是soft target,不是隐含层hint,也不是特征变换的流程FSP(可参见专栏前三篇博客)。
本文将knowledge定义为anttention map,student模仿teacher的attention map:
在这里插入图片描述

A gift from knowledge distillation是同一类的文章,只不过它是迁移的学习的过程,本文迁移的是注意力机制,都是迁移方式上的改进。
本文和FitNets也是一类的,FitNets迁移的是一个中间隐含层的输出,这个迁移的是attention map,且没有引入新的参数。related work部分还专门介绍了:
在这里插入图片描述
attention map不需要使用conv regressor进行尺度匹配,因为可以直接对attention map进行插值resize

ATTENTION TRANSFER

文章进行两种attention transfer方式,分别是activation-based和gradient-based,后者作者发现不太work,所以我下面主要介绍一下前者

Activation-based attention transfer

要把一个(C, H, W)映射成一个(H, W)的attention map,作者尝试定义了一些函数 F F F

  1. 通道绝对值求和
  2. 绝对值指数求和
  3. 指数最大值
    在这里插入图片描述
    为了知道哪个函数更合适,作者使用几个常见网络可视化其attention map结果:
    在这里插入图片描述
    很显然,一些重要区域的激活值都比较高(所以实验使用指数p=2,帮助提高这些区域的权重)
    在这里插入图片描述
    作者以ResNet为例,对分辨率相同的feature计算attention map,又构造了一个AT loss
    在这里插入图片描述
    Q只不过是把attention map展成向量,然后还进行了归一化操作,作者说这个对于student学习非常重要。
    在这里插入图片描述
    不过第一项交叉损失是干啥的?那个是保证精度,进行hard label学习的Loss??但论文图五没体现啊
    下面这个也说了如果引入KD可以额外加一个loss,那上面第一项应该是hard label loss了。
    如果是KD+AT那就有三项loss,hard label,soft target、attention transfer:
    在这里插入图片描述
    这样的方式训练完是作为pretrain还是直接end-to-end就行了呢???如果直接训练就行了,这要比之前student学习teacher只是作为pretrain参数要优雅不少。奇怪的是作者并没有论述这一点,之前的模型为什么这样联合训练效果不理想,attention transfer为什么就能呢?
    很有可能也是作为pretrain,但是作者没说清楚……

希望我能在其他论文找到这一答案吧……或者去看看代码吧

实验

可以看AT和KD那一栏,在不同模型上knowledge distillation感觉和attention transfer各有千秋,整体KD好一点吧。而且在KD基础上加入AT还能有提升!
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
知识蒸馏(Knowledge Distillation)是一种将一个较大的模型的知识转移到一个较小的模型的技术。这种技术通常用于减小模型的大小和推理成本,同时保持模型在任务上的性能。 在Python中,你可以使用以下步骤来实现知识蒸馏: 1. 准备教师模型和学生模型:首先,你需要准备一个较大的教师模型和一个较小的学生模型。教师模型通常是一个预训练的大型模型,例如BERT或其他深度学习模型。学生模型是一个较小的模型,可以是一个浅层的神经网络或者是一个窄的版本的教师模型。 2. 训练教师模型:使用标注数据或其他训练数据集来训练教师模型。这个步骤可以使用常规的深度学习训练方法,例如反向传播和随机梯度下降。 3. 生成教师模型的软标签:使用教师模型对训练数据进行推理,并生成教师模型的软标签。软标签是对每个样本的预测概率分布,而不是传统的单一类别标签。 4. 训练学生模型:使用软标签作为学生模型的目标,使用训练数据集来训练学生模型。学生模型的结构和教师模型可以不同,但通常会尽量保持相似。 5. 进行知识蒸馏:在训练学生模型时,除了使用软标签作为目标,还可以使用教师模型的中间层表示或其他知识来辅助学生模型的训练。这可以通过添加额外的损失函数或使用特定的蒸馏算法来实现。 以上是实现知识蒸馏的一般步骤,具体实现细节可能因应用场景和模型而有所不同。你可以使用深度学习框架(如TensorFlow、PyTorch等)来实现这些步骤,并根据需要进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值