官术网_书友最值得收藏!

2.5 超參數(shù)與驗(yàn)證集

我們已經(jīng)學(xué)習(xí)了不少機(jī)器學(xué)習(xí)的概念,同時我們也引入了不少符號及專業(yè)術(shù)語。不知你是否已經(jīng)被這些概念弄糊涂了,現(xiàn)在我們就對這些內(nèi)容進(jìn)行梳理。我們可以很粗淺地認(rèn)為,機(jī)器學(xué)習(xí)其實(shí)就是通過一些優(yōu)化手段去調(diào)整數(shù)據(jù)權(quán)重w(參數(shù))。我們也了解到了梯度下降中的學(xué)習(xí)率α(步長)和正則化中權(quán)重衰減的懲罰因子λ都對機(jī)器學(xué)習(xí)算法的最終性能產(chǎn)生著巨大的影響,在學(xué)習(xí)過程中我們需要不停地調(diào)整學(xué)習(xí)率與懲罰因子,那么如何去區(qū)分這些不同的符號呢?

我們目前說到的學(xué)習(xí),通俗點(diǎn)也可以說是去尋找最佳的權(quán)重w,而學(xué)習(xí)率與懲罰因子這些設(shè)置,其實(shí)就是幫助我們?nèi)ふ易罴训臋?quán)重,這些設(shè)置控制著機(jī)器學(xué)習(xí)算法的行為,我們就將其統(tǒng)稱為超參數(shù)(Hyperparameters)。

雖然超參數(shù)與參數(shù)我們都需要去調(diào)整,但通常針對參數(shù)的調(diào)整叫作學(xué)習(xí),而對超參數(shù)的調(diào)整叫作選擇。其原因在于,我們通常在訓(xùn)練數(shù)據(jù)集中是不去修改超參數(shù)的。接下來引入一個例子幫助你理解參數(shù)和超參數(shù),“楊老師想在班上選擇一個‘爬樹小冠軍’,但大家都不會爬樹,不過小燦、小嫣和小姣同學(xué)熱情都很高漲。那楊老師就指著一棵樹說,你們先學(xué)會兒爬樹吧,然后再選出最厲害的那個。于是小嫣同學(xué)就去學(xué)了半小時的爬樹技能,結(jié)果摔得鼻青臉腫,不過至少還是學(xué)會了爬樹;小姣同學(xué)就比較靈敏學(xué)得快,爬得也快;小燦同學(xué)就不得了,經(jīng)過半小時的學(xué)習(xí)就和小猴子一樣厲害了。老師最后就讓他們?nèi)ヅ懒硗庖豢脴洌罱K,小燦獲得了‘猴王’稱號。”

以上例子中的同學(xué)各自學(xué)習(xí)爬樹的過程就相當(dāng)于機(jī)器學(xué)習(xí)中的學(xué)習(xí)過程,需要注意的是,她們都是學(xué)習(xí)爬同一棵樹,也就是都是在訓(xùn)練數(shù)據(jù)集中學(xué)習(xí)。而老師選擇哪一個厲害,就相當(dāng)于超參數(shù)選擇,選擇是在一棵新樹上進(jìn)行測試的。這里需要注意的一個小知識點(diǎn)是,超參數(shù)選擇的是同一算法的不同性能,或者是對同一算法族的選擇。就好像小燦、小嫣和小姣都是人,而且還都是女生。如果是對小猴、小貓和小狗的選擇,那就不算是超參數(shù)選擇了,那是不同算法的比較了。

以上例子中還有一個重點(diǎn)在于老師是讓她們在一棵“新樹”進(jìn)行比賽的,需要特別注意的是這里的“新樹”不是測試數(shù)據(jù)。剛開始進(jìn)入機(jī)器學(xué)習(xí)的“青椒”們常見的誤區(qū)就在于此,我們這里所說的“新樹”,稱之為驗(yàn)證數(shù)據(jù)集(validation set)。

簡單來說,我們將已知數(shù)據(jù)分成兩大部分,一部分用于訓(xùn)練,一部分用于測試。而在訓(xùn)練數(shù)據(jù)集中我們又可分為兩部分,一部分用于學(xué)習(xí)參數(shù),我們稱為訓(xùn)練數(shù)據(jù)集;一部分用于選擇超參數(shù),我們稱之為驗(yàn)證數(shù)據(jù)集。而最終性能測試的數(shù)據(jù),我們稱為測試數(shù)據(jù)集

那我們?yōu)槭裁匆@樣劃分呢?

我們先來玩一個簡單的搖骰子游戲,有三個骰子,每個骰子有6個面,如果能同時搖出三個6,那就可以得到一顆棒棒糖,獎勵給我們的“天選之子”。

正常情況下,搖出三個6的概率可看做獨(dú)立重復(fù)事件,其概率為:

我們能搖出“豹子”的概率只有0.46%,就連百分之一都沒有,假設(shè)我們班共有100個同學(xué)玩這個游戲,那么至少有一人獲得棒棒糖的概率又為多少呢?

我們班里至少一個同學(xué)搖出“豹子”的概率為0.371,看來棒棒糖送出去的概率還是比較小的。可是當(dāng)我們這個游戲被升級為“年級搖骰王選拔賽”時,我們共有7個班,每個班都可以參與進(jìn)來。假設(shè)每個班人數(shù)相同,那整個年級至少一人搖出豹子的概率又為多少呢?

