神经网络压缩方向是目前深度学习研究的一个热门的方向,其主要的研究方向是压缩,蒸馏,网络架构搜索,量化等。在 ICCV2019 中,不少的研究单位和学者都发表了神经网络压缩方向的论文。本文主要以其中三篇论文来研究神经网络压缩的目前发展趋势。
论文 1:基于元学习的模型压缩《MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning》
论文地址:https://arxiv.org/abs/1903.10258
1 论文主旨概述
Meta learning 论文是旷世研究院提出的一种神经网络压缩方法。通道剪枝 [1] 作为一种神经网络的压缩方法被广泛的实现和应用,一般剪枝算法通过对预训练的大网络裁剪次要的通道,之后微调,得到最终的剪枝网络。随着 AutoML[2] 的发展,metapruning 利用 autoML 的自动寻找最优结构的特点,脱离了人工设计的局限以及弥补剪枝算法的依赖数据的不足。本文从元学习的角度出发,直接用元学习得到剪枝网络(pruned networks)的结构以及自生成权重,而不是保留原始网络的重要参数。
2 方法:
近年来,有研究 [3] 表明无论是否保存了原始网络的权值,剪枝网络都可以达到一个和原始网络相同的准确率。因此,通道剪枝的本质是逐层的通道数量,也就是网络结构。鉴于此项研究,Metapruning 决定直接保留裁剪好的通道结构,区别于剪枝的裁剪哪些通道。
本文提出来一个 Meta network,名为 PruningNet,可以生成所有候选的剪枝网络的权重,并直接在验证集上评估,有效的搜索最佳结构。
Pruningnet training
PruningNet 是一个 meta network,以一组网络编码向量 (c1,c2,,,cl) 为输入,输出为剪枝网络的权重。一个 PruningNet 的训练方式如下图 (1) 所示:
图(1)PruningNet 的随机训练方法
图 (1) 中,PruningNet 由多个 block 组成,其中的每个 block 由两个全连接层组成。
在前向过程中,PruningNet 以网络编码向量(即剪枝网络的每层通道数)为输入,生成权重矩阵。同时,剪枝网络以网络编码向量中的数值为输出通道,并将生成的权重矩阵裁剪匹配剪枝网络的输入输出。对于一个 batach 的输入图像,我们可以计算带权重的剪枝网络的前向损失。
在反向过程中,本文并不是更新剪枝网络的权重,而是计算 PruningNet 的梯度,更新 PruningNet 的权重(全连接层参数)。
在整个训练过程中,由于所有的操作都是可微的,所以能够进行端到端的学习。通过随机生成不同的网络编码向量,可以得到不同的剪枝网络结构。