目錄
自動微分
編輯在數學和計算機代數中,自動微分 (AD) 也稱為算法微分、計算微分、自動微分或簡稱為 autodiff,是一組計算計算機程序指定函數的導數的技術。 AD 利用了這樣一個事實,即每個計算機程序,無論多么復雜,都會執行一系列基本算術運算(加法、減法、乘法、除法等)和基本函數(exp、log、sin、cos 等)。 通過對這些運算重復應用鏈式法則,可以自動計算任意階的導數,精確到工作精度,并且最多使用比原始程序多一個小常數因子的算術運算。
自主微分不同于符號微分和數值微分。 符號微分面臨著將計算機程序轉換為單一數學表達式的困難,并可能導致代碼效率低下。 數值微分(有限差分法)會在離散化過程和抵消過程中引入舍入誤差。 這兩種經典方法在計算高階導數時都存在問題,復雜度和誤差都會增加。 最后,這兩種經典方法在計算函數相對于許多輸入的偏導數時都很慢,而這正是基于梯度的優化算法所需要的。 自動微分解決了所有這些問題。
鏈式法則,正向和反向積累
編輯AD 的基礎是由鏈式法則提供的微分分解。
通常,存在兩種不同的 AD 模式,正向積累(或正向模式)和反向積累(或反向模式)。 前向累積指定從內到外遍歷鏈式規則(即首先計算 d w 1 / d x {\displaystyle dw_{1}/dx} 然后 d w 2 / d w 1 {\displaystyle dw_{2}/ dw_{1}} 最后是 d y / d w 2 {\displaystyle dy/dw_{2}} ),而反向累加則是從外到內遍歷(先計算 d y / d w 2 {\displaystyle dy/dw_{ 2}} 然后 d w 2 / d w 1 {\displaystyle dw_{2}/dw_{1}} 最后是 d w 1 / d x {\displaystyle dw_{1}/dx} )。
正向積累
在前向累加AD中,首先固定進行微分的自變量,遞歸地計算每個子表達式的導數。 在紙筆計算中,這涉及重復代入鏈式法則中的內部函數的導數,與逆向累加相比,正向累加自然且易于實現,因為衍生信息的流動與評估順序一致。 每個變量 w 都增加了它的導數 ?(存儲為數值,而不是符號表達式)。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/193409/