自動微分(Automatic differentiation)のSurvey論文の参照|微分をプログラミングする #2
当シリーズでは、近年の深層学習の発展に関連するトレンド的に微分のプログラミングの重要度は増していると思われるので、関連文脈の取りまとめを行なっています。
#1では誤差逆伝播などにも用いられている「自動微分(Automatic differentiation)」の概要について確認しました。
#2では引き続き自動微分について、下記のSurvey論文を参照しながら確認していきます。
[1502.05767] Automatic differentiation in machine learning: a survey
以下、目次になります。
1. 論文の例で自動微分について再確認する
1-1. Forward mode AD(ボトムアップ型自動微分)
1-2. Reverse mode AD(トップダウン型自動微分)
1-3. ロジスティック写像(logistic map)の例の確認
2. 自動微分と機械学習
3. まとめ
1. 論文の例で自動微分について再確認する
[1502.05767] Automatic differentiation in machine learning: a survey
1節では上記のSurvey論文の例を元に#1の内容を振り返りつつ、自動微分について再度確認を行っていきます。以下、論文のSection2の"What AD Is Not"とSection3の"AD and Its Main Modes"を中心に確認します。
1-1. Forward mode AD(ボトムアップ型自動微分)
1-1節ではSection3-1の"Forward Mode"について確認します。これは#1で確認したボトムアップ型の自動微分の内容と同様です。
式の定義に関しては基本的に上記で、関数に対して、中間変数(intermediate variable)のを定義して、のに関する偏微分をと定義しています。この定義がForward mode AD(ボトムアップ型自動微分)において中核的な役割を果たします。
関数に関する自動微分については上記のように、行うことができます。左のPrimal Traceは値を追っており、右のTangent Traceは微分の値を追っています。それぞれ、文字での計算に加えて、具体的な値も代入していることも確認できます。、をそれぞれに値として与えており、かつ、の偏微分であるので、、を与えています。
また、ここでの関数のは上記のような計算グラフ(Computational graph)で表現できることも抑えておきましょう。
1-2. Reverse mode AD(トップダウン型自動微分)
1-2節ではSection3-2の"Reverse Mode"について確認します。これはトップダウン型の自動微分の内容と同様です。
1-1節のFoward mode ADと同様に上記のについて取り扱っていきます。
式の定義に関しては基本的に上記のように、偏微分を定義しています。中間変数のを入力のに対して偏微分を行っていたForward Modeに対して、Reverse Modeでは出力のをで微分することを考えています。この考え方は一般的な逆伝播(backpropagation)のアルゴリズムに一致しています。
偏微分を元に計算を行った結果が上記のようになります。これはニューラルネットワーク の学習の際に用いる誤差逆伝播と同様なイメージで理解すれば良さそうです。
1-3. ロジスティック写像(logistic map)の例の確認
以外の例についても簡単に確認しておければということで、1-3節ではSection2で紹介されているロジスティック写像の例の確認を行います。
上記のようにロジスティック写像の例において、Foward Mode的な記載が紹介されています。
2. 自動微分と機械学習
2節では参照のSuveryのSection4の"AD and Machine Learning"の内容を取り扱います。
上記が冒頭部の記載ですが、勾配を用いた最適化(Gradient-Based Optimization)やbackpropagationについて言及されています。
パフォーマンス比較としては、上記のようにReverse Modeの効率が良いと記載されています。
あまり詳しい解説がなかったので、ここでは軽く流し、#3でトップダウン自動微分(Reverse mode AD)と誤差逆伝播について詳しく取り扱えればと思います。
3. まとめ
#2では自動微分について、Survey論文を参照しながら確認を行いました。
#3では、トップダウン自動微分(Reverse mode AD)と誤差逆伝播について詳しく確認を行います。