深度學習基礎系列(八)| 誤差和方差

  當咱們費勁周章不斷調參來訓練模型時,不可避免地會思考一系列問題,模型好壞的評判標準是什麼?改善模型的依據何在?什麼時候中止訓練爲佳?學習

  要解決上述問題,咱們須要引入誤差和方差這兩個概念,理解他們很重要,也是後續瞭解過擬合、正則化、提前終止訓練、數據加強等概念和方法的前提。測試

 

1、概念定義

  • 誤差(bias):誤差衡量了模型的預測值與實際值之間的偏離關係。一般在深度學習中,咱們每一次訓練迭代出來的新模型,都會拿訓練數據進行預測,誤差就反應在預測值與實際值匹配度上,好比一般在keras運行中看到的準確度爲96%,則說明是低誤差;反之,若是準確度只有70%,則說明是高誤差。
  • 方差(variance):方差描述的是訓練數據在不一樣迭代階段的訓練模型中,預測值的變化波動狀況(或稱之爲離散狀況)。從數學角度看,能夠理解爲每一個預測值與預測均值差的平方和的再求平均數。一般在深度學習訓練中,初始階段模型複雜度不高,爲低方差;隨着訓練量加大,模型逐步擬合訓練數據,複雜度開始變高,此時方差會逐漸變高。

 

2、圖形定義

     

  這是一張常見的靶心圖。能夠想象紅色靶心表示爲實際值,藍色點集爲預測值。在模型不斷地訓練迭代過程當中,咱們能碰到四種狀況:大數據

  • 低誤差,低方差:這是訓練的理想模型,此時藍色點集基本落在靶心範圍內,且數據離散程度小,基本在靶心範圍內;
  • 低誤差,高方差:這是深度學習面臨的最大問題,過擬合了。也就是模型太貼合訓練數據了,致使其泛化(或通用)能力差,若遇到測試集,則準確度降低的厲害;
  • 高誤差,低方差:這每每是訓練的初始階段;
  • 高誤差,高方差:這是訓練最糟糕的狀況,準確度差,數據的離散程度也差。

 

3、數學定義

  咱們從簡單的迴歸模型來入手,對於訓練數據集S = {(xi , yi)},令yi = f(xi) + ε,假設爲實際方程,其中ε是知足正態分佈均值爲0,標準差爲σ的值。spa

  咱們再假設預測方程爲h(x) = wx + b,這時咱們但願總偏差Err(x) = ∑i [yi - h(xi)]2 能達到最小值。給定某集合樣本(x, y),咱們能夠展開偏差公式,以生成用方差、誤差和噪音組合的方式。翻譯

  在此以前,咱們來引入一個輔助公式,令z爲知足正態分佈的隨機值集合,再令z = E(z),即z 爲z的平均值。3d

  則E [(z - z)2] = E [z2 -2zz + z2]blog

         = E [z2] - 2E [z]z + z2     注:E[z] = z,由於z是一個均值,其偏差便是本身資源

         = E [z2] - 2zz + z2 深度學習

         =  E [z2] - z2 數學

  能夠獲得一個輔助公式: E [z2] = E [(z - z)2] + z,最後讓咱們來開展偏差公式:

  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 + 噪音 組成,通常來講,隨着模型複雜度的增長,方差會逐漸增大,誤差會逐漸減少,見下圖:

 

  

4、過擬合、欠擬合和剛好

  誤差的變化趨勢相信你們都容易理解,隨着模型的不斷訓練,準確度不斷上升,天然誤差逐漸下降。但方差的變化趨勢卻不易理解,爲什麼訓練初始階段是低方差,訓練後期易是高方差?

  注意方差的數學公式爲:E [(h(x) - h(x))2] ,也就是說爲每一個預測值與預測均值差的平方和再求平均數,能夠表現爲一種波動變化,低方差意味低變化,高方差意味高變化。那咱們能夠經過訓練的不一樣階段來直觀感覺方差的變化:

  上圖爲訓練初始階段,咱們的模型(藍線)對訓練數據(紅點)擬合度不好,是高誤差,但藍線近似線性組合,其波動變化小,套用數學公式也可知數值較小,故爲低方差,這個階段也稱之爲欠擬合(underfitting),須要加大訓練迭代數。

  上圖爲訓練的後期階段,可明顯看出模型的擬合度很好,是低誤差,但藍線的波動性很是大,爲高方差,這個階段稱之爲過擬合(overfitting),問題很明顯,藍線模型很適合這套訓練數據,但若是用測試數據來檢驗模型,就會發現泛化能力差,準確度降低。

  所以咱們須要二者之間的一個模型。

  上圖這個藍色模型可認爲是「剛好」的一個模型,既能跟訓練數據擬合,又離完美擬合保持必定距離,模型更具通用性,用測試數據驗證會發現準確度也不錯。

  這個模型怎麼來呢?咱們能夠採起不少手段,好比:

  • 加大數據量,數據越多,天然其泛化能力也越強。但現實狀況咱們不能像大公司那樣擁有不少資源,那怎麼辦?一種可行的辦法就是根據已有的數據作數據加強,好比旋轉、反轉、白加強等操做造出不少數據;
  • 正則化(regularization,我的感受中文翻譯未能表達英文原義,應該是表達約束、調整的意思),一般來講有dropout、L二、L1等正則化手段;
  • 提前結束訓練,防止訓練過擬合化。

 

5、結論  

  由此看出,深度學習不可是一門科學,更像是一門藝術。咱們選擇一個好的模型,不斷調整參數來跨越欠擬合,避免過擬合,創建心目中理想的「剛好」模型。這看上去更像一個不斷升級打怪的經驗之學,須要咱們多多練習,但其背後支撐的數學原理也是須要咱們去好好理解和掌握。

相關文章
相關標籤/搜索