當我們費勁周章不斷調參來訓練模型時,不可避免地會思考一系列問題,模型好壞的評判標準是什麼?改善模型的依據何在?何時停止訓練為佳?
要解決上述問題,我們需要引入偏差和方差這兩個概念,理解他們很重要,也是後續了解過擬合、正則化、提早終止訓練、資料增強等概念和方法的前提。
一、概念定義
偏差(bias):偏差衡量了模型的**值與實際值之間的偏離關係。通常在深度學習中,我們每一次訓練迭代出來的新模型,都會拿訓練資料進行**,偏差就反應在**值與實際值匹配度上,比如通常在keras執行中看到的準確度為96%,則說明是低偏差;反之,如果準確度只有70%,則說明是高偏差。
方差(variance):方差描述的是訓練資料在不同迭代階段的訓練模型中,**值的變化波動情況(或稱之為離散情況)。從數學角度看,可以理解為每個**值與**均值差的平方和的再求平均數。通常在深度學習訓練中,初始階段模型複雜度不高,為低方差;隨著訓練量加大,模型逐步擬合訓練資料,複雜度開始變高,此時方差會逐漸變高。
二、圖形定義
這是一張常見的靶心圖。可以想象紅色靶心表示為實際值,藍色點集為**值。在模型不斷地訓練迭代過程中,我們能碰到四種情況:
低偏差,低方差:這是訓練的理想模型,此時藍色點集基本落在靶心範圍內,且資料離散程度小,基本在靶心範圍內;
低偏差,高方差:這是深度學習面臨的最大問題,過擬合了。也就是模型太貼合訓練資料了,導致其泛化(或通用)能力差,若遇到測試集,則準確度下降的厲害;
高偏差,低方差:這往往是訓練的初始階段;
高偏差,高方差:這是訓練最糟糕的情況,準確度差,資料的離散程度也差。
三、數學定義
我們從簡單的回歸模型來入手,對於訓練資料集s = ,令yi = f(xi) + ε,假設為實際方程,其中ε是滿足正態分佈均值為0,標準差為σ的值。
我們再假設**方程為h(x) = wx + b,這時我們希望總誤差err(x) = ∑i [yi - h(xi)]2 能達到最小值。給定某集合樣本(x, y),我們可以展開誤差公式,以生成用方差、偏差和噪音組合的方式。
在此之前,我們來引入乙個輔助公式,令z為滿足正態分佈的隨機值集合,再令z = e(z),即z 為z的平均值。
則e [(z - z)2] = e [z2 -2zz + z2]
= e [z2] - 2e [z]z + z2 注:e[z] = z,因為z是乙個均值,其誤差即是自己
= e [z2] - 2zz + z2
= e [z2] - z2
可以得到乙個輔助公式: e [z2] = e [(z - z)2] + z2 ,最後讓我們來開展誤差公式:
e [y - h(x)]2 = e [y2 - 2yh(x) + h(x)2]
= e [y2] - 2e[y] e[h(x)] + e[h(x)2]
= e [(y - y)2] + y2 - 2e[y]h(x) + e [(h(x) - h(x))2] + h(x)2
= e [(y - (fx))2] + f(x)2 - 2f(x)h(x) + e [(h(x) - h(x))2] + h(x)2
= e [(h(x) - h(x))2] + (h(x) - f(x))2 + e[(y - (fx))2]
= variance + bias2 + noise
注:y = e[y] = e[f(x) + ε] = e[f(x)] + e[ε] = e[f(x)] = f(x),ε均值已經被假定為0,對於具體的x,其e[f(x)] = f(x)
由此可見,誤差 = 方差 + 偏差2 + 噪音 組成,一般來說,隨著模型複雜度的增加,方差會逐漸增大,偏差會逐漸減小,見下圖:
四、過擬合、欠擬合和恰好
偏差的變化趨勢相信大家都容易理解,隨著模型的不斷訓練,準確度不斷上公升,自然偏差逐漸降低。但方差的變化趨勢卻不易理解,為何訓練初始階段是低方差,訓練後期易是高方差?
注意方差的數學公式為:e [(h(x) - h(x))2] ,也就是說為每個**值與**均值差的平方和再求平均數,可以表現為一種波動變化,低方差意味低變化,高方差意味高變化。那我們可以通過訓練的不同階段來直觀感受方差的變化:
上圖為訓練初始階段,我們的模型(藍線)對訓練資料(紅點)擬合度很差,是高偏差,但藍線近似線性組合,其波動變化小,套用數學公式也可知數值較小,故為低方差,這個階段也稱之為欠擬合(underfitting),需要加大訓練迭代數。
上圖為訓練的後期階段,可明顯看出模型的擬合度很好,是低偏差,但藍線的波動性非常大,為高方差,這個階段稱之為過擬合(overfitting),問題很明顯,藍線模型很適合這套訓練資料,但如果用測試資料來檢驗模型,就會發現泛化能力差,準確度下降。
因此我們需要兩者之間的乙個模型。
上圖這個藍色模型可認為是「恰好」的乙個模型,既能跟訓練資料擬合,又離完美擬合保持一定距離,模型更具通用性,用測試資料驗證會發現準確度也不錯。
這個模型怎麼來呢?我們可以採取很多手段,比如:
加大資料量,資料越多,自然其泛化能力也越強。但現實情況我們不能像大公司那樣擁有很多資源,那怎麼辦?一種可行的辦法就是根據已有的資料做資料增強,比如旋轉、反轉、白增強等操作造出很多資料;
正則化(regularization,個人感覺中文翻譯未能表達英文原義,應該是表達約束、調整的意思),通常來說有dropout、l2、l1等正則化手段;
提早結束訓練,防止訓練過擬合化。
五、結論
由此看出,深度學習不但是一門科學,更像是一門藝術。我們選擇乙個好的模型,不斷調整引數來跨越欠擬合,避免過擬合,建立心目中理想的「恰好」模型。這看上去更像乙個不斷公升級打怪的經驗之學,需要我們多多練習,但其背後支撐的數學原理也是需要我們去好好理解和掌握。
偏差和方差
當我們的模型表現不佳時,通常是出現兩種問題,一種是 高偏差 問題,另一種是 高方差 問題。識別它們有助於選擇正確的優化方式,所以我們先來看下 偏差 與 方差 的意義。對於 多項式回歸,當次數選取較低時,我們的 訓練集誤差 和 交叉驗證集誤差 都會很大 當次數選擇剛好時,訓練集誤差 和 交叉驗證集誤差...
偏差和方差
偏差 bias 偏差衡量了模型的 值與實際值之間的偏離關係。方差 variance 方差描述的是訓練資料在不同迭代階段的訓練模型中,值的變化波動情況 或稱之為離散情況 一 低偏差,低方差 這是訓練的理想模型,此時藍色點集基本落在靶心範圍內,且資料離散程度小,基本在靶心範圍內 二 低偏差,高方差 這是...
高偏差和高方差
首先我來介紹一下高方差和高偏差的概念,可能很多人理解的不是很清楚。偏差 是指乙個模型的在不同訓練集上的平均效能和最優模型的差異。偏差可以用來衡量乙個模型的擬合能力。偏差越大,值平均效能越偏離最優模型。偏差衡量模型的 能力,物件是乙個在不同訓練集上模型,形容這個模型平均效能對最優模型的 能力。方差 v...