【模型剪枝】|论文笔记 Optimal Brain Damage

本文探讨了一种通过二阶导数来确定神经网络中不重要权重的技术,以实现网络简化和性能优化。通过计算参数的二阶偏导数,确定其对目标函数的贡献度,从而选择并删除低贡献度的权重。这种方法有助于减少网络复杂度,提高泛化能力,同时减少了训练样本的需求和学习时间。文章介绍了使用泰勒级数近似目标函数,并通过海森矩阵进行分析,但面临大矩阵计算的挑战,提出了简化策略。
摘要由CSDN通过智能技术生成

1 摘要

通过从网络中删除不重要的权重,可以有更好的泛化能力、需求更少的训练样本、更少的学习或分类时间。本文的基础思想是使用二阶导数将一个训练好的网络,删除一半甚至一半以上的权重,最终会和原来的网络性能一样好,甚至更好。最好的泛化能力是在训练误差和网络复杂度平衡的时候。

2 介绍

达到这种平衡的一种技术是最小化由两部分组成(原始的训练误差+网络复杂度的度量)的损失函数。

复杂度评估方法包括VC维度,描述长度、还有一个历史悠久的方法是:自由参数中的非零参数数量,这个方法也是本文选用的方法。

在很多统计推理的文章中,存在一些先验或者是启发式的信息规定了哪些参数应该被删除;例如,在一组多项式中,应该先删除高次项。但是在神经网络中,应该删除哪些次项的参数就不是那么明显了。

本文的技术是使用目标函数对参数求二阶导数表示参数的贡献度。而不是直观上用数值大小代替贡献度(即数值小的参数对对最终预测结果贡献度也小)

3 OBD

目标函数在神经网络领域扮演着重要的角色;因此使用“删除一个参数之后,目标函数的变化”来定义一个参数的贡献度是很合理的。但是计算每一个参数删除引发的目标函数的变化是很困难的。

幸运的是,我们可以通过建立一个误差函数的局部模型,来分析预测扰动参数向量引起的影响。我们用泰勒级数来近似目标函数e。
数向量的扰动 δ U \delta U δU 将会通过下面的式子来改变目标函数

在这里插入图片描述
其中, δ u i δ u i δui δ U \delta U δU的分量, g i g_i gi 是目标函数E关于U的梯度G 的分量, h i j h_{ij} hij是海森矩阵H(E)梯度关于U的分量。

在这里插入图片描述
目标是找到一个参数集合,使得删除掉这个参数集合之后E的增加最小。
这个问题几乎是无法解决的。其中一个原因是海森矩阵H 很大(具有2600个参数的神经网络,其海森矩阵有6.5×10^6 项)并且海森矩阵的计算也很复杂。

因此我们必须引入一个简化的近似方法。首先,给定一个对角逼近理论、极值近似理论,在局部极小情况下,二次近似假定目标函数是二次的,可以近似为

在这里插入图片描述

3.1 计算二阶导数 h i i h_{ii} hii

根据Levenberg-Marquardt近似算法,公式的中的带有f ''的二阶导数项可以省略。

在这里插入图片描述

3.2 算法步骤

1 选择一个合理的网络架构
2 训练网络直至收敛
3 计算每个参数的二阶偏导数值 h k k h_{kk} hkk
4 计算每个参数的贡献度
5 将参数按照贡献度排序,并删除一些贡献度低的参数
6 迭代至第2步

在上述过程中的删除参数的方法是将其值设为0并固定住,也可以是将贡献度低的参数值进一步降低,或者也可以允许删除了的参数(值为0)重新参与运算,再次更新。

4 结论

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值