機(jī)器學(xué)習(xí)教材中經(jīng)常出現(xiàn)的7大經(jīng)典問(wèn)題
掃描二維碼
隨時(shí)隨地手機(jī)看文章
如果希望了解機(jī)器學(xué)習(xí),或者已經(jīng)決定投身機(jī)器學(xué)習(xí),你會(huì)第一時(shí)間找到各種教材進(jìn)行充電,同時(shí)在心中默認(rèn):書(shū)里講的是牛人大神的畢生智慧,是正確無(wú)誤的行動(dòng)指南,認(rèn)真學(xué)習(xí)就能獲得快速提升。但實(shí)際情況是,你很可能已經(jīng)在走彎路。
科技發(fā)展很快,數(shù)據(jù)在指數(shù)級(jí)增長(zhǎng),環(huán)境也在指數(shù)級(jí)改變,因此很多時(shí)候教科書(shū)會(huì)跟不上時(shí)代的發(fā)展。有時(shí),即便是寫(xiě)教科書(shū)的人,也不見(jiàn)得都明白結(jié)論背后的“所以然”,因此有些結(jié)論就會(huì)落后于時(shí)代。針對(duì)這個(gè)問(wèn)題,第四范式創(chuàng)始人、首席執(zhí)行官戴文淵近日就在公司內(nèi)部分享上,向大家介紹了機(jī)器學(xué)習(xí)教材中的七個(gè)經(jīng)典問(wèn)題。戴文淵是ACM世界冠軍(2005年),“遷移學(xué)習(xí)”全球領(lǐng)軍人物,在遷移學(xué)習(xí)領(lǐng)域單篇論文引用數(shù)至今仍排名世界第三。曾任百度鳳巢策略的技術(shù)負(fù)責(zé)人、華為諾亞方舟實(shí)驗(yàn)室主任科學(xué)家。
本文根據(jù)演講實(shí)錄整理,略有刪減。
有時(shí)我們會(huì)發(fā)現(xiàn),在實(shí)際工作中,應(yīng)該怎么做和教科書(shū)講的結(jié)論相矛盾,這時(shí)候要怎么辦呢?難道教科書(shū)中的結(jié)論出錯(cuò)了?事實(shí)上,有時(shí)確實(shí)如此。所以今天我就想和大家分享一下機(jī)器學(xué)習(xí)教材中的一些經(jīng)典問(wèn)題,希望對(duì)大家今后的工作和學(xué)習(xí)有所幫助。
問(wèn)題一:神經(jīng)網(wǎng)絡(luò)不宜超過(guò)3層這是最有名錯(cuò)誤判斷,現(xiàn)在的教科書(shū)幾乎已經(jīng)不再有這樣的結(jié)論,但如果看15年、20年前的機(jī)器學(xué)習(xí)教科書(shū),會(huì)有一個(gè)很有趣的結(jié)論:神經(jīng)網(wǎng)絡(luò)不能超過(guò)三層。這和我們現(xiàn)在說(shuō)的深度學(xué)習(xí)是矛盾的,深度學(xué)習(xí)現(xiàn)在大家比拼的不是神經(jīng)網(wǎng)絡(luò)能不能超過(guò)三層,而是能不能做出一百層、一千層或者更多。
那為什么之前的教科書(shū)上會(huì)寫(xiě)神經(jīng)網(wǎng)絡(luò)不能超過(guò)三層,這就要從神經(jīng)網(wǎng)絡(luò)的歷史說(shuō)起。五十年代有位科學(xué)家叫Marvin Minksy,他是一位生物學(xué)家,數(shù)學(xué)又很好,所以他在研究神經(jīng)元的時(shí)候就在想能不能用數(shù)學(xué)模型去刻畫(huà)生物的神經(jīng)元,因此就設(shè)計(jì)了感知機(jī)。感知機(jī)就像一個(gè)神經(jīng)細(xì)胞,它能像神經(jīng)細(xì)胞一樣連起來(lái),形成神經(jīng)網(wǎng)絡(luò),就像大腦的神經(jīng)網(wǎng)絡(luò)。其實(shí)在60年代開(kāi)始的時(shí)候,是有很深的神經(jīng)網(wǎng)絡(luò),但當(dāng)時(shí)經(jīng)過(guò)大量實(shí)驗(yàn)發(fā)現(xiàn),不超過(guò)三層的神經(jīng)網(wǎng)絡(luò)效果不錯(cuò),于是大概到80年代時(shí)就得出結(jié)論:神經(jīng)網(wǎng)絡(luò)不宜超過(guò)三層。
那為什么現(xiàn)在這條結(jié)論又被推翻了呢?實(shí)際上這條結(jié)論是有前提條件的,即在數(shù)據(jù)量不大的情況下,神經(jīng)網(wǎng)絡(luò)不宜超過(guò)三層。而從2005年開(kāi)始,大家發(fā)現(xiàn)隨著數(shù)據(jù)增加,深度神經(jīng)網(wǎng)絡(luò)的表現(xiàn)良好,所以慢慢走向深度學(xué)習(xí)。其實(shí)這里真正正確的原理是Valiant引理,它可以理解為“模型復(fù)雜度(例如專家系統(tǒng)的規(guī)則數(shù)量)要和數(shù)據(jù)量成正比”。數(shù)據(jù)量越大,模型就越復(fù)雜。上個(gè)世紀(jì)因?yàn)閿?shù)據(jù)量小,所以神經(jīng)網(wǎng)絡(luò)的層數(shù)不能太深,現(xiàn)在數(shù)據(jù)量大,所以神經(jīng)網(wǎng)絡(luò)的層數(shù)就要做深。這也解釋了為什么當(dāng)時(shí)教科書(shū)會(huì)有這樣的結(jié)論,而現(xiàn)在隨著深度學(xué)習(xí)的流行,大家已經(jīng)不再會(huì)認(rèn)為這句話是對(duì)的。
問(wèn)題二:決策樹(shù)不能超過(guò)五層如果有同學(xué)看教科書(shū)上介紹決策樹(shù),會(huì)有一個(gè)說(shuō)法就是決策樹(shù)要減枝,決策樹(shù)如果不減枝效果不好。還有教科書(shū)會(huì)告訴決策樹(shù)不能超過(guò)五層,超過(guò)五層的決策樹(shù)效果不好。這個(gè)結(jié)論和神經(jīng)網(wǎng)絡(luò)結(jié)論一樣,神經(jīng)網(wǎng)絡(luò)不能超過(guò)三層也是因?yàn)楫?dāng)時(shí)數(shù)據(jù)量不大,決策樹(shù)不能超過(guò)五層也是因?yàn)樯蟼€(gè)世紀(jì)數(shù)據(jù)量不夠大,二叉樹(shù)決策樹(shù)如果深度是N的話,復(fù)雜度大概是2的N次方,所以不超過(guò)五層復(fù)雜度也就是三十多。如果數(shù)據(jù)量達(dá)到一百萬(wàn)的時(shí)候,決策樹(shù)能達(dá)到十幾二十層的規(guī)模,如果數(shù)據(jù)量到了一百億的時(shí)候決策樹(shù)可能要到三十幾層。
現(xiàn)在,我們強(qiáng)調(diào)更深的決策樹(shù),這可能和教科書(shū)講的相矛盾。矛盾的原因是現(xiàn)在整個(gè)場(chǎng)景下數(shù)據(jù)量變大,所以要做更深的決策樹(shù)。當(dāng)然,我們也不一定在所有的場(chǎng)景里都有很大數(shù)據(jù)量,如果遇到了數(shù)據(jù)量小的場(chǎng)景,我們也要知道決策樹(shù)是要做淺的。最根本來(lái)說(shuō),就是看有多少數(shù)據(jù),能寫(xiě)出多復(fù)雜的模型。
問(wèn)題三:特征選擇不能超過(guò)一千個(gè)有些教科書(shū)會(huì)單獨(dú)開(kāi)個(gè)章節(jié)來(lái)講特征選擇,告訴我們?cè)谀玫綌?shù)據(jù)后,要先刪除一些不重要的特征,甚至有的教科書(shū)注明,特征數(shù)不能超過(guò)一千,否則模型效果不好。但其實(shí)這個(gè)結(jié)論也是有前提條件的,如果數(shù)據(jù)量少,是不能夠充分支撐很多特征,但如果數(shù)據(jù)量大,結(jié)論就會(huì)不一樣。這也就是為什么我們做LogisTIcRegression會(huì)有幾十億個(gè)特征,而不是限制在幾百個(gè)特征。
過(guò)去傳統(tǒng)數(shù)據(jù)分析軟件,如SAS,之所以只有幾百個(gè)特征,是因?yàn)樗Q生于上世紀(jì)七十年代,它面臨的問(wèn)題是在具體場(chǎng)景下沒(méi)有太多可用數(shù)據(jù),可能只有幾百上千個(gè)樣本。因此,在設(shè)計(jì)系統(tǒng)時(shí),就只需要針對(duì)幾百個(gè)特征設(shè)計(jì),不需要幾十億個(gè)特征,因?yàn)樯锨€(gè)樣本無(wú)法支撐幾十億特征。但現(xiàn)在,隨著數(shù)據(jù)量增加,特征量也需要增加。所以我認(rèn)為,在大數(shù)據(jù)環(huán)境下,整個(gè)機(jī)器學(xué)習(xí)教科書(shū)里關(guān)于特征選擇的章節(jié)已經(jīng)落后于時(shí)代,需要根據(jù)新的形式重新撰寫(xiě);當(dāng)然在小數(shù)據(jù)場(chǎng)景下,它仍然具有價(jià)值。
問(wèn)題四:集成學(xué)習(xí)獲得最好學(xué)習(xí)效果第四個(gè)叫做集成學(xué)習(xí),這個(gè)技術(shù)在各種數(shù)據(jù)挖掘比賽中特別有用,比如近些年KDD CUP的冠軍幾乎都是采用集成學(xué)習(xí)。什么是集成學(xué)習(xí)?它不是做一個(gè)模型,而是做很多(例如一千個(gè))不一樣的模型,讓每個(gè)模型投票,投票的結(jié)果就是最終的結(jié)果。如果不考慮資源限制情況,這種模式是效果最好的。這也是為什么KDDCUP選手們都選擇集成學(xué)習(xí)的方式,為了追求最后效果,不在乎投入多少,在這種條件下,集成學(xué)習(xí)就是最好的方式。
但在現(xiàn)實(shí)中,企業(yè)做機(jī)器學(xué)習(xí)追求的不是用無(wú)限的資源做盡可能好的效果,而是如何充分利用有限資源,獲得最好效果。假設(shè)企業(yè)只有兩臺(tái)機(jī)器,如何用這兩臺(tái)機(jī)器獲得最好的效果呢?如果采用集成學(xué)習(xí),用兩臺(tái)機(jī)器跑五個(gè)模型,就要把兩臺(tái)機(jī)器分成五份,每個(gè)模型只能用0.4臺(tái)機(jī)器去跑,因此跑的數(shù)據(jù)量就有限。那如果換種方式,不用集成學(xué)習(xí),就用一個(gè)模型去跑,就能跑5倍的數(shù)據(jù)。通常5倍的數(shù)據(jù)量能比集成學(xué)習(xí)有更好的效果。在工業(yè)界比較少會(huì)應(yīng)用集成學(xué)習(xí),主要是因?yàn)楣I(yè)界絕大多數(shù)的場(chǎng)景都是資源受限,資源受限時(shí)最好的方式是想辦法放進(jìn)去更多的數(shù)據(jù)。集成學(xué)習(xí)因?yàn)榕芨嗟哪P蛯?dǎo)致只能放更少的數(shù)據(jù),通常這種效果都會(huì)變差。
問(wèn)題五:正樣本和負(fù)樣本均衡采樣到1:1第五個(gè)叫做均衡采樣,絕大多數(shù)的教科書(shū)都會(huì)講到。它是指如果我們訓(xùn)練一個(gè)模型,正樣本和負(fù)樣本很不平均,比如在正樣本和負(fù)樣本1:100的情況下,就需要對(duì)正、負(fù)樣本做均衡采樣,把它變成1:1的比例,這樣才是最好的。但其實(shí)這個(gè)結(jié)論不一定對(duì),因?yàn)榻y(tǒng)計(jì)學(xué)習(xí)里最根本的一條原理就是訓(xùn)練場(chǎng)景和測(cè)試場(chǎng)景的分布要一樣,所以這個(gè)結(jié)論只在一個(gè)場(chǎng)景下成立,那就是使用模型的場(chǎng)景中正、負(fù)樣本是1:1,那這個(gè)結(jié)論就是對(duì)的。
正確的做法是,應(yīng)用場(chǎng)景是1:100,那訓(xùn)練集合最好也是1:100。均衡采樣不一定都是對(duì)的,多數(shù)情況下不采樣反而才是正確的。因?yàn)榇蠖鄷r(shí)候,我們直接把訓(xùn)練集合和測(cè)試集合做隨機(jī)拆分,或者按照時(shí)間拆分,二者的分布就是一致的,那個(gè)時(shí)候不采樣是最好的。當(dāng)然有時(shí)候,我們也會(huì)發(fā)現(xiàn)做負(fù)樣本采樣會(huì)有更好的效果,比如范式在為某股份制銀行卡中心做交易反欺詐時(shí),就做了負(fù)樣本采樣,那是因?yàn)楫?dāng)我們把所有樣本都放進(jìn)去后,發(fā)現(xiàn)計(jì)算資源不夠,所以只能做采樣。正樣本與負(fù)樣本大概是1:1000或者1:10000,如果對(duì)正樣本做采樣,損失信息量會(huì)比較大,所以我們選擇對(duì)負(fù)樣本采樣,比如做1:1000的采樣,再把負(fù)樣本以1000的加權(quán)加回去。在資源受限時(shí)這么做,會(huì)盡可能降低信息量的損失。但如果僅僅是為了把它做均衡而做負(fù)樣本采樣,通常是不對(duì)的。和前面幾個(gè)問(wèn)題不同,負(fù)樣本采樣并不是因環(huán)境改變而結(jié)論變化,事實(shí)上就不應(yīng)該做負(fù)樣本采樣。
問(wèn)題六:交叉驗(yàn)證是最好的測(cè)試方法下一個(gè)問(wèn)題叫做交叉驗(yàn)證,是指假設(shè)要將一份數(shù)據(jù)拆分成訓(xùn)練集和測(cè)試集,這個(gè)時(shí)候怎么評(píng)估出它的誤差?交叉驗(yàn)證是把集合拆成五份,取四份做訓(xùn)練集、一份做測(cè)試集,并且每次選擇不同的那一份做測(cè)試級(jí),最后測(cè)出五個(gè)結(jié)果再做平均,這被認(rèn)為是最好的測(cè)試方法。
交叉驗(yàn)證確實(shí)是一個(gè)還不錯(cuò)的驗(yàn)證的方法,但在現(xiàn)實(shí)應(yīng)用場(chǎng)景下,它往往不是最合適的一種方式。因?yàn)橥ǔ?lái)說(shuō),我們用機(jī)器學(xué)習(xí)做的事情是預(yù)測(cè),絕大多數(shù)情況下我們是用現(xiàn)在或者過(guò)去的數(shù)據(jù)做一個(gè)模型來(lái)預(yù)測(cè)未來(lái)。而拿過(guò)去的訓(xùn)練預(yù)測(cè)未來(lái)的最好測(cè)試方法不是交叉驗(yàn)證,因?yàn)榻徊骝?yàn)證是按照交易或者按人拆分的。最合適的是方法其實(shí)是按照時(shí)間拆分,比如評(píng)估的時(shí)候選取一個(gè)時(shí)間點(diǎn),用在這個(gè)時(shí)間點(diǎn)之前的數(shù)據(jù)做訓(xùn)練,預(yù)測(cè)在這個(gè)時(shí)間點(diǎn)之后的,這是最接近真實(shí)應(yīng)用場(chǎng)景的評(píng)估結(jié)果。
交叉驗(yàn)證可能只適用于和時(shí)間屬性不相關(guān)的場(chǎng)景,比如人臉識(shí)別,但我們面臨更多的應(yīng)用場(chǎng)景,無(wú)論是風(fēng)險(xiǎn)、營(yíng)銷或者反欺詐,都是在用過(guò)去的數(shù)據(jù)訓(xùn)練后預(yù)測(cè)未來(lái),最合適這樣場(chǎng)景的評(píng)估方法不是交叉驗(yàn)證,而是按照時(shí)間去拆分。
問(wèn)題七:過(guò)擬合一定不好最后一個(gè)叫過(guò)擬合,這也是一個(gè)討論特別多的話題。以前,通常我們會(huì)說(shuō)如果模型做的太復(fù)雜了就會(huì)過(guò)擬合,如PPT右邊所示,而最好的方式應(yīng)該是圖中中間的狀態(tài)——擬合的剛剛好,圖中左邊的模型underfitTIng,沒(méi)有訓(xùn)練完全。但現(xiàn)在來(lái)看,大多數(shù)的實(shí)際場(chǎng)景都是在拿過(guò)去預(yù)測(cè)未來(lái),過(guò)擬合不一定是不好的,還是要看具體場(chǎng)景。如果這個(gè)場(chǎng)景是過(guò)去見(jiàn)過(guò)的情況比較多,新的情況比較少的時(shí)候,過(guò)擬合反倒是好的。
打個(gè)比方,如果期末考試題就是平時(shí)的作業(yè),那我們把平時(shí)的作業(yè)都背一遍就是最好的方式,而這就是過(guò)擬合。如果期末考試不考平時(shí)作業(yè),全是新題,那么這個(gè)時(shí)候就不能只背平時(shí)的作業(yè),還要充分理解這門課的知識(shí),掌握如何推理解題的技巧。所以過(guò)擬合好壞與否,完全取決于場(chǎng)景。如果應(yīng)用場(chǎng)景依靠死記硬背就能搞定,那過(guò)擬合反倒是好的。實(shí)際上在我們的設(shè)計(jì)里面,很多時(shí)候我們會(huì)傾向于往過(guò)擬合靠一點(diǎn),可能做新題會(huì)差一點(diǎn),但是對(duì)于死記硬背的送分題會(huì)做的非常好。在拿過(guò)去預(yù)測(cè)未來(lái)的應(yīng)用場(chǎng)景下,有的時(shí)候過(guò)擬合不一定不好,要根據(jù)實(shí)際情況來(lái)看。
今天與大家分享了教科書(shū)中的幾個(gè)經(jīng)典問(wèn)題。其實(shí)在實(shí)際工業(yè)應(yīng)用中,我們不會(huì)完全按照教科書(shū)中的方式去實(shí)踐。我們也會(huì)設(shè)計(jì)很深的模型、很深的決策樹(shù)、很多的特征、會(huì)過(guò)擬合一點(diǎn),我們更強(qiáng)調(diào)按時(shí)間拆分,不強(qiáng)調(diào)均衡采樣。面對(duì)教科書(shū)中的結(jié)論,我們需要學(xué)會(huì)的是根據(jù)實(shí)際場(chǎng)景做出相應(yīng)靈活判斷。