·過擬合(overfitting)
深層神經網路模型的訓練過程, 就是尋找乙個模型能夠很好的擬合現有的資料(訓練集),同時能夠很好的**未來的資料。
在訓練過程中由於模型建立的不恰當,往往所訓練得到的模型能夠對訓練集的資料非常好的擬合,但是卻在**未來的資料上表現得非常差,這種情況就叫做過擬合(overfitting)。
為了訓練出高效可用的深層神經網路模型,在訓練時必須要避免過擬合的現象。過擬合現象的優化方法通常有三種,分別是:正則化(regulation),擴增訓練集(data augmentation)以及提前停止迭代(early stopping)。
·正則化(regulation)
正則化方法是指在進行損失函式(cost function)優化時,在損失函式後面加上乙個正則項。
正則化方法中目前常用的有兩種方法:l2正則化和dropout正則化。
l2正則
l2正則是基於l2範數,即在函式後面加上引數的l2範數的平方,即:
其中是原損失函式,m表示資料集的大小。使用下式對引數進行更新:
其中,因此知道w在進行權重衰減。在神經網路中,當乙個神經元的權重越小時,那麼該神經元在神經網路中起到的作用就越小,當權重為0時,那麼該神經元就可以被神經網路剔除。而過擬合現象出現的原因之一就是,模型複雜度過高。那麼,也就是說l2正則化後,權重會衰減,從而降低了模型的複雜度,從而一定程度上避免對資料過擬合。
隨機失活(dropout)正則
其實dropout的思路與l2的思路是一致的,都是降低模型的複雜度,從而避免過擬合。只是實現的方法有所不同。
dropout的做法是,在訓練過程中,按照一定的概率隨機的忽略掉一些神經元,使其失活,從而就降低了模型的複雜度,提高了泛化的能力,一定程度上避免了過擬合。
常用的實現方法是inverted dropout。
使用dropout的小技巧
·擴增訓練集(data augmentation)
「有時候不是因為演算法好贏了,而是因為擁有更多的資料才贏了。」
特別在深度學習中,更多的訓練資料,意味著可以訓練更深的網路,訓練出更好的模型。
然而很多時候,收集更多的資料並不那麼容易,要付出很大的代價。那麼,為了得到更多的訓練資料,我們可以在原有的資料上做一些改動產生新的可用資料,以資料為例,將水平翻轉,放大或者選擇乙個小角度都可以得到新的資料用於訓練。
雖然這樣的效果沒有全新的資料更加好,但是付出的代價卻是接近於零的。所以,很多情況下,這是乙個非常好的資料擴增方法。
·提前停止迭代(early stopping)
在訓練過程中繪製訓練集誤差函式的同時也繪製交叉驗證集的誤差。從下面的圖可以看出,訓練集誤差隨著迭代次數增加而不斷降低,而驗證集誤差卻是先降低後上公升。很明顯,在這個模型中,我們希望驗證集誤差和訓練集誤差都盡量的小,那麼最優點就是在驗證集誤差的最低點,訓練應該在該點處停止,也就是選取該點處的權重值作為神經網路的引數。
但是這種優化方法有很大的缺點。因為提前停止訓練,也就是停止優化訓練集的誤差,通常情況下,在驗證集誤差達到最小值時,訓練集誤差還未處於乙個足夠小的值。從而使得該模型雖然沒有出現過擬合現象,卻是出現了欠擬合的情況。當然,這種優化方法還是有著表現優異的使用場景的。
參考:
TendorFlow 深層神經網路優化
深層神經網路的優化 深度學習兩個非常重要的性質 多層和非線性 1 線性模型的侷限性 只通過線性變換,任意層的全連線神經網路和單層的神經網路的表達能力沒有什麼區別,而且他們都只是線性模型。然而線性模型解決的問題是有限的。這就是線性模型最大的侷限性。2 啟用函式來去線性化 如果每乙個神經元的輸出通過乙個...
神經網路的過擬合問題
神經網路模型訓練會出現三種情況 模型過於簡單,模型合理,過擬合。為避免過擬合問題,常常使用正則化方法 正則化的思想是 在損失函式中加入刻畫模型複雜程度的指標。模型優化時需要優化該損失函式 j r w j r w 其中 j j 為損失函式,表示的是乙個神經網路的所有引數,包括權重w w 和偏置b ro...
神經網路的過擬合overfitting
過擬合 模型在訓練上表現越來越好,但是在未見過的資料上表現不好,缺少泛化能力。機器學習的根本問題在於優化和泛化的問題。優化指在調整模型在訓練集上得到最佳效能,泛化指的是模型在前所未見的資料上的效能好壞。1.最優方法是獲取更多的訓練資料 利用影象增強,將資料進行翻轉旋轉等操作。2.正則化 次優解決方法...