自动微分(AutoDiff)的原理

1/ 各种自动微分的优缺点1

机器学习的一个重要的任务,就是对参数求导得到损失函数对于每个参数的偏导数,然后进行梯度下降。

而求偏微分,可以选择的方法有:手工微分(manual differentiation)、符号微分(symbolic differentiation)、数值微分(numerical differentiation)、前向自动微分(forward-mode autodiff)和反向自动微分(reverse-mode autodiff)。

而在 Julia 的 Flux 包里和 Tensorflow 一样,就是使用的反向自动微分。

手工微分:手工微分对于复杂的函数,会变得非常繁琐,容易出错

符号微分:利用计算图来处理。但是对于复杂的函数,会出现计算图十分巨大的,降低性能,而一个最大的缺点就是,符号微分无法处理任意编码的函数。

数值微分:数值微分根据公式:

h(x)=limxx0h(x)h(x0)xx0=limϵ0h(x0+ϵ)h(x0)ϵ\begin{aligned} h^{\prime}(x)&=\lim_{x\rightarrow x_0}\frac{h(x)-h(x_0)}{x-x_0}\\ &=\lim_{\epsilon\rightarrow 0}\frac{h(x_0+\epsilon)-h(x_0)}{\epsilon} \end{aligned}

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享