自動微分
トップダウン型自動微分において、求める値はボトムアップ型の随伴であり、上線 w ̄ i {\displaystyle {\bar {w}}_{i}} で表す。これは中間変数 w i {\displaystyle w_{i}} に関する偏微分
w ̄ i = ∂ y ∂ w i {\displaystyle {\bar {w}}_{i}={\frac {\partial y}{\partial w_{i}}}}
である。連鎖律より、 w i {\displaystyle w_{i}} が計算グラフで後続ノードを持つ場合、
w ̄ i = ∑ j w ̄ j ∂ w j ∂ w i {\displaystyle {\bar {w}}_{i}=\sum _{j}{\bar {w}}_{j}{\frac {\partial w_{j}}{\partial w_{i}}}} , j ∈ {i の後続ノード}
トップダウン型自動微分は連鎖律を外側から内側(図3の計算グラフでは上から下)にたどっていく。
偏微分する関数f : R → R が n ≫ mを満たすとき、トップダウン型自動微分はボトムアップ型自動微分よりも効率的である。例示した関数は m = 1 のスカラー値関数(1つだけ値を返す関数)なので、勾配を計算するには計算グラフを一度たどるだけでよい。これは n = 2回計算グラフをたどる必要があったボトムアップ型自動微分の計算量の半分である。
しかし、トップダウン型自動微分は、テープやWengert リスト(なお、Wengert はボトムアップ型を1964年に発表したが、トップダウン型を発表したわけではない)と呼ばれるサイズ変更が可能な配列に中間変数 w i {\displaystyle w_{i}} の計算結果を追記していく必要があるためメモリ使用量の点で不利であり、計算グラフが巨大になるとメモリ使用量が問題となる可能性がある。
ボトムアップ型自動微分では最初に偏微分を行う入力変数を固定し、それぞれの部分式を再帰的に計算する。手計算においては連鎖律において内側の関数を繰り返し置き換えていくことに相当する。
∂ y ∂ x = ∂ y ∂ w 1 ∂ w 1 ∂ x = ∂ y ∂ w 1 ( ∂ w 1 ∂ w 2 ∂ w 2 ∂ x ) = ∂ y ∂ w 1 ( ∂ w 1 ∂ w 2 ( ∂ w 2 ∂ w 3 ∂ w 3 ∂ x ) ) = ⋯ {\displaystyle {\frac {\partial y}{\partial x}}={\frac {\partial y}{\partial w_{1}}}{\frac {\partial w_{1}}{\partial x}}={\frac {\partial y}{\partial w_{1}}}\left({\frac {\partial w_{1}}{\partial w_{2}}}{\frac {\partial w_{2}}{\partial x}}\right)={\frac {\partial y}{\partial w_{1}}}\left({\frac {\partial w_{1}}{\partial w_{2}}}\left({\frac {\partial w_{2}}{\partial w_{3}}}{\frac {\partial w_{3}}{\partial x}}\right)\right)=\cdots }