編者按:Insight Data Science AI負(fù)責(zé)人Emmanuel Ameisen分享了高效構(gòu)建基于機器學(xué)習(xí)的產(chǎn)品的經(jīng)驗。
要構(gòu)建通用AI,先掌握線性回歸
從基本開始
試圖發(fā)展對世界的科學(xué)理解的時候,大多數(shù)領(lǐng)域從粗略的勾勒開始,之后才探索重要的細(xì)節(jié)。拿物理來說吧,我們從簡單模型(牛頓力學(xué))開始,漸漸深入更復(fù)雜的模型(相對論),到時我們將知道,我們最初的假定是錯誤的。通過在最簡單的有用層次推理,我們可以高效地解決問題,
所有事情都應(yīng)該盡可能簡單,但不要過于簡單。
阿爾伯特·愛因斯坦
從非常簡單的模型開始這一做法,同樣可以應(yīng)用于機器學(xué)習(xí)工程,通常可以證明,這是非常有價值的做法。事實上,我們在Insight看到數(shù)以百計的項目從想法到發(fā)布成品的全過程,發(fā)現(xiàn)從一個簡單的基線模型開始,一貫地導(dǎo)向更好的最終產(chǎn)品。
應(yīng)對復(fù)雜問題時,簡單的方案,有很多缺陷:
它們有時候忽略輸入的重要方面。例如,簡單模型常常忽略句子中的詞序,或者變量之間的相關(guān)性。
它們受到限制,難以得到精細(xì)的結(jié)果。大多數(shù)簡單模型可能需要配合啟發(fā)式方法或手工指定的規(guī)則才能供客戶使用。
它們并不那么有趣,可能無法讓你在開發(fā)時獲得尖端研究的體驗。
這些方案常常產(chǎn)生受到誤導(dǎo)的輸出,可能在我們看來非常愚蠢,正如本文標(biāo)題所言,蠢模型。然而,如同我們將在本文中描述的,它們提供了極為有用的第一步,讓我們可以更好地理解我們的問題,以找到最好的處理方法。正如George E. P. Box所說:
所有模型都是錯誤的,但有些模型有用。
換句話說:如果你想玩下有趣的玩意,從復(fù)雜的模型開始。如果你想解決問題、構(gòu)建產(chǎn)品,從愚蠢的模型開始。
什么是基線?
不同的分布需要不同的基線(來源:xkcd/1725)
基線模型不僅易于配置,同時有合理的幾率提供不錯的結(jié)果。試驗基線模型通常很快,而且代價較低,因為流行的軟件包大多包括了基線模型實現(xiàn)。
值得考慮的一些基線:
線性回歸。從一組特征預(yù)測連續(xù)值(價格、年齡等),首先嘗試下線性回歸。
邏輯回歸。試圖分類結(jié)構(gòu)數(shù)據(jù)或自然語言時,邏輯回歸通常能給出快速、牢靠的結(jié)果。
梯度提升樹。Kaggle競賽經(jīng)典模型!從時序預(yù)測到一般結(jié)構(gòu)數(shù)據(jù),梯度提升樹難以戰(zhàn)勝。盡管比其他基線要稍微難以解釋一點,它通常表現(xiàn)出色。
簡單卷積架構(gòu)。對大多數(shù)圖像分類、檢測、分割問題而言,微調(diào)VGG或再訓(xùn)練某個U-net變體通常是一個良好的開始。
還有更多!
簡單基線模型的選擇取決于要處理的數(shù)據(jù)類型和任務(wù)類型。如果你打算基于多個特征預(yù)測房價,那選擇線性回歸很合理。不過,如果你想要構(gòu)建語音到文本算法,那選擇線性回歸就不怎么合理了。你需要思考你希望從基線模型中得到什么,以選擇最佳的基線。
為什么從基線開始?
部署模型需要很多工作,確保提交前充分探索(來源:Uber)
開始一個項目時,首要的是了解會阻礙項目進(jìn)度的未曾預(yù)見的潛在挑戰(zhàn)。即使基線模型最終沒有成為最終版本的模型,它們?nèi)匀荒軌蜃屇惴浅?焖俚氐速M最少的時間。下面是一些原因。
基線將花去不到1/10的時間,可能提供高達(dá)90%的結(jié)果
生產(chǎn)率乘以9!
這里有一個非常常見的故事:一個團(tuán)隊想要實現(xiàn)一個模型預(yù)測用戶點擊廣告的概率。他們從邏輯回歸開始,并很快(經(jīng)過一些微調(diào))達(dá)到了90%精確度。
問題在于:這個團(tuán)隊?wèi)?yīng)該集中精力將精確度提高到95%,還是應(yīng)該以這樣90%的方式解決其他問題?
大多數(shù)最先進(jìn)的模型,由于其隨機性本質(zhì),仍然會給出非零誤差率。你的用例可能不同,但大多數(shù)系統(tǒng)的效率本質(zhì)上是乘法的,這意味著你寧愿選擇90%精確度的10個連續(xù)步驟(導(dǎo)致34%的最終精確度),而不是一個99%的步驟,跟著九個10%的步驟(0.000000099%)。
從基線開始,讓你可以首先解決瓶頸!
基線模型為更復(fù)雜的模型提供了上下文
通常,模型表現(xiàn)有三個易于評定的層次:
微不足道的可實現(xiàn)表現(xiàn),你希望任何模型都能超過這個層次。例如,在分類任務(wù)中,每次都猜測最頻繁出現(xiàn)的分類所得到的精確度。
人類表現(xiàn),人類在這一任務(wù)上能夠達(dá)到的表現(xiàn)。在某些任務(wù)上,計算機的表現(xiàn)比人類好很多(比如下圍棋),在其他一些任務(wù)上,則比人類要差(比如寫詩)。知道人類能夠表現(xiàn)得多好,有時可以幫助你事先為算法設(shè)定期望。不過,由于人類/計算機在不同領(lǐng)域的任務(wù)上表現(xiàn)不一樣,這也許需要進(jìn)行一些文獻(xiàn)檢索加以校正。
部署模型要求的表現(xiàn),從商業(yè)和可用性角度出發(fā),使你的模型適宜部署到生產(chǎn)環(huán)境的最小價值。通常而言,聰明的設(shè)計決策可以讓這一價值更容易實現(xiàn)。例如,Google的智能回復(fù),顯示三個建議回復(fù),明顯提升了顯示有用結(jié)果的幾率。
以上三個層次缺了一層,我會稱它為“合理的自動化表現(xiàn)”,這代表可以通過一個相對簡單的模型實現(xiàn)的表現(xiàn)。這對評估復(fù)雜模型是否表現(xiàn)良好而言,是不可或缺的,也能讓我們處理精確性和復(fù)雜性的折衷。
許多時候,我們發(fā)現(xiàn)基線模型的表現(xiàn)和復(fù)雜模型相當(dāng),甚至優(yōu)于復(fù)雜模型,特別是選擇復(fù)雜模型時沒有查看基線模型失敗之處的時候。此外,復(fù)雜模型通常更難部署,這意味著,很有必要事先衡量它們在簡單基線水平上的提升,是否值得額外的工程上的努力來部署它們。
簡單模型易于部署
根據(jù)定義,基線模型是簡單的。它們通常包含相對較少的可訓(xùn)練參數(shù),無需太多工作就可以快速擬合數(shù)據(jù)。
這意味著,在工程上,簡單模型:
訓(xùn)練起來更快,讓你能夠迅速得到模型表現(xiàn)的反饋。
研究充分,這意味著你碰到的大多數(shù)錯誤或者是構(gòu)建模型時的簡單bug,或者突顯了你的數(shù)據(jù)有問題。
推理起來更快,這意味著部署它們不需要很多基礎(chǔ)設(shè)施工程,也不會增加延遲。
構(gòu)建和部署一個基線模型之后,正是決定下一步做什么的最佳時機。
構(gòu)建基線模型之后做什么?
是時候拿一些論文出來看?
就像我們之前提到的那樣,如果你發(fā)現(xiàn)基線模型的表現(xiàn)不夠好,那么,查看簡單模型失效之處有助于你找到更好的方法。
例如,在我之前寫的NLP初步中,通過查看基線的誤差,我們可以看到它無法區(qū)分有意義的單詞和填充詞。這引導(dǎo)我們使用可以捕捉這一細(xì)微差別的模型。
基線幫助你理解數(shù)據(jù)
如果基線表現(xiàn)良好,你就不用為配置一個更復(fù)雜的模型操心了。如果基線表現(xiàn)不佳,它產(chǎn)生的錯誤種類對理解數(shù)據(jù)的偏離和特定問題非常有指導(dǎo)性。大多數(shù)機器學(xué)習(xí)的問題是通過更好地理解和準(zhǔn)備數(shù)據(jù)解決的,而不是通過選擇更復(fù)雜的模型解決的。查看基線的表現(xiàn)有助你發(fā)現(xiàn):
哪些分類更難區(qū)分。對大多數(shù)分類問題而言,查看混淆矩陣能得到很多關(guān)于哪些分類導(dǎo)致模型出現(xiàn)問題的信息。當(dāng)特定分類上的表現(xiàn)特別差時,值得探索數(shù)據(jù)以理解為什么。
模型捕捉到了哪些信號。大多數(shù)基線可以提取特征重要性,揭示輸入的哪些方法預(yù)測性最好。分析特征重要性對理解模型如何做出判定以及模型在哪些方面有所欠缺非常有幫助。
模型錯過了哪些信號。如果數(shù)據(jù)的特定方面從直覺上看起來很重要,但模型忽略了它。那么進(jìn)行特征工程或者選用其他能夠更好地利用數(shù)據(jù)這一方面的模型會是一個好主意。
基線幫助你理解任務(wù)
基線不僅有助于你更好地理解數(shù)據(jù),還能讓你看到推理的哪一部分容易,哪一部分困難。進(jìn)而允許你探索改進(jìn)模型的哪個方向使困難部分表現(xiàn)更好。
例如,在嘗試預(yù)測給定團(tuán)隊在守望先鋒中的勝率時,Bowen Yang從邏輯回歸開始。他很快發(fā)現(xiàn)在游戲過半之后預(yù)測精確度戲劇性地提升了。這一觀察幫助他決定下一個模型的選擇,一種允許從先驗信息學(xué)習(xí)的嵌入技術(shù),在一開始就提升了精確度。
大多數(shù)機器學(xué)習(xí)問題遵循“沒有免費午餐”定理:并不存在一個萬能的解決方案。從多種架構(gòu)、嵌入策略、模型中選定能夠提取和利用數(shù)據(jù)結(jié)構(gòu)的最佳方案是一項挑戰(zhàn)。查看簡單的基線勉力建模的內(nèi)容,對做出選擇幫助很大。
再舉一個例子。試圖分割心臟MRI影像時,Chuck-Hou Yee首先嘗試了一個原始的U-net架構(gòu)。這讓他發(fā)現(xiàn)模型產(chǎn)生的很多分割誤差是因為缺少上下文信息(小型感受野)。為了應(yīng)對這一問題,他轉(zhuǎn)而使用了擴張卷積,這一選擇顯著提升了模型的表現(xiàn)。
當(dāng)基線派不上用場的時候
最后,為某些任務(wù)構(gòu)建有效的基線非常困難。如果你打算從音源中分離出不同的說話人(雞尾酒會問題),你可能需要從復(fù)雜模型開始,以得到滿意的結(jié)果。在這些情形下,作為簡化模型的替代,你可以簡化數(shù)據(jù):嘗試讓你的復(fù)雜模型過擬合數(shù)據(jù)的一個非常小的子集。如果你的模型具備學(xué)習(xí)這一問題的表達(dá)能力,它會很簡單。如果發(fā)現(xiàn)這部分很困難,那么通常這意味著你需要試試其他模型。
結(jié)語
當(dāng)你意識到強大的模型的存在之后,很容易忽略那些簡單方法。然而,和大多數(shù)領(lǐng)域一樣,在機器學(xué)習(xí)中,從基本開始總是很有價值的。
學(xué)習(xí)如何應(yīng)用復(fù)雜方法固然是一項挑戰(zhàn),機器學(xué)習(xí)工程師的最大挑戰(zhàn)是為給定的任務(wù)決定建模策略。首先嘗試簡單模型可以為這一決策提供信息;如果簡單模型的表現(xiàn)平平無奇,轉(zhuǎn)而使用一個更復(fù)雜的模型,一個擅長避免基線產(chǎn)生的特定錯誤的模型。
在Insight,這一方法總共節(jié)省了數(shù)以千計小時的時間。我們希望這一方法對你同樣有用。如果遇到問題,或有什么想法,歡迎留言!
-
圖像分類
+關(guān)注
關(guān)注
0文章
96瀏覽量
12121 -
基線
+關(guān)注
關(guān)注
0文章
13瀏覽量
8059 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8497瀏覽量
134231
原文標(biāo)題:創(chuàng)造機器學(xué)習(xí)產(chǎn)品的秘訣:總是從蠢模型開始
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
【下載】《機器學(xué)習(xí)》+《機器學(xué)習(xí)實戰(zhàn)》
構(gòu)建機器學(xué)習(xí)產(chǎn)品必需的數(shù)學(xué)背景
什么是機器學(xué)習(xí)? 機器學(xué)習(xí)基礎(chǔ)入門
Airbnb機器學(xué)習(xí)和數(shù)據(jù)科學(xué)團(tuán)隊經(jīng)驗分享
ML-Bench 1.0構(gòu)建和分析機器學(xué)習(xí)基準(zhǔn)
機器學(xué)習(xí)的12大經(jīng)驗總結(jié)
如何才能正確的構(gòu)建機器學(xué)習(xí)的模型
六個構(gòu)建機器學(xué)習(xí)模型需避免的錯誤
Python機器學(xué)習(xí)應(yīng)用
電力公司正在使用機器學(xué)習(xí)構(gòu)建綠色的智能電網(wǎng)
高效理解機器學(xué)習(xí)

評論