【AutoML】如何使用强化学习进行模型剪枝?

大家好,欢迎来到专栏《AutoML》,在这个专栏中我们会讲述AutoML技术在深度学习中的应用,这一期讲述在模型剪枝中的应用。

作者&编辑 | 言有三

我们往期的文章中介绍了各种各样的模型压缩技巧,那么是否也可以使用AutoML技术来用于模型压缩,比如剪枝呢。

1 AMC

AutoML for Model Compression(AMC)是一个利用强化学习自动搜索并提高模型剪枝算法质量的框架,其完整的流程如下:

在一般的剪枝算法中,我们通常遵循一些基本策略:比如在提取低级特征的参数较少的第一层中剪掉更少的参数,对冗余性更高的FC层剪掉更多的参数。然而,由于深度神经网络中的层不是孤立的,这些基于规则的剪枝策略并不是最优的,也不能从一个模型迁移到另一个模型。

AMC方法便是在该背景下,利用强化学习自动搜索并提高模型压缩的质量,该框架是每一层进行独立压缩,前一层压缩完之后再往后层进行传播,t层接受该层的输入特征s_t,输出稀疏比率a_t,按照a_t对该层进行压缩后,智能体移动到下一层L_t+1,使用验证集精度作为评估,伪代码如下:

作者们对两类场景进行了实验,第一类是受延迟影响较大的应用如移动APP,使用的是资源受限的压缩,这样就可以在满足低FLOP和延迟,小模型的情况下实现最好的准确率;这一类场景作者通过限制搜索空间来实现,在搜索空间中,动作空间(剪枝率)受到限制,使得被智能体压缩的模型总是低于资源预算。

另一类是追求精度的应用如Google Photos,就需要在保证准确率的情况下压缩得到更小的模型。对于这一类场景,作者定义了一个奖励,它是准确率和硬件资源的函数。基于这个奖励函数,智能体在不损害模型准确率的前提下探索压缩极限。

每一层的状态空间为(t, n, c, h, w, stride, k, FLOP s[t], reduced, rest, at−1),t是层指数,输入维度是n×c×k×k,输入大小是c×h×w,reduces就是前一层减掉的flops,rest是剩下的flops。

因为剪枝对通道数特别敏感,所以这里不再是使用离散的空间,如{128,256},而是使用连续的空间,使用deep deterministic policy gradient (DDPG)来控制压缩比率,完整的算法流程如下:

对于细粒度的剪枝,可以使用权重的最小幅度作为阈值,对于通道级别的压缩,可以使用最大响应值。

在谷歌Pixel-1 CPU和MobileNet模型上,AMC实现了1.95 倍的加速,批大小为1,节省了34%的内存。在英伟达Titan XP GPU 上,AMC实现了1.53 倍的加速,批大小为50。

2 关于模型优化的推荐资料

如果说要我在深度学习这么多方向里选择一个的话,我会毫不犹豫地选择模型优化,这也是我一直在做的事情。

公众号写过很多的模型解读了,如下是一些总结:

【完结】总结12大CNN主流模型架构设计思想

【完结】12篇文章带你逛遍主流分割网络

【AI不惑境】残差网络的前世今生与原理

【AI不惑境】移动端高效网络,卷积拆分和分组的精髓

知识星球也有一个模型结构1000变板块,是比公众号的内容更深更广。如果感兴趣的话这周加入最合适,双十一优惠还在。

【杂谈】为什么要在双十一这一周邀请大家加入有三AI知识星球

(0)

相关推荐