日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习中用来防止过拟合的方法有哪些?

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习中用来防止过拟合的方法有哪些? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
 機器學習中用來防止過擬合的方法有哪些?

雷鋒網(公眾號:雷鋒網)按:本文作者 qqfly,上海交通大學機器人所博士生,本科畢業于清華大學機械工程系,主要研究方向機器視覺與運動規劃,會寫一些好玩的內容在微信公眾號:Nao(ID:qRobotics)。本文整理自知乎回答:機器學習中用來防止過擬合的方法有哪些?

給《機器視覺與應用》課程出大作業的時候,正好涉及到這方面內容,所以簡單整理了一下(參考 Hinton 的課程)。按照之前的套路寫:

是什么

過擬合(overfitting)是指在模型參數擬合過程中的問題,由于訓練數據包含抽樣誤差,訓練時,復雜的模型將抽樣誤差也考慮在內,將抽樣誤差也進行了很好的擬合。

具體表現就是最終模型在訓練集上效果好;在測試集上效果差。模型泛化能力弱。

為什么

為什么要解決過擬合現象?這是因為我們擬合的模型一般是用來預測未知的結果(不在訓練集內),過擬合雖然在訓練集上效果好,但是在實際使用時(測試集)效果差。同時,在很多問題上,我們無法窮盡所有狀態,不可能將所有情況都包含在訓練集上。所以,必須要解決過擬合問題。

為什么在機器學習中比較常見?這是因為機器學習算法為了滿足盡可能復雜的任務,其模型的擬合能力一般遠遠高于問題復雜度,也就是說,機器學習算法有「擬合出正確規則的前提下,進一步擬合噪聲」的能力。

而傳統的函數擬合問題(如機器人系統辨識),一般都是通過經驗、物理、數學等推導出一個含參模型,模型復雜度確定了,只需要調整個別參數即可。模型「無多余能力」擬合噪聲。

怎么樣

既然過擬合這么討厭,我們應該怎么防止過擬合呢?最近深度學習比較火,我就以神經網絡為例吧:

1. 獲取更多數據

這是解決過擬合最有效的方法,只要給足夠多的數據,讓模型「看見」盡可能多的「例外情況」,它就會不斷修正自己,從而得到更好的結果:

如何獲取更多數據,可以有以下幾個方法:

  • 從數據源頭獲取更多數據:這個是容易想到的,例如物體分類,我就再多拍幾張照片好了;但是,在很多情況下,大幅增加數據本身就不容易;另外,我們不清楚獲取多少數據才算夠;

  • 根據當前數據集估計數據分布參數,使用該分布產生更多數據:這個一般不用,因為估計分布參數的過程也會代入抽樣誤差。

  • 數據增強(Data Augmentation):通過一定規則擴充數據。如在物體分類問題里,物體在圖像中的位置、姿態、尺度,整體圖片明暗度等都不會影響分類結果。我們就可以通過圖像平移、翻轉、縮放、切割等手段將數據庫成倍擴充;

2. 使用合適的模型

前面說了,過擬合主要是有兩個原因造成的:數據太少 + 模型太復雜。所以,我們可以通過使用合適復雜度的模型來防止過擬合問題,讓其足夠擬合真正的規則,同時又不至于擬合太多抽樣誤差。

(PS:如果能通過物理、數學建模,確定模型復雜度,這是最好的方法,這也就是為什么深度學習這么火的現在,我還堅持說初學者要學掌握傳統的建模方法。)

對于神經網絡而言,我們可以從以下四個方面來限制網絡能力

2.1 網絡結構 Architecture

這個很好理解,減少網絡的層數、神經元個數等均可以限制網絡的擬合能力;

2.2 訓練時間 Early stopping

對于每個神經元而言,其激活函數在不同區間的性能是不同的:

當網絡權值較小時,神經元的激活函數工作在線性區,此時神經元的擬合能力較弱(類似線性神經元)。

