自動微分
Automatic differentiation
プログラムで定義された関数を解析し、偏導関数の値を計算するプログラムを導出する技術 ref 数学的に正確
フォワードモードの自動微分
ある入力が各ノードにどのように作用するのかを追跡する
全ての各ノードに$ \frac{\partial}{\partial 入力}を適用する
出力の次元が入力の次元より大きいときは効率がいい
悪い方の例
100万の入力、1つの出力のとき
微分係数を得るためにグラフを100万回行き来する必要がある
http://colah.github.io/posts/2015-08-Backprop/img/chain-forward-greek.png
各ノードで$ \frac{\partial}{\partial X}が求まる
リバースモードの自動微分
グラフの出力から入力へ向かって計算する
各ノードがある出力にどう作用するのかを追跡する
全ての各ノードに$ \frac{\partial 出力}{\partial}を適用する
入力の次元が出力の次元より大きいときは効率がいい
http://colah.github.io/posts/2015-08-Backprop/img/chain-backward-greek.png
各ノードで$ \frac{\partial Z}{\partial}が求まる
用途
機械学習フレームワーク
自動車工学
気候モデリング
etc.
Haskellで実装
参考
===============================================================
この辺の記事と統合する
めっちゃ詳しい
しらべる
38行
pytorch
参考
rust