Deep Neural Networks
CouseraのDeepLearningのコース. コース1の最終週分です.
Deep L-layer neural network
2層や3層の浅いモデルでは,性能的に限界があるので,より高い性能を求めて深いニューラルネットワークが活用されるようになった.
浅いニューラルネットワークでは使っていなかったが,新たな記法としてL(総ノード数)を今後は使っていく.
Forward Propagation in a Deep Network
深いネットワークにおける順伝播を定式化する. まず,単純に1サンプルに対する順伝播を考えると,図1のように定式化できる.
これをmサンプルに拡張し,ベクトル化すると,図2のように表せる.
これがDeepNetworkにおける順伝播の式となる.
Getting your matrix dimensions right
各実装を行なっていく上で,各行列のサイズを意識してコーディングしていくとバグが減らせる.そこで,この章では各行列のサイズを明らかにする.
図3のようなネットワークを考える.
この時,1サンプルのみを考えると各行列のサイズは図4のようになる.
さらに,これをmサンプルに拡張すると図5のようになる.
なお,b^[l]については,サンプルごとに異なるものを用いるのではなく全てのサンプルに対して同様のものを使い回すこと.
Why deep representations?
深いネットワークにすると,より複雑なことができるようになる.
これをイメージ的に説明する.
例えば顔画像認識のネットワークについて,はじめの方の層は例えば画像のエッジや境界線を検出するような単純なものを検出するために働く. これが,中段の層になると.下位の層の単純なものを組み合わせて例えば目や鼻を検出するようなことができるようになる.
さらに深い層になると,目や鼻を組み合わせて様々な顔のパターンを検出できるようになることで,顔の画像認識が高い精度で実現できる.
このように,下位の層で抽出したシンプルな特徴を組み合わせて,深い層では複雑なパターンの認識ができるようになる.
これによって,より例えば画像認識であればより精度が高まるなど,複雑なことができるようになる.
画像の例だけでなく,例えば音声認識では,下位の層は音の上がり下がりなどの簡易的な特徴を捉えるが,深い層になるについれて音素を識別し,さらに深い層ではそれを組み合わせて単語を識別したりできるようになる.
これが,深い層でより複雑なことができるようになることについての直感的な説明である.
BUilding blocks of deep neural networks
これまでの内容を一枚の図でまとめると図6のようになる.
ここには深いネットワークにトレーニングデータが入力され,推定値が計算され,その誤差を持ってネットワークが学習するといった1stepが示されている.
これを何度も繰り返して,モデルを学習する.
Forward and Backward Propagation
図6で行う具体的な計算を図7にまとめる.
Parameters vs Hyperparameters
ニューラルネットのパラメータはこれまで見て来た通り,Wやbがある, これらとは別に,アルゴリズムに与えないといけないHyperParameterがいくつかある. 以下にその一覧を示す.
- Learning rate α
- イテレーション数(学習回数)
- 隠れ層のレイヤー数(L)
- 各レイヤーのユニット数(n^[1],...,n^[L])
- 活性化関数としてどれを選ぶか
これらのhyperparameterはアプリケーション毎に調整する必要がある. コスト関数の収束度合いからLearning rateを調整したり,レイヤ数を調整したり,CrossValidationの結果からも様々なHyperparameterを調整する必要がある.
What dose this have to do with the brain?
ニューラルネットの説明として,よく使われる脳に似ているという表現は,ニューラルネットの研究の進歩に伴って,陳腐化してきている.
シナプスとニューロンの関係性はわかりやすい類似性がある一方で,その学習過程などについては,脳の学習機構も同様に逆伝播が活用されているのかそうではないのかなど,まだ解明されていない.
CNNの文脈では脳の構造から着想を得た部分が大きいが,一方で通常のニューラルネットについては脳との関連性はあまりなくなって来ているのが現状.
キャッチーでわかりやすいが,厳密性はあまりなくなっているのが現状.