有了上述共識之后,我們就可以解釋為什么限制訓練時間(early stopping)有用:因為我們在初始化網絡的時候一般都是初始為較小的權值。訓練時間越長,部分網絡權值可能越大。如果我們在合適時間停止訓練,就可以將網絡的能力限制在一定范圍內。

2.3 限制權值 Weight-decay,也叫正則化(regularization)

原理同上,但是這類方法直接將權值的大小加入到 Cost 里,在訓練的時候限制權值變大。以 L2 regularization 為例:

訓練過程需要降低整體的 Cost,這時候,一方面能降低實際輸出與樣本之間的誤差C0,也能降低權值大小。

2.4 增加噪聲 Noise

給網絡加噪聲也有很多方法:

2.4.1 在輸入中加噪聲:

噪聲會隨著網絡傳播,按照權值的平方放大,并傳播到輸出層,對誤差 Cost 產生影響。推導直接看 Hinton 的 PPT 吧:

在輸入中加高斯噪聲,會在輸出中生成的干擾項。訓練時,減小誤差,同時也會對噪聲產生的干擾項進行懲罰,達到減小權值的平方的目的,達到與 L2 regularization 類似的效果(對比公式)。

2.4.2 在權值上加噪聲

在初始化網絡的時候,用 0 均值的高斯分布作為初始化。Alex Graves 的手寫識別 RNN 就是用了這個方法

Graves, Alex, et al. "A novel connectionist system for unconstrained handwriting recognition." IEEE transactions on pattern analysis and machine intelligence 31.5 (2009): 855-868.

- It may work better, especially in recurrent networks (Hinton)

2.4.3 對網絡的響應加噪聲

如在前向傳播過程中,讓默寫神經元的輸出變為 binary 或 random。顯然,這種有點亂來的做法會打亂網絡的訓練過程,讓訓練更慢,但據 Hinton 說,在測試集上效果會有顯著提升 (But it does significantly better on the test set!)。

3. 結合多種模型

簡而言之,訓練多個模型,以每個模型的平均輸出作為結果。

從 N 個模型里隨機選擇一個作為輸出的期望誤差,會比所有模型的平均輸出的誤差大(我不知道公式里的圓括號為什么顯示不了):

大概基于這個原理,就可以有很多方法了:

3.1 ?Bagging

簡單理解,就是分段函數的概念:用不同的模型擬合不同部分的訓練集。以隨機森林(Rand Forests)為例,就是訓練了一堆互不關聯的決策樹。但由于訓練神經網絡本身就需要耗費較多自由,所以一般不單獨使用神經網絡做 Bagging。

3.2 Boosting

既然訓練復雜神經網絡比較慢,那我們就可以只使用簡單的神經網絡(層數、神經元數限制等)。通過訓練一系列簡單的神經網絡,加權平均其輸出。

3.3 Dropout

這是一個很高效的方法。

在訓練時,每次隨機(如 50% 概率)忽略隱層的某些節點;這樣,我們相當于隨機從 2^H 個模型中采樣選擇模型;同時,由于每個網絡只見過一個訓練數據(每次都是隨機的新網絡),所以類似 bagging 的做法,這就是我為什么將它分類到「結合多種模型」中;

此外,而不同模型之間權值共享(共同使用這 H 個神經元的連接權值),相當于一種權值正則方法,實際效果比 L2 regularization 更好。

4. 貝葉斯方法

這部分我還沒有想好怎么才能講得清楚,為了不誤導初學者,我就先空著,以后如果想清楚了再更新。當然,這也是防止過擬合的一類重要方法。

綜上:



“TensorFlow & 神經網絡算法高級應用班”開課了!

ThoughtWorks大牛教你玩轉TensorFlow !

課程鏈接:http://www.leiphone.com/special/custom/mooc04.html

本文作者:qqfly編輯:賈智龍2017-05-16 15:48

總結

以上是生活随笔為你收集整理的机器学习中用来防止过拟合的方法有哪些?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。