課程回顧-Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization

訓練、驗證、測試

劃分的量

  • If size of the dataset is 100 to 1000000 ==> 60/20/20
  • If size of the dataset is 1000000 to INF ==> 98/1/1 or 99.5/0.25/0.25

要保證數據來自一個分佈

誤差方差分析

若是存在high bias

  • 嘗試用更大的網絡
  • 嘗試換一個網絡模型
  • 跑更長的時間
  • 換不一樣的優化算法

若是存在high variance

  • 收集更多的數據
  • 嘗試正則化方法
  • 嘗試一個不一樣的模型

通常來講更大的網絡更好git

正則化

正則化減小過擬合的intuition

太大會致使其爲0github

Dropout

  • 原始的dropout
  • Inverted Dropout
    咱們稍微將 Dropout 方法改進一下,使得咱們只須要在訓練階段縮放激活函數的輸出值,而不用在測試階段改變什麼。這個改進的 Dropout 方法就被稱之爲 Inverted Dropout 。比例因子將修改成是保留機率的倒數,即

dropout分析

  • 由於咱們不可以過度依賴一個特徵,dropout能夠必定程度將權重分出去
  • 咱們能夠在不一樣的層設置不一樣的dropout
  • 輸入層的dropout應該接近1,由於咱們須要從中學習信息
  • CNN中dropout普遍應用
  • dropout帶來的問題是調試困難,一般咱們須要關掉dropout調試,確認無誤再繼續用dropout

其它正則化方法

數據增長(data augmentation)

就是經過一些變換獲得新的圖片(這種實際上是在圖像領域最爲普遍應用,可是思想能夠推廣)算法

early stopping

就是在迭代中選擇驗證錯誤再也不下降的點

好處是不用調超參,壞處是it makes us think about something else more than optimize W's and b's.網絡

ensemble

訓練多個模型,組合
能夠帶來2%左右的提高,減小泛化偏差dom

歸一化輸入

歸一化能夠加速訓練

歸一化的步驟

  • 計算均值
  • 全部數據減去均值
  • 計算方差
  • x/=variance

歸一化應該應用於:訓練、驗證、測試

梯度消失/爆炸

這是訓練深度學習難的一個點svg

權重初始化

是解決梯度消失/爆炸的一個部分的解決方案
對於sigmoid和tanh函數

np.random.rand(shape)*np.sqrt(1/n[l-1])

對於relu學習

np.random.rand(shape)*np.sqrt(2/n[l-1]) #n[l-1] In the multiple layers.

一個方差是 1 / N x ,另外一個是 2 / N x 測試

經過數值近似計算梯度

  • 注意添加正則項的損失函數

優化算法

mini-batch

  • 爲了利用向量化,batch大小應該是2的指數
  • 注意CPU/GPU內存大小

momentum

計算權重的指數加權平均
優化

RMSprop

Root mean square prop

使用這個算法能夠選擇較大的學習率

Adam

Adaptive Momentum Estimation。其實就是把rmsprop和momentem放一塊兒了,另加了一個糾正

{ v d W [ l ] = β 1 v d W [ l ] + ( 1 β 1 ) J W [ l ] v d W [ l ] c o r r e c t e d = v d W [ l ] 1 ( β 1 ) t s d W [ l ] = β 2 s d W [ l ] + ( 1 β 2 ) ( J W [ l ] ) 2 s d W [ l ] c o r r e c t e d = s d W [ l ] 1 ( β 1 ) t W [ l ] = W [ l ] α v d W [ l ] c o r r e c t e d s d W [ l ] c o r r e c t e d + ε

其中推薦 β 1 = 0.9 , β 2 = 0.999 , ϵ = 10 8

深度神經網絡中的主要問題不是局部最小點,由於在高維空間中出現局部最優的可能性很小,可是很容易出現鞍點,鞍點會致使訓練很慢,因此上面的幾個方法會頗有用

調參

順序

Learning rate.
Mini-batch size.
No. of hidden units.
Momentum beta.
No. of layers.
Use learning rate decay?
Adam beta1 & beta2
regularization lambda
Activation functions

批規範化Batch Normalization

能夠加速訓練
和前面的對於輸入數據的處理不同,這裏考慮的是對於隱層,咱們可否對A[l]進行操做,使得訓練加快。

這裏 γ β 是參數


解決了梯度彌散的問題
批規範化其實作了一點正則化的工做,若是你但願減弱這種效果能夠增大批大小。
測試用須要估計均值和方差

Reference

https://github.com/mbadry1/DeepLearning.ai-Summary



相關文章
相關標籤/搜索