書籍3 ステージ3の学習

ステージ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 の用途:ヘッセ行列とベクトルの積

更新日:

Copyright© 深層・機械学習/人工知能学習の記録 , 2024 All Rights Reserved Powered by STINGER.