ステージ3 高階微分を実現する
ステップ25 計算グラフの可視化(1) ステップ26 計算グラフの可視化(2) ステップ27 テイラー展開の微分 ステップ28 関数の最適化 ステップ29 ニュートン法を用いた最適化(手計算) ステップ30 高階微分(準備編) ステップ31 高階微分(理論編) ステップ32 高階微分(実装編) ステップ33 ニュートン法を使った最適化(自動計算) ステップ34 sin 関数の高階微分 ステップ35 高階微分の計算グラフ ステップ36 高階微分以外の用途 |
計算グラフの可視化
Graphviz のインストール (https://graphviz.GitHub.io/download/)
MacOS Homebrew | $ brew install graphviz |
Ubuntu | $ sudo apt install graphviz |
dot のバージョンの確認(動作確認)
$ dot -v |
テキスト(sample.dot)から画像(sample.png)への変換方法
$ dot sample.dot -T png -o sample.pngの |
DOT 言語への変換関数
変数の変換 _dot_var |
関数の変換 _dot_func |
全体の変換 get_dot_graph |
画像への変換 plot_dot_graph |
sin 関数の実装
class Sin def forward def backward def sin |
テイラー展開による sin 関数の実装
def my_sin |
ローゼンブロック関数に、勾配降下法を用いて、最小値を求める(最適化)
def rosenbrock(x0,x1): y = 100 * (x1 – x0 ** 2) ** 2 + (x0 – 1) ** 2 return y |
29 ニュートン法を用いた最適化(手計算)
・ニュートン法による最適化の理論
・ニュートン法による最適化の実装
30 高階微分(準備編)
・確認作業①:Variable のインスタンス変数
・確認作業②:Function クラス
・確認作業③:Variable クラスの逆伝搬
31 高階微分(理論編)
・逆伝搬で行う計算
・逆伝搬で計算グラフを作る方法
32 高階微分(実装編)
・新しい DeZero へ
・関数クラスの逆伝搬
・より効率的な逆伝搬(モードの追加)
・__init__.py の変更
33 ニュートン法を使った最適化(自動計算)
・2階微分を求める
・ニュートン法による最適化
34 sin関数の高階微分
・sin 関数の実装
・cos 関数の実装
・sin 関数の高階微分
35 高階微分の計算グラフ
・tanh 関数の微分
・tanh 関数の実装
・高階微分の計算グラフの可視化
36 高階微分以外の用途
・double backprop の用途
・ディープラーニングの研究での使用例
コラム:ニュートン法と double backprop の補足
・多変数関数のニュートン法
・ニュートン法の問題点
・duble backprop の用途:ヘッセ行列とベクトルの積