1. 程式人生 > >神經網路與深度學習 筆記5 過度擬合和正則化

神經網路與深度學習 筆記5 過度擬合和正則化

1.過擬合

模型複雜而訓練樣本不足,過度訓練,會導致過度擬合。

訓練資料集上的代價表現是越來越好的,測試集上的代價越來越差。訓練資料上的分類準確率一直在提升接近 100%,而測試準確率僅僅能夠達到 82.27%。

網路幾乎是在單純記憶訓練集合,而沒有對數字本質進行理解能夠泛化到測試資料集上。

避免過擬合的方法:early stopping,L1、L2正則化,dropout, 人為擴充套件訓練資料

2. early stopping

資料集分為三部分:training_data、validation_data,testing_data。如果設定超引數是基於 test_data 的話, 會得到過度擬合於 test_data 的超引數。藉助 validation_data 來克服這個問題,在訓練過程中,用validation_data來確定一些超引數(如迭代期epoch, 學習速率η)。然後一旦獲得了想要的超引數,最終我們就使用 test_data 進行準確率測量。

在每個迭代期的最後都計算在validation_data上的分類準確率。一旦分類準確率已經飽和,就停止訓練。這個策略被稱為提前停止(early stopping)。

3. L2正則化(權重衰減)

正則化的交叉熵:


正則化的二次代價函式:

 

L2正則化就是在代價函式後面再加上一個正則化項:

 

正則化可以當做一種尋找小的權重和最小化原始的代價函式之間的折中。這兩部分之前相對的重要性就由 λ 的值來控制了:λ 越小,就偏向於最小化原始代價函式,反之,傾向於小的權重。

將隨機梯度下降演算法應用在一個正則化的神經網路上,對上式求偏導數得:

 

偏置的偏導數不變化, 偏置的梯度下降學習規則不會發生變化,權重的學習規則:

 

 和通常的梯度下降學習規則相同,除了通過一個因子1ηλn重新調整了權重w。這種調整被稱為權重衰減,因為它使得權重變小。

隨機梯度下降的正則化學習規則:

 

小的權重在某種程度上,意味著更低的複雜性,也就對資料給出了一種更簡單卻更強大解釋。正則化的神經網路常常能夠比非正則化的泛化能力更強, 這只是一種實驗事實。

有一個大的偏置並不會像大的權重那樣會讓神經元對輸入太過敏感。所以我們不需要對大的偏置所帶來的學習訓練資料的噪聲太過擔心。同時,允許大的偏置能夠讓網路更加靈活。因為,大的偏置讓神經元更加容易飽和,這有時候是我們所要達到的效果。所以,我們通常不會對偏置進行正則化。

4. L1 正則化


這個方法是在未正則化的代價函式上加上一個權重絕對值的和:

 

計算導數:

 

其中 sgn(w) 就是 w 的正負號,即 w 是正數時為 +1,而 w 為負數時為 −1。

對 L1 正則化的網路進行更新的規則就是:

 

在 L1 正則化中,權重通過一個常量向 0 進行縮小。在 L2 正則化中,權重通過一個和 w 成比例的量進行縮小的。所以,當一個特定的權重絕對值 |w| 很大時,L1 正則化的權重縮小得遠比 L2 正則化要小得多。相反,當一個特定的權重絕對值 |w| 很小時,L1 正則化的權重縮小得要比 L2 正則化大得多。最終的結果就是:L1 正則化傾向於聚集網路的權重在相對少量的高重要度連線上,而其他權重就會被驅使向 0 接近。

5. Dropout

和 L1、L2 正則化不同,Dropout技術並不依賴對代價函式的修改,而是改變了網路本身。

基本的工作機制:

 

隨機(臨時)地刪除網路中的一半的隱藏神經元,輸入層和輸出層的神經元保持不變

那些臨時被刪除的神經元,用虛圈表示在圖中:

 

在一個小批量資料上按照反向傳播演算法更新修改後的神經網路中的權值。(虛線不更新)

然後重複這個過程,首先重置Dropout的神經元,然後選擇一個新的隨機的隱藏神經元的子集進行刪除,估計對一個不同的小批量資料的梯度,然後更新權重和偏置。

當Dropout掉不同的神經元集合時,有點像在訓練不同的神經網路。Dropout過程就如同大量不同網路的效果的平均。用這種平均法幫助消除過度擬合。

6. 人為擴充套件訓練資料

將原始圖片旋轉一個小角度

在資料中新增隨機噪聲

一些有彈性的畸變

擷取原始圖片的一部分