1. 程式人生 > >自動微分(AD)學習筆記

自動微分(AD)學習筆記

detail 原因 ext clas cer 工具 war AI 聯系

作者:李濟深
鏈接:https://www.zhihu.com/question/48356514/answer/125175491
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

開源裏面比較幹凈的Forward Mode實現應該是ceres-solver裏的的Jet[1]了。文件註釋裏解釋得很詳細。Reverse Mode比較成熟的實現是Stan[3]的。Adept[2]的實現思路有點意思(範偉.gif),速度上跟Stan差不多(Stan在對節點函數上做了更多優化的工作),但是似乎缺乏實際產品的檢驗,穩定性可能不如Stan。Adept 2.0 版本自己實現了Array,原因大抵是作者想寫出自己的風格…向不成熟的方向又邁進了一步。

AD在優化問題裏面是一個非常方便的工具。但是不要忘了最簡單的 df = (f(x+h) - f(x-h)) / 2h 這樣簡單而高效的形式,結合兩者在某些優化問題裏會有更好的效果。

秋天盒飯涼得快,我得趕緊吃了。

[1]: ceres-solver/jet.h at master · kashif/ceres-solver · GitHub
[2]: Adept: Fast Automatic Differentiation using Expression Templates
[3]: GitHub - stan-dev/math: Stan Math Library

自動微分(AD)學習筆記