Tensorflow深度學習的日常——day-5

什么是過擬合(overfitting?)?

其實過擬合就相當于我們生活中的自負,機器學習模型于自信,已經(jīng)到了自負的階段了,這樣往往得不到我們想要的結(jié)果.?

分類例子 (圖引用莫凡python)

上圖分類的例子中(我們的目的是把紅色和藍色區(qū)分開來),其中黑色的曲線是正常的模型。然而綠色的線就是過擬合模型,盡管它很精確的區(qū)分了訓練數(shù)據(jù),但是并沒有具體描述這些數(shù)據(jù)的整體特征,因此我們換上新的測試數(shù)據(jù)時,適應性會很差。

Regression(回歸)(圖引用莫凡python)

由回歸例子的圖可以看出,第三條線盡管經(jīng)過了所有的訓練數(shù)據(jù)點,但是不能反映數(shù)據(jù)的趨勢,因此它的預測能力會很不足。


解決方法:

方法一:?

增加數(shù)據(jù)量, 大部分過擬合產(chǎn)生的原因是因為數(shù)據(jù)量太少了. 如果我們有成千上萬的數(shù)據(jù), 紅線也會慢慢被拉直, 變得沒那么扭曲 .?

方法二:

(圖引用莫凡python)

運用正規(guī)化. 簡化機器學習的關鍵公式為 y=Wx . W為機器需要學習到的各種參數(shù). 在過擬合中, W 的值往往變化得特別大或特別小. 為了不讓W變化太大, 我們在計算誤差上做些手腳. 原始的 cost 誤差是這樣計算, cost = 預測值-真實值的平方. 如果 W 變得太大, 我們就讓 cost 也跟著變大, 變成一種懲罰機制. 所以我們把 W 自己考慮進來. 這里 abs 是絕對值. 這一種形式的 正規(guī)化, 叫做 l1 正規(guī)化. L2 正規(guī)化和 l1 類似, 只是絕對值換成了平方. 其他的l3, l4 也都是換成了立方和4次方等等. 形式類似. 用這些方法,我們就能保證讓學出來的線條不會過于扭曲.

方法三:

還有一種專門用在神經(jīng)網(wǎng)絡的正規(guī)化的方法, 叫作 dropout. 在訓練的時候, 我們隨機忽略掉一些神經(jīng)元和神經(jīng)聯(lián)結(jié) , 是這個神經(jīng)網(wǎng)絡變得”不完整”. 用一個不完整的神經(jīng)網(wǎng)絡訓練一次.第二次再隨機忽略另一些, 變成另一個不完整的神經(jīng)網(wǎng)絡. 有了這些隨機 drop 掉的規(guī)則, 我們可以想象其實每次訓練的時候,我們都讓每一次預測結(jié)果都不會依賴于其中某部分特定的神經(jīng)元, Dropout 的做法是從根本上讓神經(jīng)網(wǎng)絡沒機會過度依賴.


dropout 解決 overfitting 問題

代碼:

結(jié)果:

(1)當keep_prob=1時,會出現(xiàn)過擬合。

1

由圖我們可以看出,test和train存在著差距。

(2)當keep_prob=0.5時。

0.5

由圖可以看出,test和train幾乎重合,這就體現(xiàn)了dropout 解決 overfitting 問題。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容