欠擬合與過擬合問題是機器學習中的經典問題,儘管相關的討論和預防方法非常多,但目前在許多任務中仍經常會出現過擬合等問題,還沒有找到乙個十分通用、有效的解決方法。不過總體上看,現在人們常用的一些很簡潔的方法基本上能夠較好地解決欠擬合與過擬合問題,總結如下。
欠擬合與過擬合的概念的成因比較簡單,觀點統一,這裡不再介紹。現在常用的判斷方法是從訓練集中隨機選一部分作為乙個驗證集,採用k折交叉驗證的方式,用訓練集訓練的同時在驗證集上測試演算法效果。在缺少有效預防欠擬合和過擬合措施的情況下,隨著模型擬合能力的增強,錯誤率在訓練集上逐漸減小,而在驗證集上先減小後增大;當兩者的誤差率都較大時,處於欠擬合狀態(high bias, low variance);當驗證集誤差率達到最低點時,說明擬合效果最好,由最低點增大時,處與過擬合狀態(high variance, low bias)。下圖的橫座標用擬合函式多項式的階數籠統地表徵模型擬合能力:
下面詳細介紹預防解決模型欠擬合與過擬合的常用方法及原理:
欠擬合因為對於給定資料集,欠擬合的成因大多是模型不夠複雜、擬合函式的能力不夠。
為此可以增加迭代次數繼續訓練、嘗試換用其他演算法、增加模型的引數數量和複雜程度,或者採用boosting等整合方法。
過擬合過擬合成因是給定的資料集相對過於簡單,使得模型在擬合函式時過分地考慮了雜訊等不必要的資料間的關聯。或者說相對於給定資料集,模型過於複雜、擬合能力過強。方法如下:
1.資料擴增:
人為增加資料量,可以用重取樣、上取樣、增加隨機雜訊、gan、影象資料的空間變換(平移旋轉映象)、尺度變換(縮放裁剪)、顏色變換、增加雜訊、改變解析度、對比度、亮度等。其中增加雜訊,可以在原始資料上直接加入隨機雜訊(更接近真實環境),也可以在權重上增加雜訊。
2.直接降低模型複雜度:
即減少模型引數數量。例如:對於lr,減少目標函式的因子數;對於dt,減少樹的深度、剪枝等;對於dnn,減少層數和每層權向量長度。
4.提前停止訓練:
也就是減少訓練的迭代次數。從上面的誤差率曲線圖可以看出,理論上能夠找到乙個訓練程度,此時驗證集誤差率最低,視為擬合效果最好的點。
5.多模型投票方法:
類似整合學習方法的思想,不同模型可能會從不同角度去擬合,互相之間取長補短,即使單獨使用某個模型已出現過擬合,但綜合起來卻有可能減低過擬合程度,起到正則作用,提高了泛化效果。特別是使用多個非常簡單的模型,更不容易產生過擬合。
以下是一系列常用的正則化方法:
從貝葉斯理論角度看,加入正則項相當於引入了乙個引數的先驗資訊,即人為給引數的選擇增加了一些規則(先驗),把人們的知識數學化告訴給模型的損失函式,從而縮小了解空間傾向於產生唯一解,使擬合出錯的概率變小,同時解決了逆問題的不適定性(多解問題)。不同的正則化項具有不同先驗分布,具體介紹如下。
6.l0正則化:
損失函式後面加上在加入l0範數 λ||w||0λ||w||0,也就是權向量中非零引數的個數。
它的特點是可以實現引數的稀疏性,使盡可能多的引數值為0,這與稀疏編碼的思想吻合。但它的缺點是在優化時是np難問題,很難優化。因此實際任務中更常用l1範數。
7.l1正則化:
損失函式l0l0後面加上引數(權向量ww)的l1範數項:λ||w||1=λ∑ni=1||wi||1λ||w||1=λ∑i=1n||wi||1 , 其中 nn 是權向量 ww 的長度(引數數量),λλ 是正則化引數,用來調和l0l0 與正則項,此時損失函式如下:
l=l0+λ||w||1
l=l0+λ||w||1
l1正則項等價於先驗概率服從拉普拉斯分布;此時若針對線性回歸就是lasso regression。l1範數是l0範數的最優凸近似,比l0範數容易優化,而且也可以很好地實現引數稀疏性,常別稱作「稀疏規則運算元」,因此相對l0正則化更常用。同時l1和l0因為具有使引數稀疏的特點,常用於特徵選擇。
8.l2正則化:
損失函式l0l0後面加上引數l2範數的平方項:λ2n||w||22=λ2n∑ni=1w2iλ2n||w||22=λ2n∑i=1nwi2 ,其大小由引數weight-decay(權值衰減)調節,此時損失函式如下:
l=l0+λ2n||w||22
l=l0+λ2n||w||22
其中分母有無nn均可,l2正則項等價於先驗概率服從高斯分布;此時針對線性回歸就是ridge regression,即常說的「嶺回歸」。與l0,l1不同的是,l2很難使某些引數達到0,它只能使引數接近0。如今在許多問題中,更常用l2正則是因為:一方面我們通常想考慮更多的引數對問題的影響(因此不能讓引數稀疏),另一方面在優化時,l2範數有利於解決condition number: k(a)=||a||||a−1||k(a)=||a||||a−1|| 太大(遠大於1)的情況下(此時存在某些引數,對結果有過大的影響)矩陣求逆很困難的問題,這使得優化求解變得更快更穩定。
現在有些任務中會同時使用l1和l2正則項,用各自的兩個正則化引數去權衡「部分稀疏」與「整體接近0」這一對trade-off問題。
上圖可以看出,服從拉普拉斯分布的l1正則項更傾向於產生稀疏引數,而服從高斯分布的l2正則項在0處相對比較平滑,在引數絕對值較大處抑制效果更好,使整體資料的分布更接近0。
9.(針對dnn)batch normalization:即bn,既能夠提高泛化能力,又大大提高訓練速度,現在被廣泛應用在dnn中的啟用層之前。bn的提出最初是針對dnn在訓練過程中會出現資料內部的協方差偏移現象,導致輸出資料分布發生額外的改變,並隨著層數的增加偏移加劇,使得模型不得不根據輸出分布的改變重新學習,這又導致訓練速度減慢。
公式如下:
具體過程:首先對某層的輸入樣本做白化處理,等價於零均值化處理(均值為0,方差為1),使輸入樣本之間互不相關,且每層的輸入服從相同分布,克服了內部協方差偏移的影響。採用分批處理資料的方式,減少了計算量。
主要優勢:減小了梯度對引數大小和初始值的依賴,將引數值(特徵)縮放在[0,1]區間(若針對relu還限制了輸出的範圍),這樣反向傳播時梯度控制在1左右,使網路即使在較高學習率下也不易發生梯度**或瀰散(也預防了在使用sigmoid作為啟用函式時訓練容易陷入梯度極小飽和或極大的極端情況)。
卷積神經網路引數
卷積神經網路 convolutional neural network,cnn 是深度學習技術中極具代表的網路結構之一,在影象處理領域取得了很大的成功,在國際標準的imagenet資料集上,許多成功的模型都是基於cnn的。cnn相較於傳統的影象處理演算法的優點之一在於,避免了對影象複雜的前期預處理過...
神經網路 卷積神經網路
這篇卷積神經網路是前面介紹的多層神經網路的進一步深入,它將深度學習的思想引入到了神經網路當中,通過卷積運算來由淺入深的提取影象的不同層次的特徵,而利用神經網路的訓練過程讓整個網路自動調節卷積核的引數,從而無監督的產生了最適合的分類特徵。這個概括可能有點抽象,我盡量在下面描述細緻一些,但如果要更深入了...
神經網路 卷積神經網路
1.卷積神經網路概覽 來自吳恩達課上一張,通過對應位置相乘求和,我們從左邊矩陣得到了右邊矩陣,邊緣是白色寬條,當畫素大一些時候,邊緣就會變細。觀察卷積核,左邊一列權重高,右邊一列權重低。輸入,左邊的部分明亮,右邊的部分灰暗。這個學到的邊緣是權重大的寬條 都是30 表示是由亮向暗過渡,下面這個圖左邊暗...