從基線模型開始:別擔(dān)心,模型最開始都讓人不忍直視
大數(shù)據(jù)文摘作品
編譯:張南星、驚蟄、荊浩男
一、怎樣高效開發(fā)機(jī)器學(xué)習(xí)產(chǎn)品
想要開發(fā)通用AI,首先你得掌握邏輯回歸模型。
從最基礎(chǔ)的開始
在大多數(shù)領(lǐng)域,當(dāng)人們嘗試用科學(xué)的方式理解世界時(shí),都會(huì)選擇先寬泛研究整體的內(nèi)容,而不是立馬深入到重要的細(xì)節(jié)之中。
譬如在物理學(xué)領(lǐng)域,我們常常從簡(jiǎn)單的模型開始(牛頓物理學(xué))做研究。然后,我們?cè)谥饾u認(rèn)識(shí)到最初的一些假設(shè)并不正確時(shí),就會(huì)慢慢開始使用更復(fù)雜的模型。這種方式可以以最簡(jiǎn)單的方法高效地解決問題。
凡事力求簡(jiǎn)單,但不要過于簡(jiǎn)單。
——阿爾伯特·愛因斯坦 |
同樣的思維模式,即從最簡(jiǎn)單的模型開始建造,也可以應(yīng)用于AI工程之中。并且在大多數(shù)情況下,這樣的方式都很有價(jià)值。
事實(shí)上,在Insight上目睹成百上千個(gè)項(xiàng)目從想法發(fā)展成實(shí)際產(chǎn)品之后,我們發(fā)現(xiàn)將一個(gè)簡(jiǎn)單模型作為基礎(chǔ)版本,往往能讓最終產(chǎn)品變得更棒。
但在解決復(fù)雜問題時(shí),簡(jiǎn)單的解決方案(比如下文中討論到的基線模型)存在諸多不足:
- 簡(jiǎn)單的解決方案有時(shí)會(huì)忽略輸入中的重要內(nèi)容。例如,簡(jiǎn)單的模型常常會(huì)忽略詞語在語句中的順序,或者變量之間的關(guān)系。
- 在生產(chǎn)比較細(xì)致的產(chǎn)品時(shí),這些模型往往有些力不從心。因此,大多數(shù)簡(jiǎn)單模型都需要配合使用啟發(fā)式算法或者人工制定的規(guī)則才會(huì)面世。
- 它們研究起來可能并不那么有趣,而且可能沒法讓你學(xué)到自己渴望的前沿研究知識(shí)。
這些簡(jiǎn)單解決方案產(chǎn)出的錯(cuò)誤輸出常常看起來非常愚蠢,所以標(biāo)題中用了“不忍直視”這個(gè)詞。但是,正如本文所說的,在項(xiàng)目啟動(dòng)時(shí),簡(jiǎn)單模型的價(jià)值就會(huì)大大體現(xiàn),因?yàn)檫@些模型可以幫助我們更好地理解實(shí)際問題,從而告知我們開發(fā)出最終成功產(chǎn)品的***路線。
用George E. P. Box的話來說:“所有的模型都是錯(cuò)的,但至少其中一些會(huì)有點(diǎn)用處。”
再換句話說,如果你只想找點(diǎn)樂子,那從復(fù)雜的模型開始沒問題;但是如果你希望真正解決某個(gè)問題,并開發(fā)真正產(chǎn)品的話,那就從簡(jiǎn)單得“不忍直視”的模型開始吧。
二、什么是基線模型?
“當(dāng)從散點(diǎn)圖中預(yù)測(cè)數(shù)據(jù)關(guān)聯(lián)性比畫星座圖更難的時(shí)候,我不相信線性回歸得到的結(jié)果”:
左:方差為0.06的線性回歸模型
右:Rexthor“遛狗”模型
不同的分布類型需要不同的基線模型。下面是一些值得考慮的基線模型:
- 線性回歸:從一系列特征值中預(yù)測(cè)連續(xù)值的首要可靠方法,例如價(jià)格和年齡
- 邏輯回歸:當(dāng)需要對(duì)結(jié)構(gòu)化數(shù)據(jù)或者自然語言進(jìn)行分類時(shí),邏輯回歸模型能迅速給出可靠的結(jié)果。
- 梯度提升決策樹:不可錯(cuò)過的Kaggle經(jīng)典!在和時(shí)間或者通用結(jié)構(gòu)化數(shù)據(jù)相關(guān)的預(yù)測(cè)處理中,忽略梯度提升決策樹簡(jiǎn)直是不可能的事。雖然這個(gè)模型比其他基線模型在理解和使用上稍難一些,但是效果會(huì)很不錯(cuò)。
- 簡(jiǎn)單腦回框架:恰當(dāng)調(diào)整了的VGG或者對(duì)部分變量進(jìn)行再訓(xùn)練了的U-net,對(duì)大多數(shù)圖像分類、探測(cè)或者分類問題來說是一個(gè)好的開頭。
擺在你面前可供選擇的基線模型還有很多!
到底選擇哪個(gè)基線模型是由數(shù)據(jù)類型及任務(wù)目標(biāo)決定的。比如,當(dāng)你需要從各種特征值中預(yù)測(cè)房?jī)r(jià)時(shí)(即從一系列特征值中預(yù)測(cè)某個(gè)值),線性回歸模型就比較合適,但如果是建造語音識(shí)別算法,這個(gè)模型就不太適用。在選擇最適合的基線模型之前需要再三思考這個(gè)問題:你希望用這個(gè)模型得到什么?
三、為什么從基線模型開始?
從部署模型到獲得結(jié)果的過程
部署一個(gè)模型并不輕松,在實(shí)施之前必須確保對(duì)這個(gè)模型足夠了解。在項(xiàng)目開始時(shí),優(yōu)先級(jí)***的事項(xiàng)是預(yù)測(cè)未知風(fēng)險(xiǎn)。即使基線模型并不是終版模型,但是它能讓你迅速迭代,從而降低不必要的時(shí)間成本。下面是支持這個(gè)論點(diǎn)的一些理由:
基線模型只會(huì)花費(fèi)你少于十分之一的時(shí)間,卻可以導(dǎo)出超過90%的結(jié)果。
把你的產(chǎn)出效率提高9倍!
舉一個(gè)非常常見的例子:某團(tuán)隊(duì)希望找一個(gè)模型來預(yù)測(cè)用戶點(diǎn)擊廣告的概率之類的問題。他們從一個(gè)邏輯回歸模型開始,并在很短的時(shí)間內(nèi)(在極少數(shù)的調(diào)整之后),準(zhǔn)確率達(dá)到了90%。
那么問題來了:這個(gè)團(tuán)隊(duì)?wèi)?yīng)該專注于把準(zhǔn)確率提高到95%,還是用同樣的方法,以90%的準(zhǔn)確率解決別的問題?
絕大部分最為先進(jìn)的模型都無法使錯(cuò)誤率降低到零,原因在于它隨機(jī)性的本質(zhì)。雖然準(zhǔn)確性和實(shí)際用例相關(guān),但從本質(zhì)上來講,大部分系統(tǒng)的準(zhǔn)確性都是各個(gè)部分準(zhǔn)確值的乘積。
也就是說,***讓10個(gè)連續(xù)的步驟準(zhǔn)確性都達(dá)到90%,這樣整體準(zhǔn)確性就可以達(dá)到34%,而不是讓1個(gè)步驟的準(zhǔn)確性達(dá)到99%,而其他9個(gè)步驟都是10%,這樣的整體準(zhǔn)確性只有0.00000000099%%。
從一個(gè)基線模型開始,能讓你首先清楚問題的瓶頸之處!
1. 基線模型讓復(fù)雜模型陷入兩難之地
通常情況下,你可以預(yù)估到使用各種模型可以達(dá)到的三種性能水平:
- 缺省可得性能水平是你希望任何一個(gè)模型都能達(dá)到的水平。舉個(gè)例子,這個(gè)值可以是分類任務(wù)中出現(xiàn)頻率***類別的概率值。
- 人類性能指標(biāo),是指一個(gè)人類完成任務(wù)的水平。計(jì)算機(jī)在某些任務(wù)中比人類表現(xiàn)好(例如AlphaGo),但在另外一些任務(wù)上表現(xiàn)差(例如創(chuàng)作詩歌)。人類完成一項(xiàng)任務(wù)的性能水平,能夠作為標(biāo)準(zhǔn)協(xié)助對(duì)一個(gè)算法的表現(xiàn)形成合理預(yù)期,但是在不同領(lǐng)域,人類和電腦的表現(xiàn)可能大不一樣,因此需要一些文獻(xiàn)檢索做校準(zhǔn)。
- 可部署性能水平,即站在商業(yè)生產(chǎn)和可用性角度上,模型所需的最小準(zhǔn)確值。通常情況下,這個(gè)值需要精細(xì)的設(shè)計(jì)決策系統(tǒng)才可得到。例如Google Smart Reply一般會(huì)返回三個(gè)建議決策,能夠顯著提高有用結(jié)果出現(xiàn)的概率。
上面我沒有提到的一個(gè)標(biāo)準(zhǔn),稱之為“合理自動(dòng)生成性能”,是指通過相對(duì)簡(jiǎn)單的模型可以得到的結(jié)果。通過這個(gè)重要的對(duì)標(biāo)值,能夠評(píng)估一個(gè)復(fù)雜模型是否表現(xiàn)良好,并且讓我們不再在準(zhǔn)確性與復(fù)雜性之間糾結(jié)。
很多時(shí)候,我們發(fā)現(xiàn)基線模型和復(fù)雜模型的表現(xiàn)相當(dāng),有時(shí)候基線模型的表現(xiàn)甚至可以超過復(fù)雜模型,在選擇復(fù)雜模型前沒有充分考慮基線模型的失敗原因時(shí)更是如此。
除此之外,部署復(fù)雜模型也更加困難,這意味著在真正開始部署模型之前,程序員們首先還需要估計(jì)復(fù)雜模型比簡(jiǎn)單模型能提升多少。
2. 基線模型更容易部署
從定義上來說,基線模型很簡(jiǎn)單,一般由相對(duì)少的可訓(xùn)練參數(shù)組成,而且不需要太多的處理就可以迅速和數(shù)據(jù)匹配。
這個(gè)好處在真正開始編程時(shí)就會(huì)體現(xiàn)出來了:
- 訓(xùn)練迅速:能夠迅速得到性能反饋。
- 更容易研究:這意味著遇到的大多數(shù)錯(cuò)誤能夠更容易定位是模型的缺陷,還是數(shù)據(jù)中的錯(cuò)誤。
- 迅速推斷:部署基線模型不需要太多架構(gòu)層面的修改,并且不會(huì)導(dǎo)致潛在的風(fēng)險(xiǎn)。
一旦你創(chuàng)建并部署了基線模型,你已經(jīng)處于下一步行動(dòng)的***決策點(diǎn)了。
四、建造了基線模型之后呢?
也許是時(shí)候祭出研究文獻(xiàn)了?
正如上文所提到的,基線模型會(huì)讓你迅速得到性能對(duì)標(biāo)結(jié)果。如果你發(fā)現(xiàn)它提供的性能值并不充分,那么找到簡(jiǎn)單模型難以解決的問題,你的下一步進(jìn)展就會(huì)容易些。
譬如在NLP primer里,通過觀察基線模型中的錯(cuò)誤,我們發(fā)現(xiàn)模型沒能把有意義的單詞與虛詞區(qū)分開。它可以這樣指引我們通過模型抓取到類似的細(xì)微差別。
1. 基線模型能幫助你理解數(shù)據(jù)
如果選擇的基線模型表現(xiàn)不錯(cuò),那么你已經(jīng)幫自己解決了建造復(fù)雜模型的大部分困難;反之,找出建造基線模型過程中的錯(cuò)誤對(duì)于發(fā)現(xiàn)數(shù)據(jù)中的偏差與特定錯(cuò)誤非常有建設(shè)意義。
許多阻攔機(jī)器學(xué)習(xí)進(jìn)程的問題往往是因?yàn)闆]能理解和準(zhǔn)備好數(shù)據(jù),而不是選擇一個(gè)更加復(fù)雜的模型??纯椿€模型的不同表現(xiàn)對(duì)于你會(huì)有什么啟發(fā):
- 哪個(gè)類別更難分類:對(duì)于大多數(shù)分類問題,觀察混合矩陣對(duì)于定位導(dǎo)致模型錯(cuò)誤的類別非常有用。如果無論何時(shí),基于一系列分類的模型表現(xiàn)都非常差,那么是時(shí)候深入分析數(shù)據(jù)、尋找原因了。
- 你的模型會(huì)選擇什么作為信號(hào):大多數(shù)基線模型都能夠提取特征重要性,確定輸入的哪個(gè)方面更加有預(yù)見性。分析特征重要性是了解模型的決策方式、潛在遺漏點(diǎn)的***途徑。
- 你的模型會(huì)遺漏了什么信號(hào):如果你的模型遺漏了數(shù)據(jù)中非常重要的方面,那么下一步***是手動(dòng)加入這個(gè)特征,或者另選擇一個(gè)能夠更好利用數(shù)據(jù)的模型。
2. 基線模型能幫助你理解任務(wù)
除了能夠更加了解數(shù)據(jù)之外,基線模型還能幫你了解哪部分內(nèi)容比較難、哪部分比較簡(jiǎn)單。照此思路,你還能定位應(yīng)該改進(jìn)模型的哪個(gè)方面,從而更好地解決困難的部分。
例如,Bowen Yang在試圖預(yù)測(cè)某個(gè)團(tuán)隊(duì)在Overwatch中獲勝的幾率時(shí)使用了邏輯回歸模型。他很快注意到游戲半程之后,預(yù)測(cè)的準(zhǔn)確性會(huì)大大提高。
這個(gè)發(fā)現(xiàn)幫他成功地選擇了下一個(gè)建模方法,即一個(gè)從先驗(yàn)信息中了解到的技巧,讓預(yù)測(cè)準(zhǔn)確性在游戲開始***分鐘之前就大大提高。
大多數(shù)機(jī)器學(xué)習(xí)問題都遵循“天底下沒有免費(fèi)的午餐”定理:不存在能夠解決所有問題的方案。真正的挑戰(zhàn)在于從各種架構(gòu)中進(jìn)行選擇、決定恰當(dāng)?shù)牟呗浴⒁约斑x擇最適用于抽取及利用目標(biāo)數(shù)據(jù)結(jié)構(gòu)的模型。
再舉一個(gè)例子,Chuck-Hou Yee試圖對(duì)心臟的核磁共振成像進(jìn)行分類時(shí),是從最基本的U-net架構(gòu)開始研究的。通過U-net架構(gòu),他注意到模型的很多分類錯(cuò)誤都是由于缺少語境導(dǎo)致的。
為了解決這個(gè)問題,Chuck-Hou Yee另選擇了膨脹卷積模型(dilated convolutions),極大改善了建模結(jié)果。
3. 什么時(shí)候不選擇基線模型
***,對(duì)于有些任務(wù)來說,建造有效的基線模型的確很困難。如果你試圖將一個(gè)錄音中的不同人的說話內(nèi)容分開(雞尾酒效應(yīng)),也許你得從一個(gè)復(fù)雜模型開始才能得到令人滿意的結(jié)果。
在這類情況下,與其簡(jiǎn)化模型,采取簡(jiǎn)化數(shù)據(jù)的方法更加恰當(dāng)。也就是說,讓這個(gè)復(fù)雜模型過擬合現(xiàn)有數(shù)據(jù)集中的極小一部分。如果模型的表現(xiàn)能力夠強(qiáng),那這應(yīng)該很簡(jiǎn)單;但如果表現(xiàn)能力差強(qiáng)人意,那么也許你需要試一試別的模型了。
雞尾酒效應(yīng):https://en.wikipedia.org/wiki/Cocktail_party_effect
五、結(jié)論
人們都有一個(gè)傾向,如果有更加強(qiáng)大的解決方法,往往就會(huì)忽略掉簡(jiǎn)單的解決辦法。但是在機(jī)器學(xué)習(xí)的大多數(shù)領(lǐng)域中,從基礎(chǔ)開始往往更有價(jià)值。
盡管學(xué)著實(shí)施復(fù)雜模型確實(shí)有些難度,但機(jī)器學(xué)習(xí)工程師們***的挑戰(zhàn)其實(shí)是如何給特定的任務(wù)選擇建模策略。
先用一個(gè)簡(jiǎn)單模型可以很大程度上帶來幫助;如果表現(xiàn)得不盡如人意,那么在采用更加復(fù)雜的模型時(shí)就可以避開在基線模型中已經(jīng)發(fā)現(xiàn)的問題,從而達(dá)到更好的建模效果。
相關(guān)報(bào)道:
https://blog.insightdatascience.com/always-start-with-a-stupid-model-no-exceptions-3a22314b9aaa
【本文是51CTO專欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號(hào)“大數(shù)據(jù)文摘( id: BigDataDigest)”】