瞭解什麼是過擬合問題,如下面圖片爲例,咱們可以看到有兩個類別,藍色是分類曲線模型。算法
模型過擬合是由於模型過於複雜,能夠經過對特徵變量係數的調整來避免過擬合,而引入正則化正是爲了實現這個目的,具體如何實現將在下一節說明。網絡
常見的正則化方法有這幾種:函數
說明:這裏的F-範數指的是Frobenius範數,和logistics迴歸的L一、L2正則化的向量範數不同。學習
矩陣的F-1範數:矩陣全部元素的絕對值之和。公式爲:測試
$$\left \| W \right \|_{1}=\sum_{i,j}\left |\omega _{i,j} \right |$$spa
矩陣的F-2範數:矩陣全部元素的平方求和後開根號。公式爲:3d
$$\left \| W \right \|_{2}=\sqrt{\sum_{i,j}\left (\omega _{i,j} \right )^{2}}$$調試
假設神經網絡的損失函數爲J(W,b),參考邏輯迴歸的正則化,是在損失函數J(W,b)後面加一個正則化項,神經網絡DNN也是同樣的,只是變成了加F-範數,L1正則化與L2正則化以下所示:xml
$$L1: J(W,b)+\frac{\lambda }{2m}\sum_{l\epsilon L}\left \| W \right \|_{1}=J(W,b)+\frac{\lambda }{m}\sum_{l\epsilon L}\sum_{i,j}\left |\omega _{i,j} \right |$$blog
$$L2: J(W,b)+\frac{\lambda }{2m}\sum_{l\epsilon L}\left \| W \right \|_{2}=J(W,b)+\frac{\lambda }{2m}\sum_{l\epsilon L}\sqrt{\sum_{i,j}\left (\omega _{i,j} \right )^{2}}$$
這裏m爲樣本數,l爲各個隱藏層,$\lambda$爲超參數,須要本身調試,L2中2m是爲了後面求梯度的時候能夠抵消掉常數2。
因爲L1正則與L2正則原理類似,並且大多數神經網絡模型使用L2正則,因此這裏以L2爲例來講明爲何能防止過擬合。
原損失函數$J(W,b)$加上正則項$\frac{\lambda }{2m}\sum_{l\epsilon L}\left \| W \right \|_{2}$以後的新損失函數$J(W,b)^{'}=J(W,b)+\frac{\lambda }{2m}\sum_{l\epsilon L}\left \| W \right \|_{2}$,在使用梯度降低訓練模型時,目標是要最小化新的損失函數$ J(W,b)^{'}$,咱們在訓練前先設置超參數$\lambda$,若設置較大的超參數$\lambda=0.9$,則相對於設置較小的超參數$\lambda=0.1$,咱們須要更小的權重F-2範數$\left \| W \right \|_{2}$纔可以使得咱們達到最小化$ J(W,b)^{'}$的目的。因此若是咱們使用較大的超參數$\lambda$的時候,會使得W總體變得更加的稀疏,這樣就可使得W的影響減小,從而避免了因爲模型過於複雜致使的過擬合。
$$原損失函數:$$J(W,b)$$
$$原損失函數對第l層的權重矩陣W求梯度:$$\frac{J(W,b) }{\partial W^{l}}$$
$$原損失函數的W迭代公式爲:$$W^{l}=W^{l}-\alpha \frac{J(W,b) }{\partial W^{l}},其中\alpha爲學習率$$
$$新損失函數:$$J(W,b)^{'}=J(W,b)+\frac{\lambda }{2m}\sum_{l\epsilon L}\left \| W \right \|_{2}$$
$$新損失函數對第l層的權重矩陣W求梯度:$$\frac{J(W,b)^{'} }{\partial W^{l}}=\frac{J(W,b) }{\partial W^{l}}+\frac{\lambda }{m}W^{l}$$
$$新損失函數的W迭代公式爲:$$W^{l}=W^{l}-\alpha \frac{J(W,b) }{\partial W^{l}}-\alpha \frac{\lambda }{m}W^{l}=\left ( 1- \alpha \frac{\lambda }{m}\right )W^{l}-\alpha \frac{J(W,b) }{\partial W^{l}},其中\alpha爲學習率$$
對比原迭代公式與新迭代公式能夠發現,原迭代公式W的係數爲1,新迭代公式的係數爲$\left ( 1- \alpha \frac{\lambda }{m}\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,每批數據迭代更新完畢後,要將殘缺的DNN模型恢復成原始的DNN模型。
注意:Drop只有在數據量大的時候纔可以使用,若數據量小可能會形成欠擬合的狀況,另外,能夠在容易形成過擬合的隱藏層使用Drop正則化。