正則化
機器學習中,過擬合是一個很常見的問題。過擬合指的是隻能擬合訓練數據,但不能很好地擬合不包含在訓練數據中的其他數據的狀態。
發生過擬合的原因,主要有以下兩個。
• 模型擁有大量參數、表現力強。
• 訓練數據少。
訓練數據較少時,發生過擬合,很好理解,因爲樣本較少,而模型爲了減少誤差,過分擬合了訓練數據。
當模型參數很多時,模型就對樣本特徵有更多的“記憶容量”。舉個例子,給定一組貓的圖片,訓練一個模型用來分辨新的圖片中的動物是否爲貓,而訓練數據的圖片中可能存在一些噪聲或者其它信息的干擾,而參數較多的模型可能也會刻畫這些噪聲數據的分佈,從而在分辨任務時考慮這些不重要的信息。最終導致,泛化能力差。
換句話說,機器學習的最終目的是是爲了有更好的泛化效果,而並非更好的擬合效果。在上面舉的識別貓的例子中,機器學習的任務是能夠從訓練數據中學習到貓的最重要的特徵和共性(就像人腦海裏的貓的樣子)。
在機器學習中,通常使用正則化來解決這種過擬合問題,降低模型的複雜度。
爲什麼正則化項可以解決過擬合?
奧卡姆剃刀原理:如果你有兩個或多個原理,它們都能解釋觀測到的事實,那麼你應該使用簡單或可證僞的那個,直到發現更多的證據。對於現象最簡單的解釋往往比較複雜的解釋更正確。 在機器學習中,同樣也是如此,對於所面對的任務,學習的參數小,結構簡單的模型效果也更好。而複雜的模型會表現出過擬合現象。
如下圖所示,過擬合,就是擬合函數需要顧忌每一個點,最終形成的擬合函數波動很大。在某些很小的區間裏,函數值的變化很劇烈。這就意味着函數在某些小區間裏的導數值(絕對值)非常大,由於自變量值可大可小,所以只有係數足夠大,才能保證導數值很大。
那麼如何讓模型參數不要太大呢?
這裏在代價函數上又加了一個懲罰項,也叫正則化項。如
即,目標函數=代價函數+正則化項
模型的最優解也就是使目標函數最小化的情況。
而模型要擬合訓練樣本,要求代價函數最小,但此時某些參數Wi也會變大(因爲過於擬合),這會導致懲罰項變大,所以目標函數不是最小,不是最優解。
換句話說,加入一個正則化項的目的是爲了約束參數W的範數,使其不要變的太大,從而約束我們的模型變得更簡單。
L1範數和L2範數
—L1範數是指向量中各個元素絕對值之和。
—L1範數的使用可以使參數稀疏化,使一些參數變爲0。
—L1範數作爲正則化項比L2範數更能使參數稀疏化。
—L2範數:向量元素絕對值的平方和再開平方
“可以使參數稀疏化”和“L1比L2更能使參數稀疏化”如何理解呢?
對於我們需要優化的問題:
推導如下:
對於L1範數,參數更新公式如下:
對於L2範數來說,參數更新公式如下:
1)從參數的更新公式來看,L1與L2的不一樣的地方在於L1會減倍的,而L2會減掉倍的
當大於1時,L2獲得比L1更快的減小速率,當在0到1之間時,L1比L2獲得更快的減小速率。
並且當w越小時,L1更容易減小接近於0,而L2更不容易變化。因此L1會獲得更多的接近與0的w。
即,L1比L2更容易獲得稀疏的 w。L1範數正則化又稱之爲 LASSO 。
2)另外,由上面的公式可知, L2範數正則化令權重先自乘一個小於1的數,再減去不含懲罰項的梯度。因此L2範數正則化,又名叫權重衰減,也叫“嶺迴歸”.
由此,正則化項使模型參數變得稀疏,即讓一部分參數變爲0(特徵提取,去掉不重要的信息,留下關鍵特徵),變得更小,使模型更加簡單,從而達到減輕過擬合的現象。
引用:
-
《深度學習:基於python的理論和實踐》