跳到主要内容

自动微分

阐述

给定函数 f:RnRmf:\mathbb R^n\to\mathbb R^m 和以计算图表示的它的计算过程,计算它的 Jacobian。

根据计算顺序不同,可以分为

前向自动微分总是计算 Jacobian 的一列,而后向自动微分总是计算 Jacobian 的一行。因此,

  • nmn\gg m 时,应该使用后向自动微分
  • nmn\ll m 时,应该使用前向自动微分
  • 如果 nmn\sim m,由于后向自动微分通常具有比较高的冗余,也建议使用前向自动微分。 

根据实现原理不同,可以分为

实例

Forward-over-reverse 法 Hessian 计算

这种方法综合运用了前向自动微分和后向自动微分,先构造一个给定输入 xx 能计算梯度的函数 f(x)=Bfx(1)\nabla f(x)=\mathcal B_f^x(1),然后对这个函数使用前向自动微分,种子是 x=x0+ieiεix=x_0+\sum_i e_i\varepsilon_i,最终就能得出 Hessian。

如果不要求整个 Hessian 而是 Hessian 和向量的乘积,则后面一步可以简化,直接使用 x+vεx+v\varepsilon 单个种子计算即可,因为

f(x+vε)=Bfx+vε(1)\nabla f(x+v\varepsilon)=\mathcal B_f^{x+v\varepsilon}(1)

性质

相关内容

参考文献