LegoNet 乐高卷积

来源:ICML 2019
原文:http://proceedings.mlr.press/v97/yang19c.html
代码:github.com/huawei-noah/
论文题目:LegoNet: Efficient Convolutional Neural Networks with Lego Filters

这篇文章是关于模型压缩的研究,作者针对当前深度学习模型存在的问题,研究出一种高效的Lego卷积。例如,ResNet-50的参数数量大约 50MB , 10^9FLOPs 。这也使得这些模型很难应用于小型设备。近年来关于神经网络压缩的研究也层出不穷:模型剪枝、量化、霍夫曼编码、矩阵因子分解、二值神经网络、泰勒展开、教师学生网络(知识蒸馏)等。但是这些方法也有一个缺点就是它们一般只适用于特定的结构和操作,很难应用于现有的设备平台。从另一方面来说,它们普遍依靠一个预分类模型,也就是说压缩后的模型性能不会超过当前模型性能的上限。此外,还有ResNet、Shufflenet、Xception、MobileNet也减少了部分参数。

图1

下面说说到底什么是Lego Filter。如图1 Lego Filter是一组低维的卷积核,通过不同的线性组合堆叠成传统的卷积效果。作者主要通过下面的公式来获取Lego Filter。假设传统卷积核大小为,B 是一组更小的向量化卷积操作 B\in \Re ^{d ^2 c_1 \times m} X\in \Re ^{d^2 c \times q } 表示输入的特征图向量化的结果, X_i\in \Re ^{d^2 c_1 \times q} 表示对 X 按照通道继续划分, o=\frac{c}{c_1}Y_j 表示groundtruth; M\in \{0,1\}^{m\times 1}是Lego Filter的一组组合参数。

M 是一组离散数据,不存在梯度,所以传统SGD算法无法用来优化,如果遍历所有可能性计算量会剧增。因此,作者使用Straight Through Estimator (STE)来优化下面这个函数(这也是二值神经网络常用的优化策略),主要思路就是引入一个新的矩阵 NNM 的矩阵形状相同, MN 二值化之后的结果,从而认为两个矩阵相同位置具有一样的梯度。

图2

如图2,Lego filter主要可以分为三步split-transform-merge,输入特征图通过分割获得特征子图,然后使用不同组合的Lego Filter分别进行卷积,最后融合多组结果获得最终的输出特征图。

发布于 2019-10-06 17:53