由于手动确定与修剪相关的超参数(例如逐层修剪比)很麻烦,因此已经提出了神经架构搜索 (NAS) (1997) 来自动查找修剪结构。
1)强化学习(RL)问题,其中 RL 代理通过搜索修剪比率等动作空间来找到稀疏子网络。
2)基于梯度的方法修改梯度更新规则,使稀疏约束的优化问题可微于权重。
3)采用进化算法探索和搜索稀疏子网络的进化方法。
基于强化学习的方法
AutoML for Model Compression (AMC)(2018)使用 RL 自动选择适当的逐层修剪比率,而无需手动敏感性分析。为了在连续动作空间上进行搜索,采用了深度确定性策略梯度(DDPG)算法。actor接收 11 层相关状态,例如 FLOPS,并输出关于修剪比率的连续动作。
Automatic Graph encoder-decoder Model Compression (AGMC) (2021)AMC 仍然需要手动选择输入到 RL 代理的固定 11 个状态的前提。此外,固定环境状态忽略了计算图中的丰富信息。因此,将dnn建模为计算图,并输入到基于gcn的图编码器-解码器[260]中,自动学习RL代理的输入状态。与AMC[130]相比,AGMC重新缩放修剪比率以补偿任何未满足的稀疏约束,而不是将FLOPs应用到奖励函数中
DECORE(2021)采用多智能体学习。多个agents 的存在来自于为层中的所有通道分配专用agents ,每个agents 只学习一个表示二元决策的参数。DECORE 对通道本身的状态进行建模。为了学习动作参数,当精度保留任务和压缩任务都很好地完成时,给予更高的奖励
GNN-RL(2021)首先将 DNN 建模为多阶段图神经网络 (GNN) 以学习全局拓扑。然后将生成的分层计算图用作代理的环境状态。与同时使用 DDPG 和 的 AMC [1-1] 相比,该方法使用近端策略优化 (PPO) 算法 [261] 作为策略,因为 PPO 给出了更好的实验结果。此外,由于专门设计的图环境,RL 系统的奖励不需要包含稀疏约束。Accuracy是方程式描述的奖励的唯一指标。
基于梯度的
Differentiable Markov Channel Pruning 可微马尔可夫通道修剪 (DMCP)(2020)将信道剪枝建模为马尔可夫过程。在这里,状态意味着在修剪过程中保留通道,状态之间的转换表示修剪过程。DMCP 通过可学习的架构参数参数化转换和预算损失。因此,最终损失是可微的 关于架构参数。阶段用于以基于梯度的方式完成修剪。第一阶段使用变体三明治规则更新未修剪网络的权重[262]。第二阶段更新架构参数。
Differentiable Sparsity Allocation (DSA)(2021)用比离散搜索更有效的基于梯度的方法优化连续空间中的稀疏性分配。采用验证损失作为可微agents ,以使验证准确性的评估可微。接下来,概率可微剪枝过程用作不可微硬剪枝过程的替换。最后,在预算约束下获得稀疏分配。一个ADMM-inspired优化方法用于解决约束非凸优化问题。
Differentiable Hyper Pruning (DHP)(2020)使用为主干网络生成权重的超参数。设计的超网络由三层组成。首先,潜在向量首先取两个可学习的潜在向量
并形成潜在向量。然后,embedding层将潜在向量投影到embedding空间,形成embedding向量。最后,显式层采用嵌入向量并输出权重,这些权重可以显式用作 CONV 层的权重。修剪是通过使用 l`1 稀疏正则化对潜在向量进行正则化来完成的,近端梯度算法 [236] 用于更新潜在向量
Pruning as Search (PaS)(2022)在每个卷积层之后添加了一个深度二进制卷积 (DBC) 层。DBC 用作修剪指标,Straight-Through Estimator [231] 用于允许梯度流。此外,zero pruning indicator将归零权重的梯度,保持修剪层的权重以便于重新评估。最后,结构重新参数化允许网络的任何宽度。例如,identity路径中的权重以数学等效的方式合并到 CONV 权重中以处理残差连接。
Learning Filter Pruning Criteria (LFPC)(2020)搜索逐层修剪标准而不是修剪比率。其使用的基础是过滤器具有不同的分布来提取粗略和精细的特征。这使得对所有层使用相同的修剪标准是不合适的。为了探索标准空间,引入了标准参数来指导标准的选择。为了实现梯度流,该方法使用 Gumbel-Softmax reparameterization [255] 使损失与标准参数可微。
Transformable Architecture Search (TAS)(2019)搜索网络的宽度和深度。引入了两个可学习参数 α 和 β 来分别表示可能的通道数和层数的分布。子网络可以根据 α 和 β 进行采样。应用 Gumbel-Softmax reparameterization [255] 使采样过程可微。搜索目标是最小化验证损失,同时鼓励较小的计算成本并惩罚未满足的资源预算。知识蒸馏进一步用于提升修剪网络的性能。
Exploration and Estimation (EE)(2021)以两步基于梯度的方式实现通道修剪。第一步是探索子网络,以允许使用快速采样技术更大的搜索空间(Stochastic Gradient Hamiltonian Monte Carlo 随机梯度 哈密顿 蒙特卡罗 )。为了带来稀疏性,该方法将 FLOPs 感知先验分布应用于探索过程。第二步,估计,用于指导高质量子网络的生成。
基于进化算法
MetaPruning (2019) 旨在通过两阶段框架找到最佳逐层通道编号。第一阶段训练一个名为剪枝Net的元网络来生成各种结构。prunNet 采用随机采样的编码向量来表示结构,并以端到端的方式学习。在第二阶段,部署进化搜索算法来寻找约束下的最佳结构。由于剪枝网络预测所有修剪网络的权重,因此在搜索时不需要微调
ABCPruner(2020)使用一阶段方法寻找最优的分层信道数,不需要额外的支持网络。此外,通过将保留的通道限制为给定的空间,它大大减少了修剪结构的组合。为了寻找最优剪枝结构,采用了基于人工蜂群算法(ABC)[264]的进化算法。
协作进化算法(EA)不是在整个网络中使用evolutionary algorithms 进化算法(EA),而是使用Cooperative CoEvolution algorithm for Pruning协作协同进化 (CCEP)(2022),逐层对网络进行分组,并对每一层应用EA。通过将网络分解为多个组,搜索空间大大减少。整个框架使用迭代修剪和微调策略。在每次迭代中,通过随机修剪过滤器生成多个候选(父项)。后代是通过进行具有位突变的父母来生成的,其中每个比特代表过滤器的存在。然后使用准确性和 FLOP 评估个人,并且只保留前 k 进行下一次迭代。