可微編程

可微編程係一個編程範例，藉此數字計算機程序經由自動微分嘅方法微分得。 通常藉由梯度下降，可以實現得基於梯度嘅程序參數優化。可微編程經已喺好多領域當中使用開，特別係喺科學計算同埋人工智能當中。

方法 
大多數可微編程框架係經由砌出一個圖表、之包含到程序中嘅控制流同埋數據結構嘅嚟工作。 較早嘅嘗試通常分為兩類：

基於靜態、編譯好嘅圖嘅方法，譬如TensorFlow，  Theano跟MXNet 。啲方法傾向於允許良好嘅編譯器優化同埋比較容易噉擴展去大型系統，但係佢哋嘅靜態性質限制唨交互能力同埋輕鬆創建得嘅程序類型，而且令到啲用戶好難去推敲佢哋寫嘅程序。

基於運算符重載、動態圖嘅方法，如PyTorch跟AutoGrad 。佢哋嘅動態同埋交互性質令到大多數程序嘅編寫同埋推敲變得更加容易。但係，佢哋會提高解釋器開銷，可擴展性勩尐，而且編譯器優化冇益到佢哋乜嚌。 

呢兩種早期方法都只能微分啲以適當方式為框架編寫嘅代碼，之限制唨佢哋戥其他程序嘅互相操作性。

最新軟件包 Zygote、之使Julia編程語言写嘅，同埋使用新編程語言嘅Myia ，佢哋透過捉語言嘅語法睇作圖而解決唨早時啲試驗當中撞到嘅問題。然之後任意代碼嘅中間表示部分都直接微分、優化同埋編譯得。

應用 
以下領域當中經已使用開可微編程，譬如將深度學習佮埋物理引擎用於機器人技術、可微分嘅光線追蹤、圖像處理同埋概率編程。

機器學習

注

考 

編程範式