我见过的 Haskell 中最相关的实现是前向模式http://hackage.haskell.org/packages/archive/fad/1.0/doc/html/Numeric-FAD.html http://hackage.haskell.org/packages/archive/fad/1.0/doc/html/Numeric-FAD.html.
最接近的相关研究似乎是与Scheme相关的另一种功能语言的反向模式http://www.bcl.hamilton.ie/~qobi/stalingrad/ http://www.bcl.hamilton.ie/~qobi/stalingrad/.
我将 Haskell 中的反向模式视为许多任务的圣杯,希望它可以使用 Haskell 的嵌套数据并行性在繁重的数值优化中获得不错的加速。
为了回答这个问题,我上传了一个名为ad http://hackage.haskell.org/package/adHackage 用于处理 Haskell 中的反向模式自动微分。
在内部,它利用 Andy Gill 的 Kansas Lava 的技巧来观察其记录的磁带中的共享以用于反向传播,并使用类型级别品牌来避免混淆敏感性。
我试图让 API 相对接近 Barak Pearlmutter 和 Jeffrey Mark Siskind 的时尚包,但为了通用性,我忍不住到处做了一些小调整。
我仍然需要仔细研究并完成剩余的未实现的时尚组合器,找出构建反向模式 AD 塔的好方法,验证我没有搞砸我对基本微积分的记忆,并提供一个很好的 API 来使用这种方法可以在其他正向模式 AD 程序中获取本地反向模式检查点,但我对迄今为止的进展感到非常满意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)