“Hessian–向量积对本页的反向梯度程序再作一次前向方向微分,逐槽同时传播伴随量及其变化率;共享节点与重复槽仍须累加。若把可逆线性求解作为一个原语,离散伴随给出通过转置方程实现其反向规则的…”
形式陈述 ​
设标量函数
这里的Hessian是梯度映射的 Jacobian。可以先用反向自动微分计算梯度,再对整个反向程序作前向方向微分,称为 forward-over-reverse。需要的是矩阵对一个方向的作用,不必先列出
状态与局部规则 ​
输入节点
令最后一个节点为标量输出
每个节点保存原值
- 正向原值与切向量。 置
,依次计算 及 保存反向所需原值、切向量和图结构。 - 输出种子。 全部
初始化为零,再置 。输出种子与输入点无关,所以 。 - 逆序二阶传播。 对
,逐槽执行 一个节点的所有消费者贡献先汇总,再向父节点传播。重复槽也分别累加。 - 返回。 返回输入处的
,分别是 与 。遍历有限图后终止;若原语离开定义域、二阶规则不存在或运算出现非有限值,应返回失败状态,而非把一个任意数值当作 Hessian 作用。
正确性:微分反向程序的每一步 ​
考虑输入路径
在每个
求导,由乘积法则恰得
因此逐条指令归纳保持这一含义,最终
证明微分的是整个累加程序,包括旧值
直觉
一阶反向传播把“目标对各节点有多敏感”送回来;二阶传播同时追踪“这些敏感度沿指定方向如何改变”。每条边有两个变化来源:下游送来的伴随量在变,这给出
方向
例子与边界
共享节点和平方的两个槽 ​
沿用自动微分页的程序
取
| 节点 | ||||
|---|---|---|---|---|
反向处理
最后在
其中来自
这同时核对了传播结果和平方的重复槽。
光滑性、执行迹和精度 ​
若使用 ReLU 等分段线性原语,避开切换面的固定区域内可以应用相应二阶规则;在不可微点,框架选定的一阶约定再求导并不自动构成经典 Hessian。含分支或循环的程序同样需要邻域内稳定的有限执行迹,仅在当前点运行成功不够。
“精确 Hessian–向量积”通常指精确实数算术下无差分截断误差的恒等式。浮点执行仍有舍入、溢出和相消;二阶局部导数甚至可能比一阶量更大。也不能把近似或错误的自定义一阶反向规则当作真实梯度再求导,便宣称得到原函数的 Hessian。
推论与应用
成本与完整矩阵的区别 ​
若每个原语的元数有统一常数上界,且原值、全部局部一阶及二阶导数都可用有界工作算出,则每个槽只处理常数次。一次方向传播连同原值求值、初始化和输出的时间为
若把大矩阵乘法或线性求解封装成一个原语,应计入它及其导数规则的实际成本,不能将一次函数调用计作常数。逐个输入坐标取
二阶优化的算子接口 ​
共轭梯度法每步只调用矩阵乘向量。若当前实 Hessian 正定,就可用本页算法提供 Newton 系统
大型原语也可以有自己的导数接口。线性求解的离散伴随把一次可逆求解的反向传播化为转置方程,其数学对象是精确方程解。若进一步组合求导,仍须核对该接口的光滑性和数值求解精度;把未收敛迭代直接声明为精确求解,会改变本页证明所依赖的局部规则。
参考资料
- Barak A. Pearlmutter, “Fast Exact Multiplication by the Hessian”, Neural Computation 6(1), 1994, pp. 147–160;作者预印本,1993-06-09,§3 的方向微分算子与 §4.1 的二阶传播。预印本页码与期刊版不同。
- Alan Edelman, Steven G. Johnson et al., Matrix Calculus for Machine Learning and Beyond, Lecture 8, MIT 18.S096, IAP 2023,§8.4.1,印刷页62–63的 forward-over-reverse;§8.3.1 的反向累加。