RL-Pruner: Structured Pruning Using Reinforcement Learning for CNN Compression and Acceleration

📄 arXiv: 2411.06463v1 📥 PDF

作者: Boyao Wang, Volodymyr Kindratenko

分类: cs.CV, cs.AI

发布日期: 2024-11-10

🔗 代码/项目: GITHUB


💡 一句话要点

提出RL-Pruner,利用强化学习实现CNN结构化剪枝,加速模型推理。

🎯 匹配领域: 支柱二:RL算法与架构 (RL & Architecture)

关键词: 卷积神经网络 结构化剪枝 强化学习 模型压缩 模型加速

📋 核心要点

  1. 现有结构化剪枝方法难以确定各层最优剪枝比例,导致性能下降或剪枝效率不高。
  2. RL-Pruner利用强化学习自动学习各层滤波器的重要性,并确定最优剪枝分布,无需人工干预。
  3. 实验表明,RL-Pruner在多种CNN模型上优于其他结构化剪枝方法,实现了更高的压缩率和推理速度。

📝 摘要(中文)

卷积神经网络(CNN)近年来表现出卓越的性能。压缩这些模型不仅减少了存储需求,使得部署到边缘设备成为可能,而且加速了推理,从而降低了延迟和计算成本。结构化剪枝通过在层级上移除滤波器,直接修改模型架构。这种方法在保持目标精度的同时,实现了更紧凑的架构,确保压缩后的模型保持良好的兼容性和硬件效率。我们的方法基于一个关键观察:神经网络不同层中的滤波器对模型性能的重要性各不相同。当要剪枝的滤波器数量固定时,不同层之间的最佳剪枝分布是不均匀的,以最小化性能损失。对剪枝更敏感的层应该在剪枝分布中占较小的比例。为了利用这一洞察力,我们提出了RL-Pruner,它使用强化学习来学习最佳剪枝分布。RL-Pruner可以自动提取输入模型中滤波器之间的依赖关系并执行剪枝,而无需模型特定的剪枝实现。我们在GoogleNet、ResNet和MobileNet等模型上进行了实验,将我们的方法与其他结构化剪枝方法进行比较,以验证其有效性。

🔬 方法详解

问题定义:论文旨在解决卷积神经网络(CNN)结构化剪枝中,如何确定各层滤波器最优剪枝比例的问题。现有方法通常采用均匀剪枝或基于启发式的剪枝策略,忽略了不同层滤波器对模型性能的不同影响,导致剪枝后的模型精度下降或压缩效率不高。

核心思路:论文的核心思路是利用强化学习(RL)来自动学习各层滤波器的重要性,并根据重要性动态调整剪枝比例。通过将剪枝过程建模为一个马尔可夫决策过程(MDP),智能体(Agent)可以根据模型性能的反馈(Reward)来学习最优的剪枝策略。这种方法能够自适应地调整各层的剪枝比例,从而在保证模型精度的前提下,最大程度地压缩模型。

技术框架:RL-Pruner的整体框架包含以下几个主要模块:1) 环境(Environment):CNN模型,接收剪枝动作并返回性能反馈。2) 智能体(Agent):强化学习模型,负责生成剪枝动作。3) 奖励函数(Reward Function):评估剪枝后模型性能的指标,例如精度或推理速度。4) 剪枝器(Pruner):根据智能体生成的动作,对CNN模型进行结构化剪枝。整个流程如下:智能体观察当前模型状态,生成剪枝动作(各层剪枝比例),剪枝器根据动作对模型进行剪枝,环境评估剪枝后模型的性能,并将奖励反馈给智能体,智能体根据奖励更新策略,重复以上步骤直至收敛。

关键创新:RL-Pruner的关键创新在于将结构化剪枝问题建模为一个强化学习问题,并利用智能体自动学习最优的剪枝策略。与传统的启发式剪枝方法相比,RL-Pruner能够自适应地调整各层的剪枝比例,从而更好地平衡模型精度和压缩率。此外,RL-Pruner无需模型特定的剪枝实现,具有较强的通用性。

关键设计:论文中,智能体采用Actor-Critic架构,Actor网络负责生成剪枝动作,Critic网络负责评估剪枝动作的价值。奖励函数综合考虑了模型精度和压缩率,例如,可以使用精度下降的负值加上压缩率的权重作为奖励。剪枝器采用结构化剪枝方法,直接移除整个滤波器。状态空间包括各层滤波器的数量、模型精度等信息。动作空间为各层剪枝比例的离散化取值。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,RL-Pruner在GoogleNet、ResNet和MobileNet等模型上取得了显著的压缩效果。例如,在ResNet-50上,RL-Pruner可以在精度损失小于1%的情况下,将模型大小减少50%以上,并显著提高推理速度。与其他结构化剪枝方法相比,RL-Pruner在相同压缩率下通常能保持更高的精度,或在相同精度下实现更高的压缩率。

🎯 应用场景

RL-Pruner可应用于各种需要部署轻量化CNN模型的场景,例如移动设备、嵌入式系统和边缘计算设备。通过自动优化剪枝策略,RL-Pruner能够显著减小模型大小、降低计算复杂度,从而提高推理速度和降低功耗,使得复杂的CNN模型能够在资源受限的设备上高效运行。该方法还可用于模型压缩和加速,降低云计算成本。

📄 摘要(原文)

Convolutional Neural Networks (CNNs) have demonstrated exceptional performance in recent years. Compressing these models not only reduces storage requirements, making deployment to edge devices feasible, but also accelerates inference, thereby reducing latency and computational costs. Structured pruning, which removes filters at the layer level, directly modifies the model architecture. This approach achieves a more compact architecture while maintaining target accuracy, ensuring that the compressed model retains good compatibility and hardware efficiency. Our method is based on a key observation: filters in different layers of a neural network have varying importance to the model's performance. When the number of filters to prune is fixed, the optimal pruning distribution across different layers is uneven to minimize performance loss. Layers that are more sensitive to pruning should account for a smaller proportion of the pruning distribution. To leverage this insight, we propose RL-Pruner, which uses reinforcement learning to learn the optimal pruning distribution. RL-Pruner can automatically extract dependencies between filters in the input model and perform pruning, without requiring model-specific pruning implementations. We conducted experiments on models such as GoogleNet, ResNet, and MobileNet, comparing our approach to other structured pruning methods to validate its effectiveness. Our code is available at https://github.com/Beryex/RLPruner-CNN.