吳恩達深(shen)度學(xue)習課程(cheng)二: 改善深(shen)層神經網絡 第(di)一(yi)周:深(shen)度學(xue)習的實(shi)踐(一(yi))偏(pian)差與方差
此分類用于記錄吳恩達深度學習課程的學習筆記。
課程(cheng)相關信息鏈接如下(xia):
- 原課程視頻鏈接:
- github課程資料,含課件與筆記:
- 課程配套練習(中英)與答案:
本篇為(wei)第(di)二(er)課第(di)一周(zhou)的內(nei)容,到的內(nei)容。
本(ben)周(zhou)為第二課(ke)的(de)第一(yi)周(zhou)內(nei)容,就像課(ke)題(ti)名稱一(yi)樣,本(ben)周(zhou)更偏向于(yu)深度(du)學(xue)習實踐(jian)中出現(xian)的(de)問題(ti)和概(gai)念,在有了第一(yi)課(ke)的(de)機器學(xue)習和數學(xue)基礎后(hou),可(ke)以(yi)說(shuo),在理解(jie)上對(dui)本(ben)周(zhou)的(de)內(nei)容不會存在什么(me)難(nan)度(du)。
當然(ran),我也會對(dui)一(yi)些新出現的(de)概念補充(chong)一(yi)些基礎(chu)內容(rong)來幫助理解,在(zai)有之前基礎(chu)的(de)情況(kuang)下,按部就(jiu)班即可對(dui)本(ben)周內容(rong)有較好的(de)掌握。
1.數據劃分
我們在第一課的第二周習題部分就已經簡單介紹了訓練集,驗證集,測試集的概念,這里跟隨課程進度,我們再補充一些細節:

這便是一些常用的數據劃分方式,此外,在實際應用中,我們還應注意一點,就是訓練集和后二者的來源,分布可能不同,這也需要我們有相應的措施,具體看一下:

這便是在數據劃分部分課程補充的一些內容,接下來我們引入兩個新概念:偏差和方差。
2.偏差和方差
2.1 什么是偏差和方差
還是先(xian)擺一下概念吧,這事好(hao)久沒做(zuo)了:
偏差是指模型的預測值與真實值之間的系統性誤差。它衡量的是模型對數據真實規律的擬合能力。
方差是指模型對訓練數據中隨機噪聲或小波動的敏感程度。它衡量的是模型在不同訓練集上訓練時,其預測結果的不穩定性。
我們用課程里的具體例子來理解一下這兩個概念:

依舊是二分類:
我們先看第一幅圖,這里,我們用一條直線來進行分類,很明顯,出現了很多被錯誤分類的樣本。
對于這種不能較好的擬合,誤差較大的結果,就是高偏差。
高偏差的基本表現就是欠擬合(Underfitting),即在訓練集和驗證集上的表(biao)現都(dou)很差。如(ru)用一條直(zhi)線去擬合一組明顯呈拋物線分布的數據。
然后再看第三幅圖,這里,我們非常準確的區分了每一個樣本。
但是要注意,我們觀察發現,在圖中,有兩個樣本偏離了大部分該類樣本的位置。
對于這種變異的,無法正確反應類別規律的樣本數據,我們就稱為噪聲。
而在第三幅圖中,我們的模型敏感度較高,為了擬合這兩個無法正確反應規律的樣本,反而降低了最終的準確率,這種過于敏感以至于擬合噪聲導致性能下降的結果,就是高方差。
高方差的基本表示就是過擬合(Overfitting),即在(zai)訓練集(ji)上表現很(hen)好,但(dan)在(zai)驗證集(ji)或測試集(ji)上表現很(hen)差(cha)。就像一(yi)個(ge)非常(chang)復雜的(de)神經網絡(luo),完美記(ji)住了訓練數據的(de)所有點(包括噪聲),反而會對新(xin)數據泛化能(neng)力極差(cha)。
而我們在第二份圖標注合適的原因,就是因為它做到了擬合大部分數據的規律實現低偏差,又沒有被噪聲干擾偏離正確規律從而實現低方差。
低偏差(cha)和低方(fang)差(cha),就是我(wo)們追求的模型目標。
2.2 從數據分析偏差和方差高低
現在,我們已經知道了偏差和方差的概念,而在實際代碼運行中,我們則需要從代碼的結果,即評估指標來判斷這兩點,來繼續看貓狗分類的例子,我們從代碼結果上看看如何分析偏差和方差的高低。

簡單來說:
偏差高低就看數據在訓練集上的表現好不好。
方差高低就看數據在訓練集和驗證集上的差別大不大。
此外,并不是說只有0.5%或以下才是低方差或者低誤差。
這涉及到一個基本誤差的概念:我們人眼判斷錯誤的概率。
假設我們人眼只有1%的概率會錯誤分類貓狗,那我們的方差和偏差的高低標準就會以1%為標準判斷。
基本誤差根據任務不同,自然(ran)也不同。
等等,好像還有一點不太清晰。
我們剛剛引出概念的時候談到,高偏差的表現是欠擬合,高方差的表現是過擬合,但從二者的定義上來看,欠擬合和過擬合不是沖突的嗎?那為什么高偏差和高方差可以同時存在呢?
對(dui)于這(zhe)個問(wen)題,從表面上看:
- 高偏差 → 欠擬合(模型太簡單,對規律學得不夠)
- 高方差 → 過擬合(模型太復雜,對噪聲學得太多)
似乎一個模型“學的不夠”,另一個“學的太多”,那怎么可能又多又少?
問題就在于——我們用“表現”來簡化這兩個概念,但其實它們真正反映的是模型表現的兩個不同維度。
舉一個飛鏢的例子 : - 每次都扔偏了靶心(高偏差);
- 而且每次落點都不一樣(高方差)。
這就是“又不準又不穩”的情況,即 高偏差 + 高方差同時存在。
其次,欠擬合和過擬合都可以是局部的,我們可能在圖像某一區域發生了欠擬合,又在另一區域發生了過擬合,從這個角度看,即 欠擬合 + 過擬合同時存在。
這樣便可以比較好的回答這個問題。
2.3 如何調整偏差和方差
現在我們已經知道如何判斷算法的偏差和誤差情況了,那相應的,采取什么樣的措施才能調整二者,從而實現算法的調優呢?
總結成一張圖如下:

這是一些基本措施。
要說明的一點是,方差和誤差往往是聯動的,我們的一些措施往往會同時增加或減少二者,用什么算法,什么樣的超參數等等都會產生影響,而隨著技術的發展,才出現了可以單獨影響二者之一的新方法技術,我們遇到再說。
總結來說,構建更大,更復雜的網絡往往能起到更好的效果,但實際上,在這方面,目前并沒有數學概念上的“最優解”,即可以在所有問題上實現最好效果的架構或算法。
這便是(shi)為(wei)什(shen)么(me)我(wo)們往(wang)(wang)往(wang)(wang)把訓練模(mo)型稱(cheng)為(wei)“煉丹”的原因,我(wo)們需要一點點,一步步地調試,來摸(mo)索出針對自(zi)己(ji)的問(wen)題效果最好的模(mo)型,有(you)些(xie)時候,我(wo)們自(zi)己(ji)也(ye)不知(zhi)道為(wei)什(shen)么(me)某(mou)樣組(zu)合能(neng)達到更好的效果。
這便是本篇的內容,下一篇,我們就會介紹到剛剛的圖里新出現的概念:正則化,它可以幫我們緩解過擬合的問題。
