Deep learning specializationを受講中です.
- Neural Networks and Deep Learning
- Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
- Structuring Machine Learning Projects
- Convolutional Neural Networks
- Sequence Models
上記の全5コース.受講を終えたコースについて簡単な感想を残します.
Neural Networks and Deep Learning
Introduction to deep learning
イントロダクション.
Neural Networks Basics
ニューラルネットワークと言いつつ,ひたすらロジスティック回帰をやる.(何も間違ってはいないけど)
計算グラフや微分計算を含めて,基礎的なことを全部やるので,コース1の中ではこの週が一番大事.
入力テンソルの型を(特徴数,サンプル数)と扱うのが特徴的.(むしろこれが主流?)
(サンプル数,特徴数)とするのが一般的だと思っていたので,最初は「何故入れ替えた?」と思ったけど,計算のしやすさ(転置行列を何度もとる必要がない)を考えると(特徴数,サンプル数)の表現の方が良い.業界標準にしてほしい.
Shallow neural networks
隠れ層を追加して,少しNeural Networkっぽい様相を呈してくる.
(しかし,やっていることはほとんどロジスティック回帰だ! Neural Networkはロジスティック回帰で出来ている!)
Deep Neural Networks
隠れ層をさらに増やしたDeepなNetworkを扱う.
新しい内容は無いが「Forward/Back Propagation をどういう処理のまとまりとして捉えるか?」という点が整理される.「各レイヤーが担う処理をカプセル化して,あとは何も考えずに層を増やしていきましょう!」というお話.
Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
Practical aspects of Deep Learning
この週のテーマは大きく分けると「過剰適合の抑制」と「いい感じに学習を進めるための工夫」
「過剰適合を抑制する手段」としては,正則項を加える・Dropout・データ拡張・Early-Stopping 等々.Early-Stoppingは個人的にはあんまり好きじゃないのだけれど,Andrew先生的にもあまり推していないご様子.(「『コスト関数Jを小さくしたい』,『Over fittingを抑制したい』という2つのことを同時にやろうとしている所が微妙だよね」的な事を言っていた気がする)
「いい感じに学習を進めるための工夫」としては,データの正規化や重みパラメータの初期化(Xavier, He の初期値)についての話.Xavierの初期値の説明は,6分ほどの動画でさらっと言っているけど,よく分からなかったので書籍等で捕捉.オライリー・ジャパンの『ゼロからつくるDeep Learning』の「6.2 重みの初期値」の説明がとても分かりやすかった.)
Optimization algorithms
ミニバッチ学習について,とか,各種最適化手法(SGD, RMSprop, Adam)について.プログラミング課題の中で「Optimizerを変えるだけで結果がかなり違う」ていうのが体感できてよかった.
Hyperparameter tuning, Batch Normalization and Programming Frameworks
ハイパーパラメータのチューニングと,Batch Normalization について.
プログラミング課題はほとんどTensorflowのチュートリアルなので楽チン.
Structuring Machine Learning Projects
ML Strategy (1)
(2週目もそうだが) Deep Learning の開発をする上で,どういう所に気を付けるべきか?というお話.Human-Error-Rateとかベイズ最適誤差とかも考慮して,開発の方針を決める.
ML Strategy (2)
エラー分析の考え方について.(優先順位は大事というお話.ラベリングが正しくないデータが多少混じっていても,実はそんなに問題では無いかもしれないよ?みたいな例を教えてくれる)
後半は,転移学習とかマルチタスク学習とか,テクニック的な話も少しある.
演習課題について
Pythonのnotebook形式で取り組みやすい. (Octaveとは何だったのか...)
Cousera Machine Learning と比べると演習課題が簡単. (というより,あまり理解していなくても関数の引数と戻り値をみてパズル的に回答が可能)