正則化方法小結

2022-07-12 14:45:31 字數 1542 閱讀 8114

來自:

在演算法中使用正則化的目的是防止模型出現過擬合。

提到正則化,想到l1範數和l2範數。在這之前,先看lp範數是什麼。

lp範數

範數簡單理解為向量空間中的距離,距離定義很抽象,只要滿足非負、自反、三角不等式就可以稱之為距離。

lp範數不是乙個範數,而是一組範數,定義為:

p的範圍[1, +∞]。p在(0,1)範圍內定義的並不是範數,因為違反了三角不等式。

根據p的變化,範數也有著不同的變化,借用乙個經典的有關p範數的變化圖如下:

上圖表示了p在(0,+∞)變化時,單位球(unit ball)的變化情況。

在p範數下定義的單位球都是凸集,但是當0剩下當p = 0時,即l0範數啥玩意?

l0範數表示向量中非0元素的個數,公式表示如下:

我們可以通過最小化l0範數,來尋找最少最優的稀疏特徵項。但不幸的是,l0範數的最優化問題是乙個np-hard問題(l0範數是非凸的)。因此,在實際應用中我們經常對l0進行凸鬆弛,理論上有證明,l1範數是l0範數的最優凸近似,因此通常使用l1範數來代替優化l0範數。

l1範數

l1範數就是當p = 1時,數學形式:

通過上式得出,l1範數就是向量各元素的絕對值之和,也被稱為是「稀疏規則運算元」(lassoregularization)。

那麼問題來了,為什麼稀疏化?

最直接的兩個:

特徵選擇

可解釋性

l2範數

l2範數就是歐幾里得距離,公式:

l2範數有很多名稱,有人把它的回歸叫「嶺回歸」(ridge regression),也有人叫它「權值衰減」(weight decay)。以l2範數作為正則項可以得到稠密解,即每個特徵對應的引數w都很小,接近於0但是不為0;此外,l2範數作為正則化項,可以防止模型為了迎合訓練集而過於複雜造成過擬合的情況,從而提高模型的泛化能力。

l1範數與l2範數的區別

如圖,藍色圓圈表示問題可能的解範圍,橘色圓圈表示正則項可能的解範圍。而整個目標函式(原問題+正則項)有解當且僅當兩個解範圍相切。從圖看出,由於l2範數解範圍是圓,所以相切的點有很大可能不在座標軸上,而由於l1範數是菱形(頂點是凸出來的),其相切的點更可能在座標軸上,而座標軸上的點有乙個特點,其只有乙個座標分量不為0,其他座標分量為0,即稀疏的。所以有如下結論,l1範數可以導致稀疏解,l2範數導致稠密解。

從貝葉斯先驗的角度看,當訓練乙個模型時,僅依靠當前的訓練資料集是不夠的,為了實現更好的泛化能力,往往需要加入先驗項,而加入正則項相當於加入了一種先驗。

l1範數相當於加入了乙個laplacean先驗。

l2範數相當於加入了乙個gaussian先驗。

更詳細的l1範數和l2範數區別,點選《l1和l2正則化解釋》

TensorFlow正則化小結

在設計深度學習模型的時候,我們經常需要使用正則化 regularization 技巧來減少模型的過擬合效果,例如 l1 正則化 l2 正則化等。在keras中,我們可以方便地使用三種正則化技巧 那麼,我們應該如何使用這三種正則化技巧呢?以keras中的dense層為例,我們發現有以下三個引數 這三個...

機器學習 正則化方法

在訓練資料不夠多時,或者overtraining時,常常會導致overfitting 過擬合 其直觀的表現如下圖所示,隨著訓練過程的進行,模型複雜度增加,在training data上的error漸漸減小,但是在驗證集上的error卻反而漸漸增大 因為訓練出來的網路過擬合了訓練集,對訓練集外的資料卻...

欠擬合,過擬合,正則化,歸一化問題小結。

概念 欠擬合 擬合的函式和訓練集誤差較大,我們稱這種情況為欠擬合 擬合 擬合的函式和訓練集誤差較小,我們稱這種情況為合適擬合 過擬合 擬合的函式和訓練集誤差完美匹配,我們稱這種情況為合適擬合 欠擬合原因 欠擬合問題,根本的原因是特徵維度過少,導致擬合的函式無法滿足訓練,誤差大。解決方法 1.新增其他...