了解什麼是過擬合問題,以下面為例,我們能夠看到有兩個類別,藍色是分類曲線模型。
模型過擬合是因為模型過於複雜,可以通過對特徵變數係數的調整來避免過擬合,而引入正則化正是為了實現這個目的,具體如何實現將在下一節說明。
常見的正則化方法有這幾種:
說明:這裡的f-範數指的是frobenius範數,和logistics回歸的l1、l2正則化的向量範數不一樣。
矩陣的f-1範數:矩陣所有元素的絕對值之和。公式為:
$$\left \| w \right \|_=\sum_\left |\omega _ \right |$$
矩陣的f-2範數:矩陣所有元素的平方求和後開根號。公式為:
$$\left \| w \right \|_=\sqrt\left (\omega _ \right )^}$$
假設神經網路的損失函式為j(w,b),參考邏輯回歸的正則化,是在損失函式j(w,b)後面加乙個正則化項,神經網路dnn也是一樣的,只是變成了加f-範數,
l1正則化與l2正則化如下所示:
$$l1: j(w,b)+\frac\sum_\left \| w \right \|_=j(w,b)+\frac\sum_\sum_\left |\omega _ \right |$$
$$l2: j(w,b)+\frac\sum_\left \| w \right \|_=j(w,b)+\frac\sum_\sqrt\left (\omega _ \right )^}$$
這裡m為樣本數,l為各個隱藏層,$\lambda$為超引數,需要自己除錯,l2中2m是為了後面求梯度的時候可以抵消掉常數2。
由於l1正則與l2正則原理相似,而且大多數神經網路模型使用l2正則,所以這裡以l2為例來說明為什麼能防止過擬合。
直觀理解:
原損失函式$j(w,b)$加上正則項$\frac\sum_\left \| w \right \|_$之後的新損失函式$j(w,b)^=j(w,b)+\frac\sum_\left \| w \right \|_$,在使用梯度下降訓練模型時,目標是要最小化新的損失函式$ j(w,b)^$,我們在訓練前先設定超引數$\lambda$,若設定較大的超引數$\lambda=0.9$,則相對於設定較小的超引數$\lambda=0.1$,我們需要更小的權重f-2範數$\left \| w \right \|_$才能夠使得我們達到最小化$ j(w,b)^$的目的。所以如果我們使用較大的超引數$\lambda$的時候,會使得w整體變得更加的稀疏,這樣就可以使得w的影響減少,從而避免了由於模型過於複雜導致的過擬合。
公式推導(以平方差損失函式為例,即$j(w,b)=\frac\sum_\left \| a^-y \right \|_^$):
$$原損失函式:$$j(w,b)$$
$$原損失函式對第l層的權重矩陣w求梯度:$$\frac}$$
$$原損失函式的w迭代公式為:$$w^=w^-\alpha \frac},其中\alpha為學習率$$
$$新損失函式:$$j(w,b)^=j(w,b)+\frac\sum_\left \| w \right \|_$$
$$新損失函式對第l層的權重矩陣w求梯度:$$\frac }}=\frac}+\fracw^$$
$$新損失函式的w迭代公式為:$$w^=w^-\alpha \frac}-\alpha \fracw^=\left ( 1- \alpha \frac\right )w^-\alpha \frac},其中\alpha為學習率$$
對比原迭代公式與新迭代公式可以發現,原迭代公式w的係數為1,新迭代公式的係數為$\left ( 1- \alpha \frac\right )$,由於$\alpha$、$\lambda$、m都是正數,所以新迭代公式在原來的基礎上使權重矩陣w進行了縮減,使得w變得更小,這就是l2正則的權重衰減,這樣可以使得一些權重的值等於或更接近與0,從而減少了一些權重的影響,以極端情形來說,如果衰減後權重為零,即該神經元的影響為0,相當於神經元從神經網路中去除,這樣就減少了神經元的個數,從而降低了模型的複雜度,防止了過擬合。
l1 正則化項的效果是讓權值 w 往 0 靠,使網路中的權值盡可能為 0,也就相當於減小了網路複雜度,防止過擬合。事實上,l1 正則化能產生稀疏性,導致 w 中許多項變成零。
l2 正則化項的效果是減小權值 w。事實上,更小的權值 w,從某種意義上說,表示網路的複雜度更低,對資料的擬合剛剛好。
說明:所謂的dropout指的是在用前向傳播演算法和反向傳播演算法訓練dnn模型時,一批資料迭代時,隨機的從全連線dnn網路中去掉一部分隱藏層的神經元,下面用兩個圖來解釋:
原始的神經網路結構:
在對訓練集中的一批資料進行訓練時,我們隨機去掉一部分隱藏層的神經元(在訓練模型的時候通常選擇隨機去除50%的神經元,長期實踐證明效果較好),如下圖:
總結drop:去掉的神經元只是在當前的批次資料迭代中才去除,在下一批資料迭代的時候,要把dnn模型恢復成最初的全連線模型,再隨機去掉部分隱藏層的神經元,接著去迭代更新w,b
'>
w,b,每批資料迭代更新完畢後,要將殘缺的dnn模型恢復成原始的dnn模型。
注意:drop只有在資料量大的時候才能夠使用,若資料量小可能會造成欠擬合的情況,另外,可以在容易造成過擬合的隱藏層使用drop正則化。
深度學習 正則化
1 為啥l1 更具有稀疏性 兩種解釋 1 從l 1和l2 的 來看,貝葉斯學派認為僅僅使用資料是不夠的,還要加入先驗知識,l1 等於拉普拉斯先驗,l2 等於高斯先驗,為了推導和計算方便,會對分布函式取對數,然後再去優化,最後由於引數考慮了 資料先驗,學到的規則更加接近實際,拉普拉斯密度函式的圖形和表...
深度學習中的正則化
任何可以使學習演算法有降低泛化誤差意向的改動都是正則化。乙個有效的正則化就是能顯著地降低方差而不過度增加偏差。最好的擬合模型總是乙個適當正則化的大型模型!資料增強是一種便宜且簡單的方法來增加你訓練資料的數量的方法。上面資料增強已經提到,向輸入中注入方差極小的雜訊等價於對權重施加範數懲罰,一般情況下,...
深度學習 網路正則化
in 1n i 1n yi f xi 2 r d min 1n i 1n yi f xi 2 r d 2 12 22l2 12 222 1 i i l2 1 i i 1 1 2 22 1 1 2 22 2 c 2 原理 對於某層神經元,在訓練階段均以概率p隨機將該神經元權重設定為0,在測試階段所有神...