自動微分

自動微分#

  • 読み: じどうびぶん

  • 英名: Automatic Differentiation

  • 別名: 自動微分法

関数が四則演算のような基本演算の繰り返しで表現されている場合に,その構造と chain-rule (合成関数の微係数に関して成り立つ関係)を利用して,微係数の値を求める手法.シンボリックな情報を利用して数値的な情報を得ることが主な目的.

変数から関数を計算する手続きを「グラフ」(計算グラフと呼ばれる)に表現すると,変数の変化分から関数の変化分を導きだすことは計算グラフを辿ることによって行われる.関数を出発点として変数に向かってグラフを辿る算法(reverse-mode/top-down)は,多数の変数に依存する単一の関数の gradient を計算する場合に有利,変数を出発点として関数に向ってグラフを辿る算法(forward-mode/bottom-up)は単一の変数に依存する多数の関数の gradient を求める場合に有利.両者は関数と変数の数(ヤコビ行列の列と行のサイズ)に応じて使い分けるとより効率的である.前者 (reverse-mode/top-down) を「高速自動微分」と呼ぶこともある.

関数のシンボリックな情報を利用しない,有限差分法が,変数の数だけ関数の評価を繰り返さねばならないのとは対照的である.シンボリックな情報を元にするので,演算の途中における精度の下落はほぼない.

この演算に等価な行列表現も知られており[1] [1] ,その場合には微係数を求める操作は行列の基本変形の列によって表現され,reverse-mode/top-down とforward-mode/bottom-up は行列の基本変形の適用の順番の違いに帰着される.行列の基本変形の適用の順番を工夫すると reverse-mode/top-down と forward-mode/bottom-up の中間的な算法を作成することも可能.

参考文献

[1]

Andreas Griewank and Andrea Walther. Evaluating Derivatives. Society for Industrial and Applied Mathematics, jan 2008. ISBN 978-0-89871-659-7. URL: http://epubs.siam.org/doi/book/10.1137/1.9780898717761, doi:10.1137/1.9780898717761.