Contents
- Introduction
- Method
- Optimal Brain Damage
- Computing the second derivatives
- The Recipe
- References
Introduction
- 作者设计了一种模型剪枝策略,能够在尽量不影响模型精度的情况下丢弃模型中不重要的权重
Method
Optimal Brain Damage
- 衡量权重重要性最直观的方法就是删除该权重,然后观察损失的变化,变化越大则该权重越重要,但每次删除一个权重然后再重新计算损失代价太大了。一个替代方案是构建误差函数的 local model,用于预测改变权重向量时损失的变化量
- 具体来说,就是将损失函数
E
E
E 用泰勒公式展开
其中, δ U \delta U δU 为权重向量的 perturbation, δ u i ∈ δ U \delta u_i\in\delta U δui∈δU, g i ∈ G g_i\in G gi∈G, G G G 为 gradient of E E E with respect to U U U, h i j ∈ H h_{ij}\in H hij∈H, H H H 为 Hessian matrix of E E E with respect to U U U. 我们的目标就是找到删除后使得 E E E 增加最少的一组权重 - 但上式其实是很难解的,因为
H
H
H 通常特别大,很难求解,为此作者引入了一些假设来简化问题:(1) “diagonal” approximation. 删除一组权重给
δ
E
\delta E
δE 带来的影响等于单独删除每个权重给
δ
E
\delta E
δE 带来的影响之和,因此等式右侧第三项的交叉项可以忽略;(2) “extremal” approximation. 假设模型剪枝之前训练已经收敛,因此模型参数向量处在
E
E
E 的一个局部极小点上,这样等式右侧第一项也可以忽略,此外,位于极小点也意味着
h
i
i
h_{ii}
hii 非负,参数向量的任何扰动都会使得
E
E
E 增加或保持不变;(3) “quadratic” approximation. 假设损失函数是近似二次函数 (nearly quadratic),因此等式右侧最后一项也可以忽略。至此上式可以简化为
也就是说,对于每个权重,我们只需要计算 h k k u k 2 / 2 h_{kk}u_k^2/2 hkkuk2/2 作为参数的 saliency,排序后选择 low-saliency parameters 进行剪枝即可,剪枝就是将权重值设为 0
Computing the second derivatives
- 现在还剩下一个问题,就是如何高效计算出各个权重的二阶导 h k k h_{kk} hkk. 其实这个过程和反向传播计算梯度是类似的,只不过推导上要更加麻烦,这里就省略了
The Recipe
References
- LeCun, Yann, John Denker, and Sara Solla. “Optimal brain damage.” Advances in neural information processing systems 2 (1989).