一、選擇合適的隱藏層數目
首先我們需要注意到當我們增加層數和神經元數目的時候,神經網路的效能也會有所提公升。因為神經元可以協同作用表達出不同的函式來對資料進行表示。比如說假設我們在二維空間中有乙個二值的分類問題,我們可以訓練3個不同的神經網路,每個神經網路都包含乙個隱含層,但是隱含層中包含的神經元數目不一樣,我們來看一下分類器的分類效果:
在上圖中,我們看到包含更多神經元的神經網路能夠表達更加複雜的函式。但是這既好又不好,好是因為可以對更複雜的資料進行分類,不好是因為它容易對訓練資料過擬合(overfitting)。比如說隱層包含20個神經元的那個圖,它雖然把所有的資料都分對了但是把整個平面分成了紅綠相間、相互脫節的小區域,看上去很不平滑;而3個神經元的圖,它能夠從大方向上去分類資料,而把一些被綠色點包圍的紅色點看成是異常值、雜訊(outliers)。實際中這能夠使得模型在測試資料上有更好的泛化能力。
基於上述討論,貌似當資料不太複雜的時候,我們可以選用小一點的神經網路來預防overfitting?不不不,這是不對滴,我們可以選擇其他更好的方法來避免過擬合(比如l2正則化,dropout,增加雜訊等,我們後面再討論)。實際中用這些方法避免過擬合比減少神經元的個數要更好。比如說我們可以看看不同的正則強度是如何控制20個隱含神經元的過擬合的:
總的來說就是你不能因為害怕過擬合就使用小一點的神經網路,相反如果你的計算機效能允許,你應該用大的神經網路,然後通過一些正則的方法來控制overfitting.
1.
如何書寫乙個恰當的equals 方法?
若有錯誤,歡迎指正。object類中的equals 方法預設比較的是物件之間的引用是否一樣,但在實際開發中需要比較的是物件之間的狀態是否一樣。這就要求我們覆寫equals 方法。考慮繼承層次下的equals 方法應如何書寫?1 父類的equals 方法比較共有屬性部分,等待子類中的equals 呼叫...
過擬合以及如何防止過擬合
過擬合即模型在訓練過程中對模型引數進行擬合的過程中,由於訓練資料集存在抽樣誤差 雜訊 複雜的模型在訓練的過程中會將抽樣誤差也一同進行擬合。這就導致訓練好的模型在訓練集上的表現很好,在測試集上的表現很差的原因。導致過擬合的主要原因有兩個 資料量太少和模型過於複雜 因為機器學習演算法在擬合出正確的規則後...
如何理解過擬合和欠擬合
所謂過擬合 over fitting 其實就是所建的機器學習模型或者是深度學習模型在訓練樣本中表現得過於優越,導致在驗證資料集以及測試資料集中表現不佳。解決方法 終我們會在一定範圍內求出最優解,最後損失函式不斷趨近0。那麼我們可以在所定義的損失函式後面加入一項永不為0的部分,那麼最後經過不斷優化損失...