元剪枝---MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning

MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning

论文地址:https://arxiv.org/pdf/1903.10258.pdf

相关代码:https://github.com/liuzechun/MetaPruning

摘要

    本文提出了一种用Meta Learning进行自动网络通道剪枝的方法。作者先训练了一个叫做Pruning Net的Meta网络,可用于预测任意剪枝网络的网络权重。然后用进化算法进行最优网络结构搜索,搜索出最优的剪枝方案。由于网络权重是第一步就训练出来的,所以搜索最优剪枝方案速度特别快,并且剪枝后的网络不需要进行Finetune。另外,由于应用遗传算法,所以可以方便的加入硬件限制(比如终端延迟要求,网络计算规模等)使得剪枝后的网络能够直接满足要求。

1 相关技术

1.1 剪枝技术

    权重剪枝:剔除部分不重要的权重,问题是会造成非结构化的稀疏滤波器,在某些硬件设备上不能达到加速的目的。例如下图的3*3的滤波器去除一个点后,变成不规则形状(非矩形),无法进行方便的计算。

图1 权重剪枝例子

    通道剪枝:剔除filters,已有方案是迭代式进行剪枝,需要人工设定剪枝策略(迭代多少次剪枝多少量),而且,这种方案容易陷入局部最优解。通道剪枝主要有以下两种方法:

        (1)人工方法:通道重要性通道剪枝、数据驱动的通道剪枝。

        (2)AutoML:用自动学习剪枝策略进行通道剪枝。省去人工调参的麻烦。方法有NetAdapt和AMC等。

图2 强化学习剪枝-AMC


图3 AutoML剪枝-NetAdapt

1.2 Meta Learning

    Machine Learning ≈ 根据数据找一个函数 f 的能力;

    Meta Learning≈ 由数据找一个函数 f 的函数 F 的能力;

    Meta Learning的应用例子有Few-Shot ,Zero-Shot等,经典方法有MAML等。下图就是一个4-shot分类例子,训练数据是几种类型图片,测试则是另外的分类数据。达到这种目的的方法是,令模型在学习时,能够达到类似聚类的效果,即类内相似,类间远离,从而使得拥有某些相近特征集合的数据(一类图片)能够映射到相近的空间中去(cos相似)。

图3 few shot 例子

1.3 网络结构搜索(NAS)

    通过学习,去搜索最优的网络结构。主要方法有强化学习、遗传算法(进化算法)以及基于梯度的方法。本篇论文研究采用的是用遗传算法进行最优网络结构搜索。

2 方法实现

2.1 方法概述

    通道剪枝可以用如下公式进行描述,即在限制条件下,尽量减小网络通道数。

公式1 问题描述

    本文实现通道剪枝分两个步骤,包括:(1)网络权重预测。(2)搜索最优网络结构。网络权重预测的目的在于,对于给定任意结构(同一个网络,不同剪枝情况下的结构),都能预测出适用于给定任务的权重。网络结构搜索的目的是,从不同剪枝策略中,选出最优的网络剪枝方案。具体为什么可以这么做,可以看这篇论文:RETHINKING THE VALUE OF NETWORK PRUNING

图4 实现剪枝的2个步骤

2.2 网络权重预测

    网络权重预测网络为两层全连接层网络,FC网络输入为网络中各个层的通道数,下图中的Network encoding vector。训练时,随机选取通道数进行输入(比如对于拥有3层CNN的网络:输入为[3,5,12]或者[32,24,14]等),然后全连接输出结果当成原始网络剪枝后的权重,随机进行Reshape操作映射倒原始网络中,然后输入原始网络的训练数据,即下图中的MiniBatch(图像分类任务即为训练的图片)进行原始网络的训练,并计算损失,随后更新FC网络的权重。


图5 网络权重预测网络

2.3 最优网络搜索-遗传算法

    使用遗传算法有以下优点:(1)不容易陷入局部最优。(2)可以方便加入硬件限制。硬件限制+精度要求即为图中的个体适应度,遗传算法可用流程图表示如下:

图6 遗传算法流程图

应用到网络结构搜索中,本文用输入的网络结构当成遗传算法中的编码,然后主要流程如下:

图7 遗传算法搜索最优网络结构

3 MobileNet实验

    作者用该方法在MobileNet V1和Mobile V2上进行了实验,实验数据设置如下:

      数据集为ImageNet2012;

      训练集:1000分类,120万张图片;

      验证集:1000分类,5万图片;

      测试集:1000分类,10万张图片;

      另外,实验设置输入图像分辨率:224×224


剪枝效果图如下,其中虚线即表示被剪枝的通道。

图8 MobileNetV1&V2剪枝效果图

    实验结果显示,本文方法与AutoML剪枝效果相当,如下:

表1 对比实验结果

    同时,作者对剪枝结果进行了可视化,下图为V1剪枝结果。

图9 MobileNet V1 剪枝结果

部分参考文献

[1] Jose M Alvarez and Mathieu Salzmann. Learning the number of neurons in deep networks. In Advances in Neural Information Processing Systems, pages 2270–2278, 2016.

[2] Sajid Anwar, Kyuyeon Hwang, and Wonyong Sung. Structured pruning of deep convolutional neural networks. ACMJournal on Emerging Technologies in Computing Systems(JETC), 13(3):32, 2017.

[3] Sajid Anwar and Wonyong Sung. Compact deep convolutional neural networks with coarse pruning. arXiv preprintarXiv:1610.09639, 2016.

[4] Bowen Baker, Otkrist Gupta, Nikhil Naik, and RameshRaskar. Designing neural network architectures using reinforcement learning. arXiv preprint arXiv:1611.02167, 2016.

[5] Gabriel Bender, Pieter-Jan Kindermans, Barret Zoph, VijayVasudevan, and Quoc Le. Understanding and simplifyingone-shot architecture search. In International Conference onMachine Learning, pages 549–558, 2018.

[6] Andrew Brock, Theodore Lim, James M Ritchie, and NickWeston. Smash: one-shot model architecture search throughhypernetworks. arXiv preprint arXiv:1708.05344, 2017.

[7] Han Cai, Ligeng Zhu, and Song Han. Proxylessnas: Directneural architecture search on target task and hardware. arXivpreprint arXiv:1812.00332, 2018.

[8] Changan Chen, Frederick Tung, Naveen Vedula, and GregMori. Constraint-aware deep neural network compression.In Proceedings of the European Conference on Computer Vision (ECCV), pages 400–415, 2018.

[9] Xiaoliang Dai, Peizhao Zhang, Bichen Wu, Hongxu Yin,Fei Sun, Yanghan Wang, Marat Dukhan, Yunqing Hu, Yiming Wu, Yangqing Jia, et al. Chamnet: Towards efficientnetwork design through platform-aware model adaptation.arXiv preprint arXiv:1812.08934, 2018.

[10] Jia Deng, Wei Dong, Richard Socher, Li-Jia Li, Kai Li,and Li Fei-Fei. Imagenet: A large-scale hierarchical imagedatabase. 2009.

你可能感兴趣的:(元剪枝---MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning)