Improve Deep Neural Networks
在這個章節,我們會學習到深度學習的「魔法」,而不只是將其作為黑盒子使用。瞭解如何控制性能,並有系統地取得良好的結果:
- 了解業界在構建深度學習應用的最佳實踐;
- 能夠使用常見的神經網路技巧,如初始化、L2 正則化、Dropout 正則化、批次正規化和梯度檢查;
- 能夠應用各種優化演算法,如小批次梯度下降、動量、RMSprop、Adam,以及檢查收斂;
- 瞭解如何設定新的最佳實踐,如訓練/開發/測試集、分析偏差/變異;
- 掌握 TensorFlow 的使用。
Overview
📄️ 1 - Setting up Application
這篇文章涵蓋如何設定一個機器學習應用,包括訓練 / 驗證 / 測試資料集的比例,訓練和測試資料集的分布不同時對結果的影響,以及如何尋找偏差和變異之間的平衡。此外,我們還討論了在大數據深度學習時代,建構更大的神經網路和取得更多資料對於偏差和變異之間的影響。
📄️ 2 - Regularizing Neural Network
Regularization 是 machine learning 中常見的技術,用於限制模型參數和權重,以減少模型對訓練數據過度擬合的可能性。而當我們將其套用到 Neural Network 上時,也有 Frobenius Norm 以及 Weight Decay 等技術可以做到 regularization。此外,我們也會使用 Dropout Regularization 來避免 Overfitting,而 Data Augmentation 和 Early Stopping 也是可以用來避免 Overfitting 的方法。本文將會詳細解釋這些技術,以及它們彼此之間的關係。
📄️ 3 - Setting up Optimization
在本篇文章中,我們將學習關於如何優化 cost function,也就是 gradient descent 方法。我們將學習到 normalize inputs、vanishing / exploding gradient 以及 weight initialization 等方法,以及 gradient checking 的技巧來確保訓練正確性。
📄️ 4 - Optimization algorithms
本文介紹了有助於進行深度學習最佳化的算法,包括 Mini-Batch Gradient Descent 以及 Exponentially Weighted Averages。因為 Batch Gradient Descent 對整個 training set 進行一次 gradient descent,每個 iteration 時間較長,訓練過程較慢。Mini-Batch 將 Batch 和 Stochastic Gradient Descent 優點合併,但需要找出適合的 batch size。Exponentially Weighted Averages 是一個用於分析移動平均的算法,可以減緩短期波動,反映長期趨勢。
📄️ 5 - Hyperparameter, Batch Normalization, Softmax
本文探討了訓練深度學習模型時最常用的兩個觀念,包括調整超參數 (hyperparameter tuning) 以及使用批次正規化 (batch normalization)。文中比較了不同的調整超參數的方法,並列出了調整的區間以及最適當的範圍。文章接著介紹了批次正規化,並說明了在深度學習模型中如何使用批次正規化來加快訓練速度。文中更進一步介紹了 Softmax Regression 以及其 Cost Function 和 Gradient Descent 的用法,並且提及了常見的深度學習框架,以及如何選擇合適的框架以及框架的重要性。