Coursera > Deep Learning Specialization > Course 2 : Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization > Week 3 Hyperparameter tuning, Batch Normalization and Programming の受講記録。
概要
Course 2 は3週分の講座から構成される。
- Week 1 Practical aspects of Deep Learning
- Week 2 Optimization algorithms
- Week 3 Hyperparameter tuning, Batch Normalization and Programming Frameworks
今回は Week 3 の受講記録。Batch Normalizationが登場。
Hyperparameter tuning
Tuning process
チューニングが大事なパラメータ
- 最も大事
- α(学習率)
- その次に重要
- β(Momentum項) 0.9が良いデフォルト値
- ミニバッチサイズ
- Hidden Layerのユニット数
- その次
- レイヤー数
- Learning Rate Decay
- あまりチューニングしない
- Adamのパラメータ : β1=0.9 , β2=0.999 , ε=10**-8
グリッドサーチはあまり使わない。ランダムサーチのほうが良い。fine sampling schemeというのも良い。
Using an appropriate scale to pick hyperparameters
ハイパーパラメタを探索する際は適切なスケールを選択することが重要。
Hyperparameters tuning in practice: Pandas vs. Caviar
ハイパーパラメータのチューニングには2つのアプローチがある。
1.少数のモデルにすこしずつ手を加えて育てていく
2.大量のモデルを同時並行でトレーニングする。いろんなパラメータを同時に試すことができる。
2はコンピュートリソースが潤沢にあるような場合に採用することができる。
Batch Normalization
Normalizing activations in a network
入力データの正規化だけでなく、各層のOUTPUT(つまり次の層へのINPUT)もそれぞれ正規化することでtrainingがスピードアップする、という考え方。正規化のタイミングは活性化関数を適用する前とするか後とするかで議論があるが、活性化関数の適用前に正規化することが多い。ただし隠れ層の入力は平均0と分散1がベストではない。γとβを使って分散をスケールし、平均をずらす。
Ztilda = γ*Znorm + β
γとβは BartchNorm における学習可能なパラメータ。
Fitting Batch Norm into a neural network
Mini Batch + Batch Norm の実装。
Why does Batch Norm work?
なぜBatch Normが機能するのか?の説明。
共変量シフト = covariate shift
Batch Norm は内部共変量シフトを抑制する。
(以下、参考になります)
- Batch Normalization
- [Survey]Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
- Deep LearningにおけるBatch Normalizationの理解メモと、実際にその効果を見てみる
Batch Norm at test time
ここまでミニバッチ単位で正規化する処理を見てきたが、1件ずつのデータを処理するテストフェーズではどうするのか?
→exponentially weighted average で近似化する
Multi-class classification
Softmax Regression
唐突にソフトマックス回帰
Training a softmax classifier
softmax regression の training
Introduction to programming frameworks
Deep learning frameworks
Python と NumPY で頑張らなくても、 DeepLearning のフレームワークがいろいろある。
フレームワークを選ぶ上で重要なポイントは以下の通り。
- プログラミングの容易さ
- 実行速度(大量データのトレーニング速度)
- 真にオープンなフレームワークかどうか
単一の企業のコントロール下にあるのではなく、優れたガバナンスのもと、末永くオープンソースであり続けられるかどうか。
TensorFlow
TensorFlowの導入。
Programming assignment
TensorFlow
TensorFlow Tutorial