1. 程式人生 > >《吳恩達深度學習工程師系列課程之——改善深層神經網路:超引數除錯、正則化以及優化》學習筆記

《吳恩達深度學習工程師系列課程之——改善深層神經網路:超引數除錯、正則化以及優化》學習筆記

本課程分為三週內容:

  1. 深度學習的使用層面
  2. 優化演算法
  3. 超引數除錯、Batch正則化和程式框架

WEEK1 深度學習的使用層面

1.建立神經網路時選擇:
神經網路層數
每層隱藏單元的個數
學習率為多少
各層採用的啟用函式為哪些
2. 深度學習應用層面有
自然語言處理NLP、計算機視覺Vision、語音識別Speech、結構化資料等。
3. 資料分類:訓練集、 驗證集、測試集
4. 資料的獲取方式:網頁抓取等
5. 分析訓練集訓練演算法產生的誤差和驗證集驗證演算法產生的誤差,來判斷演算法是否存在高偏差或高方差
6. 當出現高偏差時,應換更大的神經網路,或更多隱藏單元,更長時間更先進演算法等等,反覆嘗試直至低方差。
7. 當出現高方差時,應採用更多資料,或採用正則化來減少過擬合,或更先進的演算法等等。
8. 通常用訓練驗證集來診斷演算法是否存在偏差或方差。
9. L2正則化是最常見的正則化型別。如果使用L1正則化,W最終會是稀疏的。正則化引數通常使用驗證集或交叉驗證。
10. 神經網路加正則化,是給損失函式加範數平方公式。範數由backprop函式給出對w的偏導數求得。
11. 如果正則化引數變得很大,引數W很小,z也會相對變小。如果J已經有一個全新的定義,你用的是原函式J,也就是第一個正則化項,可能會看不到單調遞減現象。因此,為了除錯地圖下降,務必使用新定義的函式,它包含第二個正則化項。
12. 另一個實用的正則化方法——dropout(隨機失活)。它可以隨機刪除網路中的神經單元。通L2正則化,實施後會壓縮權重,並完成一些預防過擬合的外層正則化。dropout需要設定每一次的keep-prob值,即每層剩餘比例。其在計算機視覺領域應用廣泛。缺點是代價函式J不再被明確定義
13. early stopping,提早結束神經網路,獲得合適的W值。
14. 機器學習包括幾個步驟:1,選擇一個演算法來優化代價函式J,可用梯度下降法,Momentum,RMSprop和Adam等等;2,優化代價函式J後,如果發生過擬合,可通過正則化、擴增資料等;3,超引數激增,選出可行演算法變得複雜,如果用一組優化代價函式J,機器學習會變得簡單。優化時只需關注W和b,J(w,b)的值越小越好。只需要減少這個值,不用關注其他的。預防過擬合還可以減少方差。
15. 訓練神經網路時,其中一個加速訓練的方法就是歸一化輸入。其有兩個步驟:第一步是零均值化,即移動訓練集,直到它完成零處置化。第二步是歸一化方差。目的是讓代價函式J優化起來更簡單更快速。尤其是面對輸入值的範圍有很大的差異時。
這裡寫圖片描述


這裡寫圖片描述
16. 在訓練深層神經網路時面對的一個問題:梯度消失或梯度爆炸。即導數或坡度有時會變得非常大,或非常小。權重的變化,導致超引數呈現指數級增長或下降。這個問題需要通過為權重矩陣初始化合理值。
17. 反向傳播backprop時,有一個梯度檢驗,作用是確保backprop正確實施。剃度逼近時,使用雙邊誤差的方法更逼近導數,結果也最準確。
18. 使用雙邊誤差,來判斷函式是否實現了正確的偏導。用這個方法可以檢驗反向傳播是否得以正確實施。
19. 梯度檢驗只能用於除錯bug,不能用於訓練。如果演算法的梯度檢驗失敗,要檢查所有項,並試著找出bug。一般關閉 dropout用梯度檢驗進行雙重檢查。

WEEK2 優化演算法

  1. 優化演算法,使神經網路執行得更快。
  2. 機器學習的應用是一個高度依賴經驗的過程。
  3. Mini-batch梯度下降法。使用batch梯度下降法,一次遍歷訓練集只能讓你做一個梯度下降。使用Mini-batch梯度下降法,一次遍歷訓練集,能夠做所需個數的梯度下降。多次遍歷訓練集還需要一個while迴圈設定另一個for迴圈。從而一直處理訓練集,直到最後收斂到一個合適的精度。Mini-batch的值要取合適,1則隨機,有波動;m則為baich梯度下降。選取原則:當訓練資料集過小時,直接使用batch梯度下降法,小於2000個;過大時,Mini-batch,64-512大小,設定為2的次方,程式碼執行速度較快。此時輸入和輸出要符合GPU/CPU。
  4. 指數加權平均
  5. 指數加權平均的偏差修正
  6. 動量梯度下降法momentum
  7. RMSprop
  8. Adam 優化演算法
  9. 學習率衰減,學習率的設定,指數衰減。

WEEK3 超引數除錯

  1. 除錯處理,取值的優先次序。隨機初始化,粗糙到精細的搜尋過程。
  2. 為超引數選擇合適的範圍
  3. 正則化網路的啟用函式
  4. 將Batch Norm擬合進神經網路
  5. Softmax迴歸
  6. 訓練一個Softmax
  7. 深度學習框架
  8. TensorFlow