Coursera > Deep Learning Specialization > Course 2 : Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization > Week 1 Practical aspects of Deep Learning の個人的な受講記録。
概要
Course 2 では、モデルの精度を上げたり学習速度を向上させるための基本的なテクニックを学ぶ。3週分の講座から構成される。
- Week 1 Practical aspects of Deep Learning
- Week 2 Optimization algorithms
- Week 3 Hyperparameter tuning, Batch Normalization and Programming Frameworks
今回は Week 1 の受講記録。
Setting up your Machine Learning Application
Train / Dev / Test sets
データの分割について。(Train/Dev/Test)
ビッグデータを扱う場合はDev/Testデータセットの比率は少なくても良い(1%やそれ未満など)。TrainとDevデータセットの Distributions (日本語だと「分散」?)が異なることはしばしばあり得るが、DevとTestのデータの Distributions は揃えるべき。DevとTestで全然違うところから持ってきたデータを使っちゃうとデータの傾向が異なるからうまくいかないよ、ということかと。
Bias / Variance
high bias → under fitting
high variance → over fittng
Basic Recipe for Machine Learning
high bias (under fitting) の対策
- bigger network
- train longer
- (Neural Network Architecture の見直し)
high variance (over fitting) の対策
- more data
- regularization
- (Neural Network Architecture の見直し)
最近のディープラーニングの世界においては、high biasとhigh varianceは必ずしもtrade offの関係ではない。
Regularizing your neural network
Regularization
over fitting を解消するためのテクニックのひとつ、Regularization(正則化)。L2 norm や L1 norm がある。L2 regularization のほうが一般的。L1 regularization はスパース化(Wベクトルの要素の多くが0になる)の効果が期待できるが、L2のほうがずっとよく使われる。
※そしてこの講座でもこれ以降は L2 regularization のみ使われているっぽい。
Weight Decayとも呼ばれる。
Why regularization reduces overfitting?
Wの値が抑制され、ネットワークがシンプルな方向に訓練される。
Dropout Regularization
Dropout も Regularization の手法のひとつで、 OverFitting の解消に効果がある。
訓練時、各レイヤの keep_prob の割合だけユニットを残して、それ以外はOFFにする。
Inverted Dropout
Understanding Dropout
ドロップアウトを直感的に理解するための説明
・・・だと思うけど、いまいち理解できず。大勢に影響はなさそうなので気にせず飛ばす。
Other regularization methods
その他のRegularization手法。
- Data Augmentation
- データの水増し(画像サイズの反転、切り抜き、回転など)
- Early Stopping
- error値が悪化する前に訓練を切り上げる
Setting up your optimization problem
Normalizing inputs
データの正規化
訓練のスピードをアップすることができる
入力データの平均を0、分散を1にする
Vanishing / Exploding gradients
勾配消失、勾配爆発
Weight Initialization for Deep Networks
重みの初期化。
たいていのアクティベーション関数にはHe initialization
TanH(Sigmoidも?)はXavier initialization
Numerical approximation of gradients
微分の近似値の求め方
Gradient checking
勾配確認
バックプロパゲーション処理のデバッグ手法のひとつ。
コスト関数を2回呼び出して偏微分の近似値を求める
Gradient Checking Implementation Notes
Gradient checkingはあくまでもデバッグ目的。トレーニング時は無効にすること。
Dropout時は使えない
Programming assignments
Initialization
0で初期化、ランダム初期化、heの初期化で成績を比較する
Regularization
Non Regularization、L2 Regularization、Dropout で比較する
Gradient Checking
Gradient Checkingによってバックプロパゲーション関数の正当性を評価する
Heroes of Deep Learning (Optional)
Yoshua Bengio interview
あとで見ます・・