自動微分
この問題は保存する中間変数を限定し、必要な中間変数を再計算することによって軽減される。
トップダウン型自動微分を用いて偏導関数値を計算するための演算は以下の通りである(関数値を求める時と順番が逆であることに注意)。 w ̄ 1 = ∂ y ∂ x 1 {\displaystyle {\bar {w}}_{1}={\tfrac {\partial y}{\partial x_{1}}}} と w ̄ 2 = ∂ y ∂ x 2 {\displaystyle {\bar {w}}_{2}={\tfrac {\partial y}{\partial x_{2}}}} が求めたい値である。
Operations to compute derivative w ̄ 5 = 1 (seed) w ̄ 4 = w ̄ 5 ⋅ 1 w ̄ 3 = w ̄ 5 ⋅ 1 w ̄ 2 = w ̄ 3 ⋅ w 1 w ̄ 1 = w ̄ 3 ⋅ w 2 + w ̄ 4 ⋅ cos  w 1 {\displaystyle {\begin{array}{l}{\text{Operations to compute derivative}}\\\hline {\bar {w}}_{5}=1{\text{ (seed)}}\\{\bar {w}}_{4}={\bar {w}}_{5}\cdot 1\\{\bar {w}}_{3}={\bar {w}}_{5}\cdot 1\\{\bar {w}}_{2}={\bar {w}}_{3}\cdot w_{1}\\{\bar {w}}_{1}={\bar {w}}_{3}\cdot w_{2}+{\bar {w}}_{4}\cdot \cos w_{1}\end{array}}}
g ( ⟨ u , u ′ ⟩ , ⟨ v , v ′ ⟩ ) = ⟨ g ( u , v ) , g u ( u , v ) u ′ + g v ( u , v ) v ′ ⟩ {\displaystyle g(\langle u,u'\rangle ,\langle v,v'\rangle )=\langle g(u,v),g_{u}(u,v)u'+g_{v}(u,v)v'\rangle }
ここで g u {\displaystyle g_{u}} と g v {\displaystyle g_{v}} はそれぞれ g {\displaystyle g} の最初と2番目の引数に対する微分である。
基本的な二項算術演算を(実数と二重数の)混在した引数に対して、つまり順序対 ⟨ u , u ′ ⟩ {\displaystyle \langle u,u'\rangle } と実数 c {\displaystyle c} に対して適用するとき、まずこの実数を ⟨ c , 0 ⟩ {\displaystyle \langle c,0\rangle } に引き上げる(lifting)。関数 f : R → R {\displaystyle f:\mathbb {R} \rightarrow \mathbb {R} } の x 0 {\displaystyle x_{0}} に於ける微分はいまや f ( ⟨ x 0 , 1 ⟩ ) {\displaystyle f(\langle x_{0},1\rangle )} に上の算術を使って計算することによって得られる。これは ⟨ f ( x 0 ) , f ′ ( x 0 ) ⟩ {\displaystyle \langle f(x_{0}),f'(x_{0})\rangle } を結果として与える。
自動微分の基本原理は、合成関数の偏微分の連鎖律を用いた偏微分の分解である。
合成関数の偏微分の連鎖律とは y = f ( w 1 , w 2 ) , w 1 = g ( x 1 , x 2 ) , w 2 = h ( x 1 , x 2 ) {\displaystyle y=f(w_{1},w_{2}),w_{1}=g(x_{1},x_{2}),w_{2}=h(x_{1},x_{2})} の時、下記が成立することである。
∂ y ∂ x 1 = ∂ y ∂ w 1 ∂ w 1 ∂ x 1 + ∂ y ∂ w 2 ∂ w 2 ∂ x 1 {\displaystyle {\frac {\partial y}{\partial x_{1}}}={\frac {\partial y}{\partial w_{1}}}{\frac {\partial w_{1}}{\partial x_{1}}}+{\frac {\partial y}{\partial w_{2}}}{\frac {\partial w_{2}}{\partial x_{1}}}}
自動微分を実装したライブラリなどのソフトウェアが多数存在する。2010年代の第3次人工知能ブームの際にディープラーニングに自動微分が必要なため、TensorFlowやPyTorchなどトップダウン型の自動微分を含むライブラリが多数作られた。