Runtime Network Routing for Effi
这篇是清华鲁继文组PAMI 2018年的文章,是NIPS 2017年《Runtime neural pruning》的拓展版本
两个版本有稍微的出入,主要是加了“Multi-Path Network”的部分。不过这一部分看起来更像是ensemble多个模型,故此这部分不会细讲,主要讨论“Runtime Neural Pruning”的实现细节。
这篇文章讲了什么
dynamic channle pruning
Motivation
- selects an optimal path inside the network
- simple image doesn't need complicated network
怎么做
Condition computation:Runtime Nerual Pruning based on the input image and current feature map, that is to say, this is the instance pruning strategy
贡献
提供了剪枝的新思路,不再探索静态的剪枝策略,保留大网络的全部表达能力
但这里会有另一个槽点:个人理解,剪枝是为了可以用更少的参数,追求在廉价设备上保持性能,所以文章提出的保留全部参数,动态选择(剪枝)路径,是否违背了剪枝这个task的motivation
设计了怎样的模型
- policy network(RNN):决策保留的channel
- backbone
建立在怎样的假设之上
剪枝策略十分粗糙,默认选择每层feature map前面的channel,更难的sample才会用到后面的channel

实现细节
主要是Policy Network部分
state

将上一层的Fi(feature map) [N, n1, H, W]通过global average pooling得到一个[N, n1],通过encoderi得到固定长度的特征作为state[N, C]输入到RNN中,RNN输出hidden state[N, C],通过decoderi得到这个decision的Q-value
值得注意的是,对每一层都有独立的encoderi跟decoderi。槽点:用大量(冗余)的policy network参数去对backbone剪枝(减少参数)
action
ai表示选择保留前i组的channel
reward

architecture
算法

十分粗略的解读,主要是方便自己以后查看。
水平有限,希望没有误人子弟,有任何问题欢迎留言或者私信讨论(不定时查看……)