一. 如何評(píng)估泛化能力
在機(jī)器學(xué)習(xí)中泊碑,我們用訓(xùn)練數(shù)據(jù)集去訓(xùn)練一個(gè)模型掸宛,通常會(huì)定義一個(gè)Loss誤差函數(shù)。通過(guò)梯度下降等算法將這個(gè)Loss最小化肴焊,來(lái)提高模型的性能。然而我們學(xué)習(xí)一個(gè)模型的目的是為了解決實(shí)際的問(wèn)題功戚,單純地將訓(xùn)練數(shù)據(jù)集的loss最小化娶眷,并不能保證它在泛化一般問(wèn)題時(shí)仍然是最優(yōu),甚至不能保證模型是可用的啸臀。所以我們要定義一種方式届宠,來(lái)評(píng)估模型的泛化能力,也就是預(yù)測(cè)能力乘粒。
通常來(lái)說(shuō)豌注,我們會(huì)將數(shù)據(jù)集分成,訓(xùn)練集和測(cè)試集灯萍,比例一般是7:3轧铁。使用訓(xùn)練集去訓(xùn)練模型,使用測(cè)試集去評(píng)估模型的泛化能力旦棉。
- 對(duì)于回歸問(wèn)題:我們可以直接在測(cè)試集上計(jì)算代價(jià)函數(shù)齿风,來(lái)評(píng)估泛化能力。
-
對(duì)于分類問(wèn)題:
1.可以使用在測(cè)試集上計(jì)算代價(jià)函數(shù)绑洛,來(lái)評(píng)估泛化能力救斑。
2.還可以計(jì)算誤分類比率:當(dāng)發(fā)生誤判時(shí),err=1真屯;正確判定時(shí)脸候,err=0;
然后對(duì)測(cè)試集上的所有元素的err求和,做平均值纪他。
二. 模型選擇
有的時(shí)候鄙煤,我們?cè)陂_始時(shí),可能有多個(gè)模型可以選擇茶袒,我們需要選擇一個(gè)最優(yōu)的模型梯刚,然后再優(yōu)化。
假設(shè)我們要在10個(gè)不同次數(shù)的二項(xiàng)式模型之間進(jìn)行選擇:
如果我們使用訓(xùn)練集訓(xùn)練這10個(gè)模型薪寓,然后用測(cè)試集評(píng)估出一個(gè)泛化能力最好的模型亡资,假設(shè)選定模型3。這看似很有道理向叉,但是在選定模型后锥腻,調(diào)節(jié)參數(shù)的過(guò)程中,還能使用測(cè)試集嗎母谎?我們已經(jīng)用測(cè)試集來(lái)選擇模型了瘦黑,這有失公平性。
因此奇唤,我們將數(shù)據(jù)集劃分為 訓(xùn)練集:驗(yàn)證集:測(cè)試集=6:2:2幸斥,用驗(yàn)證集去選擇模型,用測(cè)試集去調(diào)節(jié)參數(shù)咬扇。
總結(jié):
在有多個(gè)備選模型甲葬,多個(gè)備選正則參數(shù),多種神經(jīng)網(wǎng)絡(luò)隱藏層結(jié)構(gòu)懈贺,等情況下经窖,我們可以使用驗(yàn)證集來(lái)選擇模型,然后用測(cè)試集評(píng)估泛化能力梭灿。
三. 偏差與方差
假設(shè):數(shù)據(jù)集是D画侣,數(shù)據(jù)集元素個(gè)數(shù)是m,經(jīng)過(guò)模型預(yù)測(cè)的輸出是f(x)堡妒,樣本客觀真實(shí)標(biāo)記是yi棉钧,數(shù)據(jù)集中的標(biāo)記是yDi。有可能由于數(shù)據(jù)錯(cuò)誤涕蚤,導(dǎo)致數(shù)據(jù)集中的標(biāo)記與實(shí)際不同。
由公式可以看出:
- 偏差度量了學(xué)習(xí)算法的期望預(yù)測(cè)與真實(shí)標(biāo)記的偏離程度的诵,刻畫了算法的準(zhǔn)確性万栅。
- 方差度量了學(xué)習(xí)算法預(yù)測(cè)值的波動(dòng)情況。
- 噪聲則表示任何學(xué)習(xí)算法在泛化能力的下界西疤,描述了學(xué)習(xí)問(wèn)題本身的難度烦粒。
假設(shè)我們現(xiàn)在有一組訓(xùn)練數(shù)據(jù),需要訓(xùn)練一個(gè)模型。在訓(xùn)練過(guò)程的最初扰她,bias很大兽掰,因?yàn)槲覀兊哪P瓦€沒(méi)有來(lái)得及開始學(xué)習(xí),也就是與“真實(shí)模型”差距很大徒役。然而此時(shí)variance卻很小孽尽,因?yàn)橛?xùn)練數(shù)據(jù)集(training data)還沒(méi)有來(lái)得及對(duì)模型產(chǎn)生影響,所以此時(shí)將模型應(yīng)用于“不同的”訓(xùn)練數(shù)據(jù)集也不會(huì)有太大差異忧勿。而隨著訓(xùn)練過(guò)程的進(jìn)行杉女,bias變小了,因?yàn)槲覀兊哪P妥兊谩奥斆鳌绷嗽昧烁嚓P(guān)于“真實(shí)模型”的信息熏挎,輸出值與真實(shí)值之間更加接近了。但是如果我們訓(xùn)練得時(shí)間太久了晌砾,variance就會(huì)變得很大坎拐,因?yàn)槲覀兂藢W(xué)習(xí)到關(guān)于真實(shí)模型的信息,還學(xué)到了許多具體的养匈,只針對(duì)我們使用的訓(xùn)練集(真實(shí)數(shù)據(jù)的子集)的信息哼勇。
總結(jié)一下:
- 偏差:刻畫模型預(yù)測(cè)能力的準(zhǔn)確性,如果數(shù)據(jù)足夠多乖寒,bias始終過(guò)大猴蹂,則可能模型復(fù)雜度不夠,欠擬合楣嘁。
- 方差:刻畫模型預(yù)測(cè)值的浮動(dòng)情況磅轻,如果方差過(guò)大,波動(dòng)性太強(qiáng)逐虚,說(shuō)明擬合的太好聋溜,可能發(fā)生過(guò)擬合。
四. 誤差診斷
假設(shè)用d表示多項(xiàng)式的指數(shù)(也就是模型復(fù)雜程度)
對(duì)于訓(xùn)練集叭爱,當(dāng) d 較小時(shí)撮躁,模型擬合程度更低,誤差較大买雾;隨著 d 的增長(zhǎng)把曼,擬合程度提高,誤差減小漓穿。
對(duì)于驗(yàn)證集嗤军,當(dāng) d 較小時(shí),模型擬合程度低晃危,誤差較大叙赚;但是隨著 d 的增長(zhǎng)老客,誤差呈現(xiàn)先減小后增大的趨勢(shì),轉(zhuǎn)折點(diǎn)是我們的模型開始過(guò)擬合訓(xùn)練數(shù)據(jù)集的時(shí)候震叮。
總結(jié):如果驗(yàn)證集誤差較大胧砰?如何判斷過(guò)擬合、欠擬合苇瓣?
訓(xùn)練集誤差和交叉驗(yàn)證集誤差近似時(shí):偏差/欠擬合
交叉驗(yàn)證集誤差遠(yuǎn)大于訓(xùn)練集誤差時(shí):方差/過(guò)擬合
五. 學(xué)習(xí)曲線
學(xué)習(xí)曲線就是一種很好的工具尉间,可以使用學(xué)習(xí)曲線來(lái)判斷某一個(gè)學(xué)習(xí)算法是否處于偏差、方差問(wèn)題钓简。學(xué)習(xí)曲線是學(xué)習(xí)算法的一個(gè)很好的合理檢驗(yàn)(sanity check)乌妒。學(xué)習(xí)曲線通過(guò)增加訓(xùn)練集的規(guī)模,來(lái)判斷擬合問(wèn)題外邓。
即撤蚊,如果我們有100行數(shù)據(jù),我們從1行數(shù)據(jù)開始损话,逐漸學(xué)習(xí)更多行的數(shù)據(jù)侦啸。
一般來(lái)說(shuō),學(xué)習(xí)曲線大致如下圖所示丧枪,橫坐標(biāo)表示訓(xùn)練集規(guī)模光涂,縱坐標(biāo)表示代價(jià)(錯(cuò)誤)。當(dāng)數(shù)據(jù)規(guī)模很小的時(shí)候拧烦,便于擬合訓(xùn)練集數(shù)據(jù)忘闻,所以訓(xùn)練集的錯(cuò)誤很低;但是泛化能力很差恋博,驗(yàn)證集中錯(cuò)誤很多齐佳。隨著數(shù)據(jù)量的增多,泛化能力越來(lái)越好债沮,驗(yàn)證集的錯(cuò)誤減少炼吴,但是訓(xùn)練集的擬合誤差變大,畢竟樣本越多越難擬合疫衩。最終2條曲線將不斷靠近硅蹦,收斂于一個(gè)邊界。
1. 欠擬合曲線特點(diǎn)
- 兩條曲線收斂的很快闷煤,收斂邊界處于很高的錯(cuò)誤水平童芹。
- 兩條曲線間的差距很小。
- 無(wú)論數(shù)據(jù)規(guī)模變得多大鲤拿,收斂邊界都維持在高錯(cuò)誤水平辐脖。
總結(jié):訓(xùn)練集與測(cè)試集快速變化到一個(gè)穩(wěn)定的高錯(cuò)誤水平,且不再變化皆愉,很可能發(fā)生欠擬合。
2. 過(guò)擬合曲線特點(diǎn)
- 訓(xùn)練集錯(cuò)誤維持的很低的水平,驗(yàn)證集(測(cè)試集)錯(cuò)誤很高幕庐。
- 隨著樣本規(guī)模增加久锥,兩條曲線不斷靠近,但是很難收斂异剥。
- 驗(yàn)證集(測(cè)試集)的錯(cuò)誤瑟由,比訓(xùn)練集的錯(cuò)誤高很多。
總結(jié):訓(xùn)練集維持在較低錯(cuò)誤水平冤寿,測(cè)試集維持在較高錯(cuò)誤水平歹苦,差距較大,很可能發(fā)生過(guò)擬合督怜。
六. 改進(jìn)策略
1. 過(guò)擬合:
- 獲得更多的訓(xùn)練實(shí)例
- 嘗試減少特征的數(shù)量
- 嘗試增加正則化程度λ
1. 欠擬合:
- 嘗試獲得更多的特征
- 嘗試增加多項(xiàng)式特征
- 嘗試減少正則化程度λ
使用較小的神經(jīng)網(wǎng)絡(luò)殴瘦,類似于參數(shù)較少的情況,容易導(dǎo)致高偏差和欠擬合号杠,但計(jì)算代價(jià)較小蚪腋。使用較大的神經(jīng)網(wǎng)絡(luò),類似于參數(shù)較多的情況姨蟋,容易導(dǎo)致高方差和過(guò)擬合屉凯,雖然計(jì)算代價(jià)比較大,但是可以通過(guò)正則化手段來(lái)調(diào)整而更加適應(yīng)數(shù)據(jù)眼溶。
通常選擇較大的神經(jīng)網(wǎng)絡(luò)并采用正則化處理會(huì)比采用較小的神經(jīng)網(wǎng)絡(luò)效果要好悠砚。
對(duì)于神經(jīng)網(wǎng)絡(luò)中的隱藏層的層數(shù)的選擇,通常從一層開始逐漸增加層數(shù)堂飞,為了更好地作選擇灌旧,可以把數(shù)據(jù)分為訓(xùn)練集、交叉驗(yàn)證集和測(cè)試集酝静,針對(duì)不同隱藏層層數(shù)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練神經(jīng)網(wǎng)絡(luò)节榜, 然后選擇交叉驗(yàn)證集代價(jià)最小的神經(jīng)網(wǎng)絡(luò)。