自動微分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

自動微分(じどうびぶん、アルゴリズム微分とも)とは、プログラム定義された関数解析し、偏導関数の値を計算するプログラムを導出する技術である。したがって

のいずれとも異なる。

英語では Automatic differentiation (あるいは単に AD) と呼ばれる。

導出[編集]

その導出方法には大きく分けて2 種あり、それらは、ボトムアップ型自動微分(狭義の自動微分)、トップダウン型自動微分(高速自動微分) という.

ボトムアップ型自動微分は、フォーワード型自動微分と呼ばれ、トップダウン型自動微分は、バックワード型自動微分(後退型自動微分)、リバース型自動微分とも呼ばれる。

実装[編集]

自動微分の実装方法には大きく分けて2種類あり、関数の値を計算するプログラムを読み込み、導関数の値を計算するプログラムを出力する、ソースコードの変換を行う方法と、オペレータオーバーローディングを用いる方法がある。

ソフトウェア[編集]

  • C/C++
Package License Approach Brief Info
ADC Version 4.0 nonfree オペレータオーバローディング
ADIC free for noncommercial ソースコードの変換 forward mode
AD Model Builder BSD オペレータオーバローディング
ADOL-C CPL 1.0 or GPL 2.0 オペレータオーバローディング now a part of Coin-OR project
FADBAD++ free for
noncommercial
オペレータオーバローディング
CppAD CPL 1.0 or GPL 2.0 オペレータオーバローディング a part of Coin-OR project
OpenAD depends on components ソースコードの変換
Sacado GPL オペレータオーバローディング A part of the Trilinos collection, forward/reverse modes.
TAPENADE Free for noncommercial ソースコードの変換
  • Fortran
Package License Approach Brief Info
ADF Version 4.0 nonfree オペレータオーバローディング
ADIFOR >>>
(free for non-commercial)
ソースコードの変換
OpenAD depends on components ソースコードの変換
TAPENADE Free for noncommercial ソースコードの変換
  • Matlab
MAD (nonfree, オペレータオーバローディング)
  • Python
Package License Approach Brief Info
FuncDesigner BSD オペレータオーバローディング you can perform numerical optimizations of systems coded in FuncDesigner by OpenOpt
ScientificPython CeCILL オペレータオーバローディング see modules Scientific.Functions.FirstDerivatives and Scientific.Functions.Derivatives
pycppad BSD オペレータオーバローディング wrapper for CppAD, second order forward/reverse
pyadolc BSD オペレータオーバローディング wrapper for ADOL-C, arbitrary order forward/reverse

参考文献[編集]

  • 光一, 久保田; 正夫, 伊理 (1998). アルゴリズムの自動微分と応用. 現代非線形科学シリーズ. 3. コロナ社. ISBN 978-4339026023. 
  • (1991), 伊理 正夫, 久保田,光一, "高速自動微分法(I)", 応用数理 1(1), 17-35, 19910315, 日本応用数理学会.

外部リンク[編集]