訓練神經網路時,我們會有乙個訓練集,乙個測試集,人在這件事上幾乎是不會出錯的
當訓練集精度為99%,而測試集精度為90%時
這時就是出現了過擬合,我們稱他為方差較高
當訓練集精度為85%,測試集精度也為85%時
這就是擬合的不好,我們稱他為高偏差
為了之後表達方便我稱訓練集精度為a,測試集精度為b
高方差的解決辦法:
出現高方差時一般是,a,b先一起上公升,然後到某一點之後 a繼續上公升b開始下降
early stopping
我常用的就是訓練時,每訓練100次輸出一次訓練集精度,每1k次儲存一次模型
一旦發現b開始下降了,就停止訓練
這裡定義下什麼叫做b開始下降
不是說連續300次訓練b都在下降就叫b開始下降了
最好是連續1000 - 2000次訓練b都在下降才能叫做b開始下降了
因為b是會有波動的,偶爾幾次下降是正常行為
另外的解決辦法是正則化
因為神經網路過擬合的根本原因就是網路設計的過於複雜了
正則化就是一種把網路簡化的方法
drop out 正則化:
在訓練神經網路時,按照一定的概率去更新節點
其實網路會過擬合
每一次學習時,這次讓一部分節點學習,下次讓另一部分節點學習
這樣每次學習就能學到不同的過擬合特徵
最後再用的時候,過擬合相互抵消,就解決了過擬合的問題
l2正則化:
將loss改為loss = loss + (a/2n)*(w1 * w1 + w2 * w2 + ....... + wm * wm)
a為自己指定的係數,n為樣本個數,w就是我們訓練時的w
這樣的話,在做反向傳播的時候dwi = dwi + (a/n) * wi
wi = wi - learning_rate * dwi
那麼那個多出來的東西會使無論此時的wi是什麼,我們都會試圖讓他變得更小
讓w趨近於0,就會弱化這個神經元對結果的影響,達到了減小神經網路複雜度的效果
高偏差的解決辦法:
高偏差沒什麼好說的,就是神經網路太簡單了唄
這時候要麼繼續訓練,要麼加資料,要麼就加節點,加層數
最好不要加層數,因為3層的神經網路已經可以表示一切連續函式了
沒必要多加
偏差和方差
當我們的模型表現不佳時,通常是出現兩種問題,一種是 高偏差 問題,另一種是 高方差 問題。識別它們有助於選擇正確的優化方式,所以我們先來看下 偏差 與 方差 的意義。對於 多項式回歸,當次數選取較低時,我們的 訓練集誤差 和 交叉驗證集誤差 都會很大 當次數選擇剛好時,訓練集誤差 和 交叉驗證集誤差...
偏差和方差
當我們費勁周章不斷調參來訓練模型時,不可避免地會思考一系列問題,模型好壞的評判標準是什麼?改善模型的依據何在?何時停止訓練為佳?要解決上述問題,我們需要引入偏差和方差這兩個概念,理解他們很重要,也是後續了解過擬合 正則化 提早終止訓練 資料增強等概念和方法的前提。一 概念定義 偏差 bias 偏差衡...
偏差和方差
偏差 bias 偏差衡量了模型的 值與實際值之間的偏離關係。方差 variance 方差描述的是訓練資料在不同迭代階段的訓練模型中,值的變化波動情況 或稱之為離散情況 一 低偏差,低方差 這是訓練的理想模型,此時藍色點集基本落在靶心範圍內,且資料離散程度小,基本在靶心範圍內 二 低偏差,高方差 這是...