1. 剪枝典型算法
你能介绍一下你的研究方向网络压缩中典型的算法吗?
好的,我主要研究网络压缩中网络剪枝技术。
网络剪枝有很多经典的算法,比如
1.1 Network Slimming
Learning Efficient Convolutional Network through Network Slimming.
这篇论文的方法是,将BN层的缩放因子与每个channel相关联:
具体来说就是,Conv+BN+激活函数,那么到BN层操作时,卷积后的输出×BN层的缩放因子,在网络训练期间会对这些缩放因子进行训练,并且施加稀疏正则化(具体而言是L1正则化),把那些比较小的缩放因子推向0,那些具有小比例缩放因子对应的通道就会被去掉。
为什么小比例缩放因子对应的通道就会被去掉?
因为该论文的观点是训练过程中那些小比例的缩放因子与卷积后的输出相乘会是比较小的值,也就是输出是不重要的,那么对应的通道也是不重要的通道,于是干脆把这些小比例缩放因子对应的通道去掉。
然后我们对这个网络微调来恢复精度。
1.2 HRank
Hrank:Filter Pruning using High-Rank Feature Map.
这篇论文对我的影响比较大,我写的论文的基础框架有借鉴到HRank。
这篇论文的方法是,用feature map的秩来反映feature map的信息重要性,从而反映对应的filter的重要性:
具体来说就是,作者发现一个filter生成的多个feature map的平均秩总是相同的,低秩的feature map映射较少的信息,那么所对应的filter也代表着是不重要的,于是将低秩的feature map对应的fiter减去。
1.3 FSRP
Adversarial Robustness Improvement via Filter Pruning with Fourier Frequency Characteristics.
这是一种基于傅里叶空间的卷积神经网络的鲁棒剪枝算法。
首先我想声明几个概念:对抗样本,是指在数据集中通过故意添加细微的扰动所形成的输入样本,这些样本会导致模型以高置信度给出一个错误的输出。 鲁棒模型,这里特指针对对抗样本具有防御能力的模型。
我的论文具体是这样的:
我做了一个实验,将对抗样本放入干净模型和鲁棒模型中,以傅里叶作为分析工具,在和干净模型的对照下,我发现鲁棒模型更加关注对抗样本feature map的低频区域,而忽虑feature map的高频区域。这就说明鲁棒模型认为对抗样本深层特征的低频区域是鲁棒性强的区域,深层特征的高频区域是鲁棒性弱的区域。
这篇论文的主要方法就是用feature map的低频分量和高频分量的平均比值用来反映feature map的鲁棒性,从而定义对应的filter的鲁棒性。这个比值高则代表feature map的鲁棒性强,则对应的filter的鲁棒性强,那这个filter则需要保留,反之则删除。
在我的剪枝方法下,鲁棒模型不仅提高了运算速度,在干净精度和鲁棒精度上都得到了提升。
你写这篇论文在企业中你认为会有什么贡献呢?
首先,我认为对抗性安全问题它的确是存在的,如果我们想要应用鲁棒模型,训练起来参数量也会很大,而且一般的剪枝技术并不能应用在这种模型上,因为一般的剪枝技术无法保证鲁棒模型的精度。但是我的剪枝方法不仅在鲁棒模型上可以用,即使是普通干净模型,我的剪枝方法依然可以达到比较好的精度,还提高了运算速度。
1.4 Soft Filter Pruning
Soft Filter Pruning for Accelerating Deep Convolutional Neural Networks.
结构化剪枝:
硬剪枝,会将filter权重置为0,并且在训练的时候会移除。例如HRank,剪枝策略--局部剪枝(每层设置不一样的阈值),训练方式--边剪边训(剪完第一层,训100个epochs;剪完第二层,训100个epochs)
软剪枝,会将filter权重置为较小的值,但是在训练的时候不会移除,依然会参与训练。例如:Soft Filter Pruning,剪枝策略--全局剪枝(每层设置一样的阈值),训练方式--一次性剪完,训10个epoch;再一次性剪完,训10个epoch。