训练最优神经网络
謹防訓練數(shù)據(jù)和實際問題不匹配
在談論改善模型之前,首先一點是要考慮數(shù)據(jù)問題。
在深度學習過程中,很容易出現(xiàn)的一點是,我們訓練的數(shù)據(jù)和實際問題并不匹配。這很糟糕,會導致訓練模型效果很好,但實際應用很糟糕的現(xiàn)象。比如說對于下圖而言,我們想要識別視頻中的具體車輛是什么型號的車輛。右側是訓練數(shù)據(jù)。訓練數(shù)據(jù)的汽車都是側面照相的結果,而實際檢測的汽車都是正面和后面的。訓練的模型在實際應用過程中就會很糟糕。
在數(shù)據(jù)OK的情況下,我們按照吳恩達老師的建議來改善模型。
如果訓練誤差過高
如果誤差過高,我們首先可以考慮把我們現(xiàn)有的神經(jīng)網(wǎng)絡深度加深,以及添加更多的神經(jīng)元,或許能夠改善學習效果。我們也可以考慮迭代更多的epoch,我們也可以對學習率做出調整,往往更小的學習率能有更好的效果。如果這些策略都不行,那我們可能需要考慮換一個深度學習方法了。
如果驗證集誤差較高
如果驗證集誤差比較高,我們可以考慮多增加一些正則化項。L2正則化,Dropout等等。我們是否使用了數(shù)據(jù)增強?通常使用數(shù)據(jù)增強可以一定程度改善學習效果,增加泛化能力。
也有可能是你的模型訓練數(shù)據(jù)不夠,沒能夠學習到潛在的模式,導致出現(xiàn)了比較嚴重的過擬合現(xiàn)象。如果可以的話,采集更多的數(shù)據(jù),增加訓練數(shù)據(jù)永遠都不會是一件糟糕的事情。如果上面的策略都不行,那么可能只剩一條路可以走了:換一個網(wǎng)絡模型。
如果測試集誤差較高
當這個情況發(fā)生的時候,很有可能是訓練集和驗證集發(fā)生了過擬合。我們可能需要給驗證集更多的數(shù)據(jù),來測試發(fā)現(xiàn)什么時候發(fā)生了過擬合現(xiàn)象。
總結
- 上一篇: 理解extract_patches_2d
- 下一篇: 如何正确使用迁移学习