機(jī)器學(xué)習(xí)實(shí)在太受歡迎,以至于它都被當(dāng)做了AI本身,熱度更高的深度學(xué)習(xí)更是如此。令人高興的是,你的創(chuàng)業(yè)團(tuán)隊(duì)已經(jīng)獲得了資金,或者你的團(tuán)隊(duì)預(yù)算剛剛獲得了通過(guò),現(xiàn)在你即將開始進(jìn)入深度學(xué)習(xí)領(lǐng)域。
之前,你已經(jīng)從Keras, Imagenet等人工智能技術(shù)中感受到了快樂(lè),這很令人興奮!可是,當(dāng)你真的要在商業(yè)上開始實(shí)踐人工智能的時(shí)候,那么有幾件事是你必須要考慮的。
接下來(lái),我會(huì)結(jié)合幾個(gè)例子來(lái)闡述我的建議,這些例子都是我去年早些時(shí)候和George Hotz一起在comma.ai研究自動(dòng)駕駛時(shí)發(fā)生的。
救命,AI!我該往哪走?
1、別讓數(shù)據(jù)和工程師脫節(jié)
深度學(xué)習(xí)是一項(xiàng)數(shù)據(jù)先行的科學(xué)。你的團(tuán)隊(duì)或者創(chuàng)業(yè)存在的全部意義就是為了讓這些數(shù)據(jù)變得有意義。想想看,你只有將文字變得有意義,你才能研發(fā)你的人工智能比特幣聊天機(jī)器人!你只有理解圖像、視頻等內(nèi)容,你才能打造下一個(gè)Snapchat Stories式的自動(dòng)化多媒體拼貼。
你應(yīng)該把數(shù)據(jù)處理當(dāng)做你工作的一個(gè)核心。一定要在這方面做好它。例如,如果你覺得“只需要15分鐘”來(lái)準(zhǔn)備和加載數(shù)據(jù)集,那么每次當(dāng)你發(fā)現(xiàn)了更好的模型架構(gòu)或者在你的Tensorflow代碼中發(fā)現(xiàn)了漏洞的時(shí)候,都必須要白白等待這15分鐘的時(shí)間。
規(guī)則很簡(jiǎn)單。版本化你的數(shù)據(jù)集,并且預(yù)處理一次,之后反復(fù)使用。一些類似Celery、Luigi這樣的工具會(huì)是你的好幫手。
如果你是在一個(gè)大型的團(tuán)隊(duì)工作,團(tuán)隊(duì)中的所有任務(wù)都需要提交到一個(gè)集群,這時(shí)應(yīng)該考慮一個(gè)數(shù)據(jù)解決方案,向模型訓(xùn)練的員工批量提供數(shù)據(jù)。千萬(wàn)千萬(wàn)不要讓團(tuán)隊(duì)中的成員在已經(jīng)知道模型有漏洞的情況下,還必須等到整個(gè)數(shù)據(jù)集都加載完畢才能修改。
小故事:comma.ai可能擁有世界上第二或第三大的駕駛數(shù)據(jù)集。在comma.ai的早期歲月,為了訓(xùn)練駕駛模型,需要加載時(shí)長(zhǎng)數(shù)小時(shí)的視頻到擁有700多Gb內(nèi)存的大型機(jī)器上。每當(dāng)George需要更多數(shù)據(jù)來(lái)訓(xùn)練的時(shí)候,他都會(huì)立刻增加100gb的內(nèi)存。我加入的主要工作就是要為這個(gè)模型開發(fā)一個(gè)更好的版本,不過(guò)我并不想等15分鐘來(lái)加載數(shù)據(jù)。相反,我從一個(gè)簡(jiǎn)單的ZMQ服務(wù)開源項(xiàng)目中獲得了一些內(nèi)容。從此,再也沒有任何數(shù)據(jù)讓我們干著急了,我們可以擴(kuò)展我們的訓(xùn)練規(guī)模,并且使用更便宜的機(jī)器?,F(xiàn)在對(duì)模型訓(xùn)練的限制,只剩下GPU和它的研發(fā)者了。
2、從你能可視化的東西開始
對(duì)深度學(xué)習(xí)而言,我們很幸運(yùn)有Tensorboard、最近推出的Visdom、以及其他的一些工具來(lái)幫我們可視化結(jié)果。我相信數(shù)據(jù)科學(xué)一般來(lái)說(shuō)是最適合可視化驅(qū)動(dòng)開發(fā)的,因?yàn)榭梢暬屇阍谘邪l(fā)的每一步都能正確處理你所遇到的問(wèn)題。你沒有必要非得學(xué)習(xí)d3.js來(lái)獲得有用的可視化,除非你是JavaScript的狂熱愛好者。
小故事:在我的離職談話中,我咨詢George的意見,希望獲得一些提升工程師效率的建議(相信我,他是我見過(guò)的人當(dāng)中最有效率的,我會(huì)抓住每一個(gè)機(jī)會(huì)向他學(xué)習(xí))。他的建議是先構(gòu)建一些東西出來(lái),讓這些東西能夠可視化我在做的事情。George本人曾經(jīng)就是這么做的。此外,George 所有的IPython筆記本都有一個(gè)滑動(dòng)小部件,可以在原型設(shè)計(jì)中迅速顯示參數(shù)如何影響結(jié)果。
3、盡早明確你的驗(yàn)證/疑難案例數(shù)據(jù)集
我把充滿樂(lè)趣的可視化內(nèi)容放在第二位,是為了讓你被“準(zhǔn)備數(shù)據(jù)”嚇到之后,能稍作休息??墒?,如果你想避免成為一只打字機(jī)上的猴子,只會(huì)隨機(jī)往神經(jīng)網(wǎng)絡(luò)上添加更多的層,你必須要學(xué)會(huì)如何衡量進(jìn)度。
問(wèn)問(wèn)自己哪些指標(biāo)與優(yōu)秀的可交付成果的相關(guān)性更好,以及你應(yīng)該跟蹤哪些數(shù)據(jù)。
這或許超過(guò)了簡(jiǎn)單的“隨機(jī)驗(yàn)證10%的剩余數(shù)據(jù)”。驗(yàn)證的數(shù)據(jù)庫(kù)最好與產(chǎn)品擁有相同的統(tǒng)計(jì)屬性。同樣的產(chǎn)品也能被用于追蹤疑難、邊緣甚至失敗的案例,以制作未來(lái)的驗(yàn)證集。因此,你的驗(yàn)證集或許會(huì)不斷發(fā)展,而且應(yīng)該像訓(xùn)練集一樣進(jìn)行版本化。