自動微分
⟨ u , u ′ ⟩ + ⟨ v , v ′ ⟩ = ⟨ u + v , u ′ + v ′ ⟩ ⟨ u , u ′ ⟩ − ⟨ v , v ′ ⟩ = ⟨ u − v , u ′ − v ′ ⟩ ⟨ u , u ′ ⟩ ∗ ⟨ v , v ′ ⟩ = ⟨ u v , u ′ v + u v ′ ⟩ ⟨ u , u ′ ⟩ / ⟨ v , v ′ ⟩ = ⟨ u v , u ′ v − u v ′ v 2 ⟩ ( v ≠ 0 ) sin  ⟨ u , u ′ ⟩ = ⟨ sin  ( u ) , u ′ cos  ( u ) ⟩ cos  ⟨ u , u ′ ⟩ = ⟨ cos  ( u ) , − u ′ sin  ( u ) ⟩ exp  ⟨ u , u ′ ⟩ = ⟨ exp  u , u ′ exp  u ⟩ log  ⟨ u , u ′ ⟩ = ⟨ log  ( u ) , u ′ / u ⟩ ( u > 0 ) ⟨ u , u ′ ⟩ k = ⟨ u k , k u k − 1 u ′ ⟩ ( u ≠ 0 ) | ⟨ u , u ′ ⟩ | = ⟨ | u | , u ′ sign u ⟩ ( u ≠ 0 ) {\displaystyle {\begin{aligned}\left\langle u,u'\right\rangle +\left\langle v,v'\right\rangle &=\left\langle u+v,u'+v'\right\rangle \\\left\langle u,u'\right\rangle -\left\langle v,v'\right\rangle &=\left\langle u-v,u'-v'\right\rangle \\\left\langle u,u'\right\rangle *\left\langle v,v'\right\rangle &=\left\langle uv,u'v+uv'\right\rangle \\\left\langle u,u'\right\rangle /\left\langle v,v'\right\rangle &=\left\langle {\frac {u}{v}},{\frac {u'v-uv'}{v^{2}}}\right\rangle \quad (v\neq 0)\\\sin \left\langle u,u'\right\rangle &=\left\langle \sin(u),u'\cos(u)\right\rangle \\\cos \left\langle u,u'\right\rangle &=\left\langle \cos(u),-u'\sin(u)\right\rangle \\\exp \left\langle u,u'\right\rangle &=\left\langle \exp u,u'\exp u\right\rangle \\\log \left\langle u,u'\right\rangle &=\left\langle \log(u),u'/u\right\rangle \quad (u>0)\\\left\langle u,u'\right\rangle ^{k}&=\left\langle u^{k},ku^{k-1}u'\right\rangle \quad (u\neq 0)\\\left|\left\langle u,u'\right\rangle \right|&=\left\langle \left|u\right|,u'{\mbox{sign}}u\right\rangle \quad (u\neq 0)\end{aligned}}}
自動微分は2種類に分けられ、それぞれ
ボトムアップ型自動微分(フォーワード・モード、フォーワード・アキュムレーション、タンジェント・モード、狭義の自動微分)
トップダウン型自動微分(リバース・モード、リバース・アキュムレーション、随伴モード、高速自動微分)
と呼ばれる。
ボトムアップ型自動微分では連鎖律を内側から外側に計算し(∂w/∂xを計算した後で ∂y/∂w を計算する)、トップダウン型自動微分では外側から内側に計算する。
使い分けは、入力が n 次元、出力が m 次元とした場合、以下の違いがある。
n < m ならばボトムアップ型の方が計算量が少ない。ボトムアップ型の計算回数はn回。
n > m ならばトップダウン型の方が計算量が少ない。トップダウン型の計算回数はm回。
機械学習において、評価値はほぼ常に m = 1 の実数なので、トップダウン型が使われる。機械学習で用いられる多層パーセプトロンのバックプロパゲーションはトップダウン型自動微分の特殊なケースである。
ボトムアップ型はR.E. Wengertが1964年に発表したが、2ページの論文で特に名前を付けていない。Andreas Griewank によると、トップダウン型を誰が最初に発明したのか判然としないが、計算量を減らす工夫として1960年代後半には提案されていた。