文章目录
- 1.摘要和背景
- 1.1 摘要
- 1.2 背景
- 2.方法和贡献
- 2.1 方法
- 2.2 贡献
- 3.实验和结果
- 3.1 实验
- 3.2 结果
- 4.总结和展望
- 4.1 总结
- 4.2 展望
本系列是在阅读深度神经网络模型小型化方面论文时的笔记!内容大部分从论文中摘取,也会有部分自己理解,有错误的地方还望大家批评指出!
论文链接:BlockSwap: Fisher-guided Block Substitution for Network Compression
代码链接:github代码
1.摘要和背景
1.1 摘要
原文摘要:
The desire to run neural networks on low-capacity edge devices has led to the development of a wealth of compression techniques. Moonshine (Crowley et al., 2018a) is a simple and powerful example of this: one takes a large pre-trained network and substitutes each of its convolutional blocks with a selected cheap alternative block, then distills the resultant network with the original. However, not all blocks are created equally; for a required parameter budget there may exist a potent combination of many different cheap blocks. In this work, we find these by developing BlockSwap: an algorithm for choosing networks with interleaved block types by passing a single minibatch of training data through randomly initialised networks and gauging their Fisher potential. We show that block-wise cheapening yields more accurate networks than single block-type networks across a spectrum of parameter budgets.
在资源受限的设备(手机等终端设备)上使用深度神经网络使得模型压缩成为研究的热门。2018年Crowley等人提出的Moonshine方法将原始网络中的basicBlock用计算量更加少的block进行替代,从而达到了对模型裁剪的目的。但是,该方法对原始网络中的每一个block都使用相同的block进行替换,即:在筛选出最佳的block后,将原始模型的中所有block都是搜索得到的最佳的block进行替换。本文在moonshine方法基础上,对不同的basicBlock用不同的最佳的block进行替换,从而得到裁剪后的模型,然后使用网络蒸馏的方法对裁剪后的模型进行retrain,从而提高裁剪后模型的精度。本文提出的方法首先随机生成一批满足资源限定要求的网络,然后使用一个minibatch的数据对所有产生的网络进行前向传播,并计算出每个网络的Fisher potential,然后推选出Fisher potential最大的那个网络作为裁剪后的模型,然后对该模型进行微调(使用网络蒸馏方法),提高裁剪后模型的精度。
1.2 背景
-
2018年Crowley等人提出的方法:Moonshine主要分为以下两步:
- 将原始网络中的每个block替换成计算资源更加少的block
- 将替换后的网络作为学生网络,原始网络作为老师网络,使用网络蒸馏的方法,训练学生网络,得到的学生网络便是压缩后的网络。
-
2018年Crowley等人提出的方法:Moonshine,存在的问题是对所有的block使用相同的替换block,这个假设太强了。我们知道,即使在resnet中,不同的block之间的通道数还不一样,所以文章中使用同一个block对原始模型的所有的block进行替换是不合适的。
-
使用分组卷积,深度可分离卷积,瓶颈卷积等特殊的卷积替换普通卷积,可以大大的降低模型的计算量。如:mobilenet就是使用深度可分离卷积替换原始的普通卷积,使得在和vgg相同的精度表现下可以拥有更少的参数。
2.方法和贡献
2.1 方法
- 本文方法的过程:
- 从候选的可替换卷积模块中随机选取block替换原始网络中的block,并使得构造出来的网络满足资源限制的条件。
- 从数据集中随机选取一个minibatch的数据集,然后使用生成的所有满足要求的网络计算得到 Fisher potential,并选出 Fisher potential最大的那个网络
- 将选出的网络作为学生网络,初始网络作为老师网络,使用网络蒸馏的方法对学生网络进行训练,得到的学生网络就是我们压缩后的网络。
- 使用网络蒸馏的方法可以将一个大而复杂的网络的知识迁移到一个小而简单的网络中,是比fine_turn更好的方法。但是使用网络蒸馏方法的前提是得知道小网络(裁剪后的网络)的结构。
- 分组卷积,深度可分离卷积和瓶颈卷积或者它们的组合,替换普通的卷积可以大大的降低模型的计算量。
- 网络自动架构搜索(automating neural architecture search (NAS))技术常常包括如下方法:1)基于空间查找方法的(使用随机和非随机方法),即对候选的网络的参数空间进行搜索,从而得出满足要求的结构。2)基于优化算法(遗传算法),对网络的参数进行搜索;3)基于强化学习的架构搜索,即使用强化学习方法对参数进行搜索 ;4)one-shot方法:训练一个大而全的混合模型,然后根据要求选出合适的子模型等等。按时NAS方法被证明常常会找到一个次优解。
2.2 贡献
- 提出了blockswap方法,通过该方法得出比删减网络的深度或者宽度或者moonshine方法结果要好。
- 我们概述了一种通过Fisher信息快速比较候选模型的简单方法。 我们通过消融研究证实了我们的度量与最终训练误差高度相关,并表明它可以用来选择性能架构
- 实验证明,本文的方法比moonshine和随机组合的方法都要好。
3.实验和结果
3.1 实验
- 数据集:cofar10和ImageNet
- 模型:WRN-40-2 , ResNet-34
- 通过对比人为简单的删减网络的深度和宽度,moonshin取不同block的时候和blockswap方法的对比,验证本文方法的有效性。
- blockswap方法在候选的block集合中搜索满足资源限制的搜索步骤为1000步,是随机的。然后使用一个minibatch的训练集根据生成的网络算出他们的firsh分数,然后选择分数最高的那个网络作为裁剪后的网络。
- Networks are trained for 200 epochs using SGD with momentum 0.9. The initial learning rate of 0.1 is reduced by a factor of 5 every 60 epochs. Minibatches of size 128 are used with standard crop + flip data augmentation. The weight decay factor is set to 0.0005. For attention transfer β is set to 1000 using the output of each of the three sections of the network.
3.2 结果
- BlockSwap chooses a student that is better than the teacher, despite using 3.5× fewer parameters and 3× fewer MACs.
- Fisher potential metric is an effective means for choosing optimal block structures
- Specifically, it beats the teacher by 0.49% in top-1 error and 0.82% in top-5 error despite using almost 3× fewer parameters
4.总结和展望
4.1 总结
- 提出了一种算法,可以对复杂的模型进行压缩以适用于计算资源受限的设备。
- 通过给定一个block候选集合,然后随机的对原始网络中的block使用候选的block进行替换,并且满足资源受限的条件。然后,使用一个minibatch的训练集对生成的网络计算firsher分数,并将分数最高的那个网络作为裁剪后的网络,然后利用网络蒸馏的方法对得到的裁剪后的网络进行训练。
4.2 展望
- 文章中给出的候选的block集合中的block数目有限,是否可以发现更好的可替换的block?
- 文章中对于网络的替换是基于随机生成的,是否可以使用基于优化算法或者网络生成呢?