自動微分には、計算と同じ向きに導関数を伝える前進モード(接線線形モード)と、出力から入力へ逆向きに求める後退モード(随伴モード)があります1。前進モードは入力 1 つの方向ごとに計算を 1 回行い、後退モードは出力 1 つについて 1 回の計算で、すべての入力への導関数を求めます。
ソースコードから導関数を求めるコードを生成する方式と、値と導関数を組にした型で演算を置き換える方式(演算子のオーバーロード)があります2。仕組みと使われる場面は「AAD(随伴自動微分)」のページで扱います。
下書きです。公開前の確認のために表示しています。
自動微分は、プログラムで書かれた計算を基本の演算の合成とみなし、連鎖律を順に当てはめて、入力に対する出力の導関数を求める方法です。差分で近似する方法と違い、導関数を機械精度の範囲で求められます(計算そのものが真の感応度と合っているかは別です)。
自動微分には、計算と同じ向きに導関数を伝える前進モード(接線線形モード)と、出力から入力へ逆向きに求める後退モード(随伴モード)があります1。前進モードは入力 1 つの方向ごとに計算を 1 回行い、後退モードは出力 1 つについて 1 回の計算で、すべての入力への導関数を求めます。
ソースコードから導関数を求めるコードを生成する方式と、値と導関数を組にした型で演算を置き換える方式(演算子のオーバーロード)があります2。仕組みと使われる場面は「AAD(随伴自動微分)」のページで扱います。