最近刚刚完成了用于机器学习目的的基本反向模式 AD,我发现自己想了解该领域,但我遇到了高阶方法的难关。
基本的反向广告非常简单易懂,但更高级的材料太抽象,太技术化,我在互联网上找不到任何好的解释(实际上我花了很多时间才实现基本的反向AD甚至存在。)
基本上,我了解如何在微积分的上下文中取二阶导数,但我不明白如何转换反向 AD 图以获得二阶导数。
在像edge_pushing这样的算法中,这些虚线连接是什么意思?
我调查了库 DiffSharp 并且我注意到它使用诸如正反向微分之类的东西来计算 Hessian。运行,通过调试器,我真的看到它实际上在一次运行中混合了正向和反向步骤。该机制背后的原理是什么?
DiffSharp 使用 jacobian-vector 积来计算每个变量的 Hessian,这是一个 R^m -> R^n 映射。这怎么可能从原始图表中得到呢?反向 AD 是一个 R -> R^n 映射,额外的维度从何而来?
最后,嵌套 AD 是如何工作的?