Filter Grafting for Deep Neural Networks论文笔记

深度神经网络的滤波器(卷积核)嫁接

在这里插入图片描述
原文地址

① 嫁接的想法:

本文提出了一种全新的学习范式:滤波器嫁接,用于提高神经网络的特征表达能力。构建滤波器嫁接技术的目的是通常在训练完的网络中存在一些无效的滤波器,很多网络模型剪枝的文献中就会把这些无效的滤波器进行剪枝。 但是这些看似无效的滤波器不一定是真的无效的,比如在集成学习中,当单个弱分类器效果差时,它们的组合反而会得到更强的性能。这说明无效的滤波器是可以被激活的。 所以本文考虑将其他滤波器的权重按照一定的比重叠加在当前滤波器上,重新激活这些无效滤波器,在不增加模型推理时间的前提下,有效提升网络性能。

② 嫁接与裁剪,蒸馏的区别

滤波器剪枝旨在去除无效的滤波器,以加速网络的训练。而滤波器嫁接打算激活这些无效的滤波器。 值得注意的是,尽管滤波器嫁接的动机与剪枝相反,但嫁接仍然需要选择一个合适的标准来决定哪些滤波器是不重要的。嫁接可能涉及并行地训练多个网络。因此,这个过程类似于蒸馏学习。嫁接和蒸馏的区别在于,蒸馏是一个两阶段的过程。首先,我们需要训练一个大模型(老师),然后使用训练好的大模型来教一个小模型(学生)。而嫁接是一个单阶段的过程,在训练过程中进行滤波器嫁接。 此外如下代码所示,我们在每个epoch中嫁接权值,而不是在每个迭代中移植权值,从而大大降低了网络之间的通信成本。下图展示了裁剪和嫁接的主要区别
在这里插入图片描述

③ 滤波器嫁接的方式:

文章中作者将原始网络中无效的滤波器称为砧木,将有意义的滤波器称为接穗,这与嫁接的植物学解释是一致的。滤波器嫁接的目的是将信息(权重)从接穗转移到砧木,因此选择有用的信息是嫁接的关键。在本文中,作者提出了三种获取接穗的方法

  • 1.噪声作为接穗: 利用均值为0,方差为delta的高斯噪声作为接穗,使得L1范数很小的无效滤波器变得更有效。当然随着迭代次数的增加,需要适当降低高斯噪声方差的值,因为过大的方差会导致网络难以收敛
    在这里插入图片描述

高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。常见的高斯噪声包括起伏噪声、宇宙噪声、热噪声和散粒噪声等等。

  • 2.内部滤波器作为接穗: 利用当前网络中,其余熵值比较大,对结果输出有较大影响的滤波器作为接穗,此类嫁接发生在单个网络中。具体来说,对于每一个参数层,计算滤波器的熵值并设置一个阈值γ。滤波器的熵值小于γ,则认为这些滤波器是无效的。然后将第i个熵值最大滤波器的权值移入第i个熵值最小滤波器。由于这种嫁接技术发生在网络内部,因此无法增加额外的信息。具体过程如下图所示:
    在这里插入图片描述
  • 3.外部过滤器作为接穗: 从其他网络中选择外部滤波器作为接穗。具体来说,可以并行地训练两个网络,分别记作M1和M2。在每个epoch的训练中,我们将M1的有效滤波器权值嫁接到M2的无效滤波器中。该过程中的嫁接发生在层级,而不是滤波器级,这意味着我们将M1中某一层中所有滤波器权重嫁接到同一层的M2中

在这里插入图片描述
相当于M1与M2对应的两层进行相互的嫁接,在进行嫁接时,具体的操作如下公式所示,通过对接穗和砧木的权重进行加权后,得到最终的嫁接参数。其中阿尔法值要大于0.5,因为接穗的权重更有效
在这里插入图片描述
确定权重系数有两个要点

  1. 当M2的熵值和M1的熵值相同时,阿尔法的值为0.5;当M2的熵值大于M1的熵值时,阿尔法的值大于0.5
  2. 即使M2的熵值和M1的熵值相差非常大的情况下,阿尔法的值也不能是0或无穷

基于上述两个要点 ,文章利用如下公式进行阿尔法参数的约束,从示意图中可以看出,该公式对应的阿尔法值满足上述提出的两个要点。最终嫁接的代码如下所示

在这里插入图片描述
④ 滤波器的判定标准:
不论是裁剪还是嫁接,都需要选择一个合适的标准来决定哪些滤波器是不重要的。通常情况下多数裁剪文献中都利用L1范数来评价滤波器的重要性,然而本文提出了不同观点并利用熵(entropy)来评价滤波器的重要性,具体分析如下:

  1. L1范数(L1 norm)
    以一层滤波器为单位,L1范数的计算就是将当前层滤波器中所有的卷积层参数进行逐点求绝对值并求和。现有的文献中普遍认为L1范数越接近零,当前滤波器越不重要。但最近的研究表明,更小更不重要的标准并不总是正确的。一个特殊的情况是,一个权重分布在 0–1之间的滤波器肯定比所有权重都为1的滤波器更好。很显然,L1范数准则只关注滤波器权值的绝对值,并没有关注权值的变化。因此利用L1范数评价滤波器的好坏是不全面的。
    在这里插入图片描述
  2. 熵(entropy)
    利用熵的形式来衡量滤波器权重的变化程度,以此为依据来判别滤波器的好坏。具体来说,计算熵的方法为将滤波器权重按照大小等分为离散的几个区间,并计算区间对应的概率,最后利用熵的公式计算整个滤波器的熵。 如公式4,5结合起来,首先计算一层滤波器中一个卷积层的熵,并求和。公式6表示直接将当前层的滤波器进行权重划分后计算熵。
    在这里插入图片描述
    两个卷积层对应的熵的差即为上图中的x轴
    在这里插入图片描述
    ⑤ 效果的比较:
  • 1.三种不同的嫁接方式在两个数据集上的表现
    在这里插入图片描述

CIFAR-10该数据集共有60000张彩色图像,这些图像是32*32,分为10个类,每类6000张图,这里面有50000张用于训练,构成了5个训练批,每一批10000张图;另外10000用于测试,单独构成一批

  • 2.L1范数和熵值两种指标评价过滤器,嫁接策略的性能比较
    在这里插入图片描述
  • 3.嫁接策略对模型最终结果与传统的蒸馏学习等方法的比较
    在这里插入图片描述
  • 4.对嫁接后的模型进行了滤波器的有效性分析,明显,经过嫁接策略后无效滤波器的数量显著减少
    在这里插入图片描述
    ⑥ 自己的一些想法
  1. 是否可以将嫁接后的模型再次进行剪枝
  2. 是否可以将熵的阈值再次划分,一部分用来嫁接,一部分用来剪枝,既增强了表达能力,也减少了计算量
  3. 是否可以将嫁接后的模型进行量化,嫁接提升的表达能力用来弥补量化带来的不足
  4. 是否可以将嫁接-量化-剪枝放在一起,Grafting-Pruning-Quantization,思路:Deep Neural Network Compression by In-Parallel Pruning-Quantization
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寅贝勒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值