我們整個年級能搖出“豹子”的概率就高達(dá)0.961了,這幾乎可以斷定,一定會出現(xiàn)這么一個“天選之人”了。

介紹完了以上的小游戲,不知你會不會有點(diǎn)失落。機(jī)器學(xué)習(xí)算法可以想象成在空間中找“分割面”,機(jī)器學(xué)習(xí)算法能力的大小也可以說成是可選分割面數(shù)量的多少。機(jī)器學(xué)習(xí)從某種程度上而言不就是去尋找我們游戲中的“豹子”嗎?一個人要搖出“豹子”的概率是很低的,但讓7個班、每班100個人去搖骰子,出現(xiàn)“豹子”的概率就非常大了。我們天真地以為這個“天選之人”就是賭神,但其實(shí)他和我們一樣普通。

一個班級就相當(dāng)于一套超參數(shù)配置下的學(xué)習(xí)算法,配置數(shù)量越多,就相當(dāng)于參加比賽的班級越多。我們在所有超參數(shù)配置中找一個最佳性能參數(shù),不就是相當(dāng)于在所有班級中找一個“搖骰王”嗎?

我們的模型能力越大,那最終在訓(xùn)練數(shù)據(jù)集中的表現(xiàn)也就會越好,但這個“好”是亂猜還是學(xué)習(xí),就需要在新的數(shù)據(jù)上測試一番,但我們并沒有真正的新數(shù)據(jù),我們只能劃分一部分訓(xùn)練數(shù)據(jù)去充當(dāng)“新數(shù)據(jù)”。初學(xué)者可能會把測試數(shù)據(jù)當(dāng)成驗(yàn)證數(shù)據(jù)來用,但要記住,驗(yàn)證數(shù)據(jù)是幫你去選擇超參數(shù)的,雖然驗(yàn)證數(shù)據(jù)不直接參與訓(xùn)練過程,但進(jìn)行超參數(shù)選擇的時候,其實(shí)也間接地包含在整個學(xué)習(xí)過程中

那怎樣去劃分訓(xùn)練數(shù)據(jù)與驗(yàn)證數(shù)據(jù)呢?

通常使用80%的訓(xùn)練數(shù)據(jù)作為訓(xùn)練,20%的數(shù)據(jù)用于驗(yàn)證。由于驗(yàn)證數(shù)據(jù)也用于“訓(xùn)練”,因此驗(yàn)證集的錯誤率是要低于真實(shí)的泛化錯誤率的。當(dāng)配置出了最佳的超參數(shù)時,再用測試數(shù)據(jù)集去測試學(xué)習(xí)器的泛化性能。

通常將數(shù)據(jù)集分成固定的訓(xùn)練集與固定的驗(yàn)證集,使用訓(xùn)練數(shù)據(jù)集去學(xué)習(xí),使用驗(yàn)證數(shù)據(jù)集去驗(yàn)證訓(xùn)練的結(jié)果。但測試是存在偶然性的,也許劃分出來的訓(xùn)練數(shù)據(jù)與驗(yàn)證數(shù)據(jù)差別很大,可能我們的機(jī)器學(xué)習(xí)算法性能也挺不錯的,但由于驗(yàn)證數(shù)據(jù)的問題,而變成了“竇娥冤”;也許我們的算法其實(shí)一般,但恰恰就很幸運(yùn)地在驗(yàn)證數(shù)據(jù)集上表現(xiàn)優(yōu)異。為了減少這種偶然性,使用平均驗(yàn)證錯誤是一個比較好的方式,而K折交叉驗(yàn)證(K-fold Cross-Validation)[15]就是其最常用的一個方法。

K折交叉驗(yàn)證先將數(shù)據(jù)集分割成大小相同的K組數(shù)據(jù)集,我們先使用2~K組數(shù)據(jù)集作為訓(xùn)練數(shù)據(jù)集進(jìn)行訓(xùn)練,而后用第一組數(shù)據(jù)集進(jìn)行驗(yàn)證;接下來使用第二組數(shù)據(jù)集作為驗(yàn)證數(shù)據(jù),而剩余的作為訓(xùn)練數(shù)據(jù),直至遍歷完所有數(shù)據(jù)集,將K組驗(yàn)證錯誤率取平均值,而平均驗(yàn)證錯誤率就當(dāng)作泛化錯誤率。

K最常用的取值為10,稱為10折交叉驗(yàn)證。K的取值越大,劃分的數(shù)據(jù)集越多,那最終的泛化錯誤率的可靠性就越高,但相應(yīng)的時間花費(fèi)就越大。因此K的取值需要在實(shí)際應(yīng)用中,在訓(xùn)練時間與可靠性中做一個取舍,其也是一對魚和熊掌。

主站蜘蛛池模板: 泰来县| 黑山县| 闵行区| 周至县| 拜城县| 开远市| 青神县| 县级市| 佛坪县| 美姑县| 阳江市| 颍上县| 九江县| 伊金霍洛旗| 长岛县| 垣曲县| 青神县| 灌云县| 棋牌| 大足县| 当涂县| 中西区| 当涂县| 合川市| 张掖市| 饶河县| 鄱阳县| 东宁县| 平南县| 体育| 红桥区| 宁河县| 吕梁市| 南召县| 乳山市| 平昌县| 冕宁县| 陇西县| 布尔津县| 吕梁市| 财经|