02 Optimal Brain Damage 详解:二阶信息剪枝的起点

📅 2026/7/6 5:04:51
02 Optimal Brain Damage 详解:二阶信息剪枝的起点
一、论文基本信息论文名称Optimal Brain Damage作者Yann LeCun, John S. Denker, Sara A. Solla会议Advances in Neural Information Processing Systems 2NIPS 1989论文链接https://proceedings.neurips.cc/paper_files/paper/1989/file/6c9882bbac1c7093bd25041881277658-Paper.pdfOptimal Brain Damage通常简称为OBD是神经网络剪枝领域最经典的论文之一。这篇论文的重要性不在于它能直接处理今天的 ResNet、ViT 或大语言模型而在于它提出了一个影响深远的思想剪枝不应该只看权重大小而应该看删除某个参数后损失函数会增加多少。换句话说OBD 把模型剪枝从简单的经验规则推进到了基于损失函数敏感度的理论分析框架。它也是后来很多二阶剪枝方法的起点比如 Optimal Brain Surgeon、基于 Hessian 的剪枝方法、SparseGPT、GPTQ 等方法在思想上都可以看到 OBD 的影子。二、为什么这篇论文重要在早期神经网络研究中人们已经发现一个现象训练好的神经网络中存在大量冗余参数删除一部分连接后模型性能并不会明显下降。但是关键问题是到底应该删除哪些参数最简单的想法是删除绝对值小的权重。例如如果某个权重 (w_i) 非常接近 0就认为它对输出影响不大可以剪掉。这种方法可以写成。但是OBD 指出权重大小本身并不能完全反映参数重要性。一个权重虽然很小但如果损失函数对它非常敏感那么删除它仍然可能造成较大损失。一个权重虽然较大但如果损失函数对它不敏感那么删除它也许影响不大。因此OBD 关心的不是这个权重有多大而是把这个权重删除以后损失函数会增加多少这就是 OBD 的核心思想。三、OBD 想解决什么问题假设我们已经训练好了一个神经网络网络参数为模型在训练集上的损失函数为现在我们希望删除一些参数使模型变得更小。删除参数 (w_i) 可以理解为将它置为 0对应的参数变化为如果同时删除多个参数就可以得到一个参数扰动向量剪枝后的损失变化可以表示为OBD 的目标就是估计这个。如果删除某个参数后很小说明这个参数不重要可以剪掉。如果删除某个参数后很大说明这个参数重要不应该剪掉。因此OBD 的剪枝问题可以理解为也就是删除那些对损失函数影响最小的权重。四、为什么不能直接计算损失变化理论上我们可以对每个参数都做一次实验将设置为 0重新计算模型损失观察损失增加多少选择损失增加最小的参数删除。但是这种方法计算成本非常高。假设模型有 (n) 个参数如果每个参数都单独测试一次就需要进行 (n) 次前向传播。对于小模型来说也许还能接受但对于稍大一点的网络这种方法就会非常低效。更重要的是如果还要考虑多个参数组合的影响搜索空间会变得极其庞大。因此OBD 希望用一种近似方法快速估计。这个近似方法就是Taylor 展开。五、Taylor 展开OBD 的数学基础对于损失函数在当前参数附近进行 Taylor 展开其中是一阶梯度是 Hessian 矩阵中的元素是参数扰动是三阶及以上高阶项。因此损失变化为近似为这就是 OBD 的基本出发点。六、为什么一阶项可以忽略OBD 假设当前模型已经训练到一个局部极小点附近。在局部极小点处损失函数对参数的一阶梯度近似为 0因此一阶项可以忽略于是损失变化主要由二阶项决定这一步非常关键。它说明 OBD 并不是根据权重本身大小判断重要性而是根据损失函数局部曲率来判断参数敏感度。如果某个方向的曲率很大说明损失函数对这个方向非常敏感参数在这个方向上稍微变化就会导致损失明显增加。如果某个方向的曲率很小说明损失函数对这个方向不敏感即使参数发生变化损失也不会明显增加。这就是二阶信息剪枝的基本思想。七、Hessian 矩阵是什么在 OBD 中Hessian 矩阵非常重要。Hessian 矩阵定义为损失函数对参数的二阶偏导数组成的矩阵其中对角线元素表示损失函数对单个参数(w_i) 的二阶敏感度非对角线元素表示参数和之间的相互影响。如果完整使用 Hessian 矩阵那么损失变化为。这个公式很优雅但问题也很明显完整的Hessian 矩阵太大了。如果模型有 (n) 个参数那么 Hessian 矩阵大小是。当 (n) 很大时计算和存储完整 Hessian 都非常困难。八、OBD 的关键近似忽略 Hessian 非对角项为了让方法可计算OBD 做了一个重要近似假设 Hessian 矩阵是对角矩阵忽略不同参数之间的二阶交互项。也就是说只保留忽略于是损失变化可以从简化为如果只删除单个权重 (w_i)那么所以于是删除权重带来的损失变化近似为OBD 将这个值称为参数的saliency也就是显著性或重要性这就是 OBD 最核心的公式。九、OBD 的核心公式如何理解OBD 的重要性评分为它的含义是一个参数是否重要不仅取决于它自身大小还取决于损失函数对它的敏感程度。如果很小那么删除它造成的变化可能较小。如果很小说明损失函数对这个参数不敏感删除它造成的损失也可能较小。只有当权重较大并且损失函数对该参数非常敏感时才会比较大。因此OBD 比简单幅值剪枝更合理。十、OBD 为什么叫 Brain Damage“Brain Damage” 直译是“大脑损伤”。这个名字听起来有点奇怪但在神经网络语境下它是一个形象说法人的大脑即使受到一定损伤也可能仍然保持部分功能神经网络删除一部分连接后也可能继续保持较好的预测能力。“Optimal Brain Damage” 则表示以尽可能小的损失对神经网络进行最优损伤。也就是在删除参数时希望损失函数增加最少。从这个角度看OBD 的名字其实非常贴切。十一、OBD 的三个核心假设OBD 之所以能够得到简洁的 saliency 公式是因为它做了几个关键假设。1. 模型已经收敛OBD 假设网络已经训练到局部极小点附近因此。这样 Taylor 展开中的一阶项可以忽略。如果模型没有收敛一阶项可能很大此时只看二阶项就不够准确。2. Hessian 可以近似为对角矩阵OBD 忽略 Hessian 的非对角元素即忽略参数之间的二阶交互。这使计算变得简单但也带来了近似误差。实际上神经网络参数之间往往存在复杂耦合关系。删除一个参数后其他参数可能可以补偿它的影响。OBD 的对角 Hessian 近似没有显式建模这种补偿关系。3. 删除参数造成的是局部小扰动Taylor 展开本质上是局部近似。如果一次剪掉太多参数参数变化可能不再是小扰动那么二阶近似的准确性就会下降。因此OBD 更适合逐步剪枝而不是一次性大规模删除大量参数。十二、OBD 的局限性当然OBD 也有明显局限。1. 忽略参数之间的相关性OBD 只使用 Hessian 对角项忽略非对角项。这意味着它默认不同参数之间的影响是相互独立的。但在真实神经网络中参数之间往往高度相关。删除一个参数后其他参数可能会补偿它的作用。因此OBD 的重要性估计可能不够精确。2. 需要模型接近收敛OBD 依赖一阶梯度近似为 0 的假设。如果模型训练不充分或者处于训练过程早期那么。此时一阶项不能忽略OBD 的二阶 saliency 就可能不准确。3. 计算 Hessian 对角项仍然有成本虽然 OBD 避免了完整 Hessian但计算 Hessian 对角项仍然比简单幅值剪枝更复杂。对于现代大模型来说即使只计算 Hessian 对角项也需要额外计算和近似技巧。4. 更适合非结构化权重剪枝OBD 原始形式主要面向单个权重连接的剪枝。但是现代部署更关心结构化剪枝例如通道剪枝、注意力头剪枝、层剪枝等。如果直接使用 OBD需要将单个权重的 saliency 聚合到结构单元上。例如一个通道的重要性可以定义为该通道内所有权重 saliency 的总和。但是这种简单聚合是否合理还需要结合具体结构分析。十七、OBD 和 Optimal Brain Surgeon 的关系OBD 之后出现了另一个著名方法Optimal Brain Surgeon简称 OBS。两者都属于二阶剪枝方法但区别在于方法Hessian 使用方式是否考虑参数补偿计算成本OBD只使用 Hessian 对角项否较低OBS使用 Hessian 逆矩阵是较高OBD 删除一个权重时通常只是简单将该权重置为 0。而 OBS 认为删除一个权重后其他权重可以进行调整来补偿损失。因此OBS 不仅决定删除哪个权重还会计算剩余权重应该如何变化。因此OBS 理论上更精确但计算成本也更高。可以说OBD 是二阶剪枝的起点OBS 是对 OBD 的进一步精细化。