機器學習——正則化

問題:過擬合

算法訓練結束後可能會產生兩種讓人不想面對的結果,一種是欠擬合,一種是過擬合。需要注意二者針對的對象都是訓練數據,再結合名字就非常容易理解這兩個名字的意思了。
欠擬合:即使是在訓練數據上都存在較大的誤差。
過擬合:在訓練數據上誤差非常小甚至沒有誤差,過度的擬合了訓練數據以至於失去了數據整體上的趨勢不能很好的用在真實數據上。
過擬合產生的原因主要有兩個,過多的特徵參數,過少的訓練數據。
過多的特徵參數:選擇的參數中存在一些對結果沒有什麼貢獻,搗亂居多的特徵。(例如房價預測中的3階和4階項)
過少的訓練數據:在特徵參數選擇過多的情況下訓練數據還少了,訓練起來就抓不住主要方向了就開始亂搞了。

解決方法也主要是針對這兩個原因來的,其中效果又好操作起來又簡單的就是增加更多高質量的訓練數據了,Google不是有句話叫做”更多的數據勝過更好的算法“嗎?自己感覺訓練數據的增加也是現在AI技術逐步走入生活的原因,因爲互聯網的發展爲算法提供了海量的數據作爲養料。但是訓練數據的獲取也不是那麼的容易的,特別是高質量的訓練數據。
所以大佬們瞄向了另外一個原因雙管齊下,就不信它還過擬合。對症下藥亂七八糟的特徵多了那就去掉一些沒什麼用的特徵,具體的方法是課程中提到的Model selection algorithm。之後會學那就之後再來更新吧。直接捨棄一些特徵簡單粗暴,但是按照吳老師的話來說在你捨棄一些特徵的同時也捨棄了一部分信息,而且這些特徵收集起來也不容易捨不得怎麼辦。這個時候就輪到正則化方法(regularization)登場了。

方法之一:正則化

當參數太多的情況下因爲搞不清楚哪個參數和結果的關聯度比較小,所以正則化縮小每一個參數θ,這樣得到的模型更爲簡單平滑。爲什麼參數θ小模型就佈局平滑呢?平滑的模型其導數的絕對值一般來說較小,過擬合的模型一般來說比較曲折如下圖所示:

例子

而對於線性模型y=Wx 來說導數就是模型的參數本身,因此,減小參數絕對值就可以達到減小導數絕對值的效果,即可達到平滑模型、防止過擬合的效果。最終課程中得到的代價函數如下所示:

(1)J(θ)=12m[i=1m(hθ(x(i))y(i))2+λi=1nθj2]

公式右邊的即爲正則項,這個公式中使用的是L2 範數作爲正則項,既然有L2 那麼肯定就會有L0L1 了,具體的含義和區別可以參考參考資料[1]中的高票回答。除了Lp 範數可以作爲正則項,還存在其他的正則項,但是目前還不瞭解,學習了之後再更新吧。
參考資料:
機器學習中常常提到的正則化是什麼意思? [1]
理解正則化項L1和L2的區別[2]

博客原文:https://blog.yinaoxiong.cn/2018/08/03/機器學習-正則化.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章