1. 什麼是過擬合?什麼是欠擬合?
過擬合其實就是在訓練樣本內能夠很好的擬合資料,而在訓練樣本外(沒有參與訓練的樣本)擬合效果很差,這樣的現象就是過擬合。如果你在訓練網路的過程中發現,模型準確率很高,但是在測試的時候發現準確率很低,那麼有可能就是發生了過擬合現象。也就是數過擬合沒有好的泛化能力。2. 過擬合形成的原因。泛化:指乙個模型應用到新樣本的能力,新樣本就是指沒有參與訓練的樣本資料。
欠擬合:無論在訓練樣本還是訓練樣本外,都不能很好的擬合資料的現象。
過擬合的發生是有過多的特徵變數,但是有非常小的訓練資料,就會發生過擬合。過擬合發生後一般有兩種解決方法:儘量減少特徵變數的數量。
在眾多的特徵變數中,有的特徵對模型的**沒有大的影響,但有的特徵又比較重要,此時就要考慮哪些特徵值得保留,哪些特徵應該放棄,這就需要模型的一些選擇演算法來判斷哪些需要保留,哪些需要放棄。正則化技術的使用
主要的正則化技術有:l1正則化、、l2正則化、dropout正則化、其他正則化方法。正則化思想下面介紹減少過擬合的一些正則化方法。
假設函式: y = a0 + a1 * x + a2 * x^2 +a3 * x ^3 + a4* x^4其中: a0, a1, a2, a3, a4 是引數(可以理解為權重), x 表示輸入的特徵。
假設後兩項對模型的影響並不是很大,如果直接丟棄在這兩個特徵並不是一種很好的選擇,因為對模型的影響不大並不代表對模型沒有影響,這時候我們不希望直接刪除這兩個特徵的,而是加入懲罰項使得引數a3, a4足夠小。
上面的例子其實就是正則化背後的思想,加入正則化(懲罰項)後,相當於盡量去簡化這個模型,這些引數越小,得到的函式就會越平滑,也就越簡單。所以使得引數盡量的小,就能使得模型更簡單的直觀原因。為什麼加入懲罰項後,能防止過擬合?目的:限制引數過多或者過大,避免模型更加複雜
過擬合產生原因就是因為引數過多。如果極端的假設,加入懲罰項後能構使得引數足夠小,那麼也就是數引數無限趨於0,這樣是不是就相當於減少了參數量。按照這種極端的假設是不是可以防止過擬合。總之引數盡量的小,就能使得模型簡單。下面看下為什麼加入懲罰項後,引數會變小?注意:公式中λ引數的作用是用來控制縮小每個引數(權重)的。那麼正則化的時候選擇乙個合適的正則化因子lamda則顯得十分重要。代價函式
反向傳播過程中更新引數:
由公式2可以看出更新引數時加了一項 λ / m 這項的加入減小了引數,所以更新後的引數(權重)比原來未加入懲罰項後的引數(權重)更小。這樣也就使得模型變的簡單,從而一定程度上防止了過擬合。
l1 正則化
l2 正則化
dropout 正則化的簡單理論在我的部落格《深度學習中的網路設計技術(一) ——理論概述》中有簡介。其他正則化方法:如何實施dropout?
使用反向隨機失活(inverted dropout), 引數:keep-prob:它表示保留某個神經元結點的概論。
測試階段:測試階段應用dropout函式會使得**受到干擾,所以測試階段不用dropout,但是要加入nn.eval()函式來引數。
每次迭代後,神經網路都會變得比以前更小,因此採用乙個較小神經網路和使用正則化的效果一樣。另外,從單個神經元入手,它的輸出不依賴單純的某個輸入,所以不會給任何乙個輸入加上太多的權重。
dropout會產生壓縮權重的效果,它類似於l2正則化,與l2正則化不同的是被應用的方式不同,dropout也會有所不同。
如何使用dropout? 可以在一些認為會發生過擬合的層中間加入,有的層不用加入dropout. 另一種方法是,根據層數大小的變化加入dropout,層數比較深的時候可以使得keep-prob變的小一點,也就是刪除結點的概率大點,如果層數比較淺,則將keep-prob設定大一點。
dropout 的一大缺點是,代價函式不再被明確定義,每次迭代都會隨即移除一些結點。某種程度上很難計算,所以失去了調節工具。
通過擴增訓練資料集解決過擬合,但是資料集的收集成本比較高,一般可以通過水平翻轉,變換,裁切,放大等手段來擴充資料集。所以擴充資料集也可以作為正則化方法使用。另一種方法是early stopping. 就是提前停止訓練神經網路。當驗證集上的損失曲線和訓練集上的損失曲線距離發生偏離時可以提前停止。
深度學習中的網路設計技術 一 理論概述
1 網路設計要點 網路設計考慮重點 1.精度 2.容量 3.效率 精度 網路 樣本的精度 tp tp fp 容量 容納資料量的多少,神經元越多,容量越大。效率 網路執行的效率,這是乙個很重要的指標。總結 層次要深,資訊要充分融合,計算量要足夠小。2 網路計算成本 h x w 表示輸出特徵圖的空間大小...
深度學習 網路正則化
in 1n i 1n yi f xi 2 r d min 1n i 1n yi f xi 2 r d 2 12 22l2 12 222 1 i i l2 1 i i 1 1 2 22 1 1 2 22 2 c 2 原理 對於某層神經元,在訓練階段均以概率p隨機將該神經元權重設定為0,在測試階段所有神...
深度學習中的正則化
任何可以使學習演算法有降低泛化誤差意向的改動都是正則化。乙個有效的正則化就是能顯著地降低方差而不過度增加偏差。最好的擬合模型總是乙個適當正則化的大型模型!資料增強是一種便宜且簡單的方法來增加你訓練資料的數量的方法。上面資料增強已經提到,向輸入中注入方差極小的雜訊等價於對權重施加範數懲罰,一般情況下,...