Pruning can be performed at different granularities, from structured to non-structured
选择与标准相符的剪枝方法或算法。例如,可以使用L1或L2正则化进行基于权重大小的剪枝,也可以使用通道剪枝等技术进行结构化剪枝。
“Magnitude-based pruning”(基于权重大小的剪枝)是一种常见的神经网络剪枝技术,它基于神经网络中的参数(通常是权重)的大小来确定哪些参数应该被剪枝,以减小模型的大小和复杂性。该技术的主要思想是去除那些绝对值较小的权重,因为它们对模型的贡献相对较小,而保留那些较大的权重,以维持模型性能。
下面是基于权重大小的剪枝的基本原理和步骤:
1. 权重排序: 首先,对神经网络中的所有权重进行排序,通常按绝对值大小进行排序,从最小到最大。
2. 剪枝决策: 根据事先确定的剪枝比率或目标,选择要剪枝的权重。通常,可以通过设置一个剪枝比率来确定要保留的权重百分比。较小的权重将被标记为剪枝。
3. 剪枝操作: 将被标记为剪枝的权重设置为零或删除它们,从而减小了模型的参数数量。这通常会导致模型稀疏化,即模型中许多权重为零。
4. 微调和重训练: 通常需要对被剪枝的模型进行微调或重新训练,以部分恢复模型的性能。这可以通过在新的训练数据上进行额外的训练来实现。
此外,“Magnitude-based pruning” 通常结合其他剪枝技术,如结构化剪枝或重要性基
剪枝,以更好地保持模型性能。
A scaling factor is associated with each filter (i.e., output channel) in convolutional layers
• The scaling factor is multiplied to the output of that channel
• The scaling factors are trainable parameters
“Scaling-based pruning”(基于缩放的剪枝)是一种神经网络剪枝技术,它基于权重的缩放因子来确定哪些权重应该被剪枝。这一技术旨在通过考虑权重的相对重要性来减小模型的复杂性,同时最小化性能损失。基于缩放的剪枝通常与剪枝阈值结合使用,权重的缩放因子与阈值比较,如果权重的缩放因子低于阈值,则相应的权重将被剪枝。
下面是基于缩放的剪枝的基本原理和步骤:
1. 计算权重的缩放因子: 对神经网络的每个权重计算一个缩放因子,通常是该权重的绝对值与一些参考值的比值。这个参考值可以是所有权重的均值、最大值、标准差等。
2. 设置剪枝阈值: 确定一个剪枝阈值,该阈值决定了哪些权重应该被剪枝。通常,权重的缩放因子与阈值进行比较。
3. 剪枝决策: 对于每个权重,将其缩放因子与剪枝阈值进行比较。如果缩放因子低于阈值,则将该权重标记为要被剪枝。
4. 剪枝操作: 将被标记为剪枝的权重设置为零或删除它们,减小了模型的参数数量。
5. 微调和重训练: 通常需要对被剪枝的模型进行微调或重新训练,以部分恢复模型的性能。这可以通过在新的训练数据上进行额外的训练来实现。
“Second-Order-based Pruning”(基于二阶导数的剪枝)是一种神经网络剪枝技术,它利用神经网络中参数的二阶导数信息来确定哪些参数应该被剪枝。这一技术旨在更精确地识别不重要的参数,以减小模型的复杂性,同时最小化性能损失。相比于基于一阶导数(如梯度)的剪枝方法,基于二阶导数的剪枝更加细致和精确。
下面是基于二阶导数的剪枝的基本原理和步骤:
计算参数的二阶导数:对神经网络的每个参数计算其相对于损失函数的二阶导数,通常使用海森矩阵(Hessian matrix)或近似方法来估计二阶导数。这些二阶导数提供了关于参数的曲率信息,即它们告诉我们参数周围的损失函数曲线形状。
1. 设置剪枝阈值: 确定一个剪枝阈值,该阈值决定了哪些参数应该被剪枝。通常,二阶导数的绝对值与阈值进行比较。
2. 剪枝决策: 对于每个参数,将其二阶导数的绝对值与剪枝阈值进行比较。如果二阶导数的绝对值低于阈值,则将该参数标记为要被剪枝。
3. 剪枝操作: 将被标记为剪枝的参数设置为零或删除它们,减小了模型的参数数量。
4. 微调和重训练: 通常需要对被剪枝的模型进行微调或重新训练,以部分恢复模型的性能。这可以通过在新的训练数据上进行额外的训练来实现。
“Second-Order-based Pruning” 的优点在于它更精确地考虑了参数对模型的影响,因此可以减小性能下降的风险。它通常用于需要高度精细化剪枝的应用中,如在资源受限的环境中,需要最大程度地减小模型复杂性而又不损害性能。
When removing neurons from a neural network model,
• the less useful the neurons being removed are,
• the better the performance of pruned neural network is.
这种剪枝方法根据参数中的零值(或接近零值)的比例来决定哪些参数应该被剪枝。 这一技术旨在利用神经网络中存在的稀疏性来减小模型的复杂性,同时保持或提高性能。
以下是 “Percentage-of-Zero-Based Pruning” 的基本原理和步骤:
1. 计算零值比例: 对神经网络中的每个参数(通常是权重)计算零值或接近零值的比例。这可以通过将参数与一个接近零的阈值进行比较来实现,通常使用很小的阈值。
2. 设置剪枝比例阈值: 确定一个剪枝比例阈值,该阈值决定了哪些参数应该被剪枝。通常,参数的零值比例与阈值进行比较。
3. 剪枝决策: 对于每个参数,将其零值比例与剪枝比例阈值进行比较。如果零值比例高于阈值,说明该参数足够稀疏,将被标记为要被剪枝。
We can perform sensitivity analysis to determine the per-layer pruning ratio
决定剪枝比率,即要剪掉的参数百分比。这是一个关键的超参数,平衡了模型大小的减小和性能保持。
探索不同的剪枝比率以及它们对模型性能的影响,以找到合适的权衡点。
在剪枝后,对模型进行微调或重新训练,以恢复性能的部分损失。
根据需要调整学习速率和其他超参数。