神經網路的過擬合問題以及L1 L2正則化

2021-08-19 09:52:33 字數 1487 閱讀 3725

所謂過擬合,指的是當乙個模型過為複雜之後,它可以很好的「記憶」每乙個訓練資料中隨機噪音的部分而忘記了要去「學習」訓練資料中通用的趨勢。

舉乙個極端的例子,如果乙個模型的引數比訓練資料的總說還多,那麼只要訓練資料不衝突,這個模型完全可以記住所有訓練資料的結果從而使得損失函式為0。然而,過度擬合訓練資料中的隨機噪音雖然可以得到非常小的損失函式,但是對於未知資料可能無法做出可靠的判斷。

下圖顯示了模型訓練的三種不同情況。分別展示了模型欠擬合、just right、以及模型過擬合。

為了避免過擬合問題,乙個常用的方法就是正則化。簡單而言,正則化的思想就是在損失函式中假如刻畫模型複雜程度的指標。通俗點說,假設損失函式為j(θ),那麼在優化時不僅僅優化j(θ),而是優化j(θ)+λr(w),其中r(w)刻畫的是模型的複雜程度,而λ表示模型複雜損失在總損失中的比例。這裡θ表示的是乙個神經網路中所有的引數,包括權重w和偏置項b。一般而言模型的複雜度只由權重w決定。

神經網路中常用的正則化方法和一般機器學習的正則化類似,有兩種,一種是l1正則化,計算公式為

另一種是l2正則化,計算公式是:

無論以上哪一種正則化方式,基本的思想都是希望通過限制權重的大小,使得模型不能任意擬合訓練資料中的隨機雜訊。但是這兩種正則化的方法有很大區別。首先,l1正則化會讓引數變得稀疏,而l2正則化不會。所謂引數變得更加稀疏是指會有更多的引數變成0,這樣可以達到類似特徵選取的功能。下**釋了l1會讓引數變得稀疏的原因,從上到下依次為l1正則化、l2正則化。

其次,l1正則化的計算公式不可導,而l2正則化公式可導,因為在優化時需要計算損失函式的偏導數,所以對含有l2正則化損失函式的優化要更加簡潔,優化帶有l1正則化的損失函式要更加複雜。在實踐中,也可以將l1正則化和l2正則化同時使用:

在tensorflow中,

l1正則:

tf.contrib.layers.l1_regularizer(scale, scope=none)

l2正則:

tf.contrib.layers.l2_regularizer(scale, scope=none)

l1正則和l2正則同時使用:

tf.contrib.layers.l1_l2_regularizer(scale_l1=1.0, scale_l2=1.0, scope=none)

以下**給出了使用這兩個函式的樣例,其中λ取0.5:

在簡單神經網路中,這樣的方式就可以很好的計算帶有正則化的損失函式了。

神經網路的過擬合問題

神經網路模型訓練會出現三種情況 模型過於簡單,模型合理,過擬合。為避免過擬合問題,常常使用正則化方法 正則化的思想是 在損失函式中加入刻畫模型複雜程度的指標。模型優化時需要優化該損失函式 j r w j r w 其中 j j 為損失函式,表示的是乙個神經網路的所有引數,包括權重w w 和偏置b ro...

神經網路的過擬合overfitting

過擬合 模型在訓練上表現越來越好,但是在未見過的資料上表現不好,缺少泛化能力。機器學習的根本問題在於優化和泛化的問題。優化指在調整模型在訓練集上得到最佳效能,泛化指的是模型在前所未見的資料上的效能好壞。1.最優方法是獲取更多的訓練資料 利用影象增強,將資料進行翻轉旋轉等操作。2.正則化 次優解決方法...

神經網路中的過擬合

過擬合 overfitting 是指在模型引數擬合過程中的問題,由於訓練資料報含抽樣誤差,訓練時,複雜的模型將抽樣誤差也考慮在內,將抽樣誤差也進行了很好的擬合。具體表現就是模型在訓練集上效果好,在測試集上效果差。模型泛化能力弱。1.擬合的模型一般是用來 未知的結果,過擬合雖然在訓練集上效果好,但是在...