泛統計理論初探——模型泛化能力增強技巧

數據挖掘-機器學習模型泛化增強技巧

機器學習模型泛化能力增強技巧簡介
   在之前的文章中,我們已經介紹了三種提高模型泛化能力的方法,即前一篇文章介紹的L1正則化、L2正則化、DropOut方法。在本文中,我們將會從數據角度、模型訓練角度、策略角度進行提高模型泛化能力的方法介紹,嘗試在處理問題的不同階段使用技巧提升模型的泛化能力。本文主要介紹數據增強、參數共享、早停處理、多任務學習這幾種技巧,下面分別進行介紹。
   首先介紹數據增強方法,該方法其實在圖像分析領域使用的較多,因爲圖像領域可以對原始的數據進行一些調整,在不改變圖像含義的情況下最大程度的利用原始數據。比如對一幅圖片可以進行翻轉操作、旋轉操作、縮放操作、移位操作、裁剪操作、黑白操作、模糊操作等,因爲這些操作可以讓原始的數據的信息充分使用,也防止神經網絡等模型過擬合,加強了模型的泛化能力。當然這些方法都是比較低級和簡單的方法,在學習的後期,如果覺得數據量還不夠,可以嘗試使用對抗神經網絡GAN來進行訓練數據的生成,GAN的原理在以後的文章會進行介紹,此處不展開。通過GAN的數據生成,可以將圖片裏的目標含義不變的情況下,改變圖片內的環境等其他特徵,使得原有模型進行更好地學習,得到一個泛化能力更強的機器學習模型。理論上來說數據增強方法是一種比較好的技巧,因爲它不僅使得模型的泛化能力更強,也使得模型的穩健性更好,但其缺點在其他結構性數據或者自然語言處理領域很難在原有的數據集進行數據增強,除非增加新的數據。
   下面介紹早停技巧,該技巧其實是在梯度下降方法中涉及到的一種方法,其實顧名思義,早停就是在訓練到中途的時候提早停止訓練,是神經網絡裏面處理過擬合的一種方法。由於早停法會比較數據在訓練集和驗證集的效果,本質上是在尋找一個點,這個點是模型在驗證集上的拐點,在這個點之後雖然訓練集的誤差還在減小,但是驗證集的誤差卻開始增加,因爲這個時候模型可能在訓練集上已經過擬合了,實踐中有些使用者反映早停方法比L1正則化、L2正則化方法的效果要更好。但是早停技巧對於複雜的模型來說是很難使用的,因爲早停很有可能使得模型停在一個局部最優點而無法進行繼續優化,特別是當前的神經網絡結構如此複雜,而且通常是多個神經網絡模型進行組合嵌套,早停技巧可能不一定很好,對於那些簡單的模型,使用早停的技巧是比較簡潔並且效果不錯的。下面的圖片就很好的說明了這個早停技巧的原理,最好的模型參數是迭代到240步的時候,訓練集的誤差不是最低點,但是驗證集的誤差達到了最低的區域,這就是早停的技巧原理。
在這裏插入圖片描述
   下面進行參數共享方法的介紹,之前的文章介紹過L1正則化方法和L2正則化方法,那些正則化方法的思路是一種懲罰,對參數偏離0均值誤差的懲罰,而有些場景需要減少參數的數量。比如在圖像領域,最開始使用的是BP神經網絡進行訓練,但由於多層神經網絡的參數實在是太多,所以引入了CNN卷積神經網絡,該網絡的一大特點就是參數共享,將每一層的參數進行共享,也就是保持一致,使得參數的數量大大下降。其實參數共享方法一般在神經網絡中使用的較多,其目的是避免多層神經網絡進行過擬合,所以將一部分神經元的參數強行一致,從而避免了過擬合,也就達到了泛化能力變強的目標。
   最後我們來介紹多任務學習,該方法的思路是通過進行多個不同種類問題的學習來防止神經網絡爲了學習某一類特殊的問題而造成的過擬合,比如在經過基本的映射和歸一化處理後的兩份數據,一份數據是學習識別貓和狗的圖像數據,另一份數據是學習去預測下個月的房屋價格是漲或者跌的數據,通過同樣的神經網絡隱藏層來進行學習,這個隱藏層的參數是兩個問題所共享的,所以最後得到的神經網絡可以有效地避免過擬合情況。
   總的來說,模型的泛化能力增強還需要看實際問題的數據和使用場景,因爲在條件允許的情況當然是增加新的數據,在圖像分析領域可以進行原始數據的增強,在某些神經網絡模型可以使用多任務學習、參數共享或者早停技巧,而在機器學習還可以使用集成學習的思路,將模型進行組合,通過bagging或者boosting的策略進行整體模型的準確率提升。對於初學者來說,不能盲目地追求訓練集準確率,要注意模型的穩健性和泛化能力,從而得到較好的模型。

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