如何讓深度學(xué)習(xí)變得簡(jiǎn)單
在不遠(yuǎn)的過(guò)去,數(shù)據(jù)科學(xué)團(tuán)隊(duì)需要一些東西來(lái)有效地利用深度學(xué)習(xí):
新穎的模型架構(gòu),很可能是內(nèi)部設(shè)計(jì)的
訪問(wèn)大型且可能是專有的數(shù)據(jù)集
大規(guī)模模型訓(xùn)練所需的硬件或資金
這就阻礙了深度學(xué)習(xí),將其局限于滿足這些條件的少數(shù)項(xiàng)目。
然而,在過(guò)去幾年里,情況發(fā)生了變化。
在Cortex,用戶推出了基于深度學(xué)習(xí)的新一代產(chǎn)品,與以前不同的是,這些產(chǎn)品并非都是使用獨(dú)一無(wú)二的模型架構(gòu)構(gòu)建的。
這種進(jìn)步的背后驅(qū)動(dòng)力是遷移學(xué)習(xí)。
什么是遷移學(xué)習(xí)?
廣義上講,遷移學(xué)習(xí)是指在為特定任務(wù)訓(xùn)練的模型中積累知識(shí),例如,識(shí)別照片中的花可以轉(zhuǎn)移到另一個(gè)模型中,以助于對(duì)不同的相關(guān)任務(wù)(如識(shí)別某人皮膚上的黑色素瘤)進(jìn)行預(yù)測(cè)。
注:如果想深入研究遷移學(xué)習(xí),塞巴斯蒂安·魯?shù)拢⊿ebastian Ruder)已經(jīng)寫(xiě)了一本很棒的入門(mén)書(shū)。
遷移學(xué)習(xí)有多種方法,但有一種方法被廣泛采用,那就是微調(diào)。
在這種方法中,團(tuán)隊(duì)得到一個(gè)預(yù)訓(xùn)練的模型,并移除/重新訓(xùn)練模型的最后一層,以專注于一個(gè)新的、相關(guān)的任務(wù)。例如,AI Dungeon是一款開(kāi)放世界的文本冒險(xiǎn)游戲,因其人工智能生成的故事極具說(shuō)服力,而迅速風(fēng)靡:
值得注意的是,AI Dungeon不是在谷歌的一個(gè)研究實(shí)驗(yàn)室里開(kāi)發(fā)的,它是由一個(gè)工程師建造的項(xiàng)目。
AI Dungeon的創(chuàng)建者尼克·沃爾頓(NickWalton)并不是從頭開(kāi)始設(shè)計(jì)一個(gè)模型的,而是通過(guò)采用最先進(jìn)的NLP模型OpenAI的GPT-2,然后根據(jù)自行選擇的冒險(xiǎn)文本進(jìn)行微調(diào)。
這項(xiàng)工作之所以有效,是因?yàn)樵?u>神經(jīng)網(wǎng)絡(luò)中,最初的層關(guān)注簡(jiǎn)單的、一般的特征,而最終層則關(guān)注更多針對(duì)任務(wù)的分類/回歸。吳恩達(dá)通過(guò)想象一個(gè)圖像識(shí)別模型來(lái)可視化這些層和它們的相對(duì)特異性水平:
事實(shí)證明,基礎(chǔ)層的一般知識(shí)通??梢院芎玫剞D(zhuǎn)化為其他任務(wù)。在AI地牢的例子中,GPT-2對(duì)普通英語(yǔ)有著比較先進(jìn)的理解,只需在其最終層進(jìn)行一些再訓(xùn)練,就可以在自己選擇的冒險(xiǎn)類型中表現(xiàn)出色。
通過(guò)這個(gè)過(guò)程,一個(gè)工程師可以在幾天內(nèi)將一個(gè)模型部署到一個(gè)新的領(lǐng)域中,從而獲得比較新的結(jié)果。
為什么遷移學(xué)習(xí)是下一代機(jī)器學(xué)習(xí)驅(qū)動(dòng)型軟件的關(guān)鍵
在前面,筆者提到機(jī)器學(xué)習(xí)和深度學(xué)習(xí)所需要的有利條件,特別是要有效地使用這些條件。你需要訪問(wèn)一個(gè)大的、干凈的數(shù)據(jù)集,需要設(shè)計(jì)一個(gè)有效的模型,需要方法進(jìn)行訓(xùn)練。
這意味著在默認(rèn)情況下,在某些領(lǐng)域或沒(méi)有某些資源的項(xiàng)目是不可行的。
現(xiàn)在,通過(guò)遷移學(xué)習(xí),這些瓶頸正在消除:
一、小數(shù)據(jù)集不再是決定性因素
深度學(xué)習(xí)通常需要大量的標(biāo)記數(shù)據(jù),在許多領(lǐng)域中,這些數(shù)據(jù)根本不存在。遷移學(xué)習(xí)可以解決這個(gè)問(wèn)題。
例如,哈佛醫(yī)學(xué)院下屬的一個(gè)研究小組最近部署了一個(gè)模型,該模型可以“根據(jù)胸片預(yù)測(cè)長(zhǎng)期死亡率,包括非癌癥死亡”。
在擁有大約50000個(gè)標(biāo)記圖像的數(shù)據(jù)集的條件下,研究人員沒(méi)有從零開(kāi)始訓(xùn)練CNN(卷積神經(jīng)網(wǎng)絡(luò))所需的數(shù)據(jù)。取而代之的是,他們采用一個(gè)預(yù)訓(xùn)練的IncepTIon-v4模型(在擁有超過(guò)1400萬(wàn)張圖像的ImageNet數(shù)據(jù)集上進(jìn)行訓(xùn)練),使用遷移學(xué)習(xí),通過(guò)輕微修改架構(gòu)來(lái)使模型適應(yīng)他們的數(shù)據(jù)集。
最后,他們的CNN成功地僅使用一張胸部圖像為每位患者生成與患者實(shí)際死亡率相關(guān)的風(fēng)險(xiǎn)評(píng)分。
二、模型可以在幾分鐘內(nèi)訓(xùn)練,而不是幾天
在海量數(shù)據(jù)上訓(xùn)練模型不僅是獲取大型數(shù)據(jù)集的問(wèn)題,也是資源和時(shí)間的問(wèn)題。
例如,當(dāng)谷歌開(kāi)發(fā)比較先進(jìn)的圖像分類模型excepTIon時(shí),他們訓(xùn)練兩個(gè)版本:一個(gè)是ImageNet數(shù)據(jù)集(1400萬(wàn)張圖像),另一個(gè)是JFT數(shù)據(jù)集(3.5億張圖像)。
在60 NVIDIAK80GPUs上進(jìn)行各種優(yōu)化的訓(xùn)練,運(yùn)行一個(gè)ImageNet實(shí)驗(yàn)需要3天。JFT的實(shí)驗(yàn)花了一個(gè)多月的時(shí)間。
然而,現(xiàn)在已經(jīng)發(fā)布預(yù)先訓(xùn)練的XcepTIon模型,團(tuán)隊(duì)可以更快地微調(diào)自己的版本。
例如,伊利諾伊大學(xué)和阿貢國(guó)家實(shí)驗(yàn)室的一個(gè)小組最近訓(xùn)練了一個(gè)模型,將星系的圖像分為螺旋狀或橢圓形:
盡管只有35000個(gè)標(biāo)記圖像的數(shù)據(jù)集,他們能夠在8分鐘內(nèi)使用NVIDIAGPUs對(duì)XcepTIon進(jìn)行微調(diào)。
當(dāng)在GPU上運(yùn)行時(shí),模型能夠以每分鐘超20000個(gè)星系的超人速度對(duì)星系分類,準(zhǔn)確率達(dá)99.8%。
三、你不再需要風(fēng)險(xiǎn)投資來(lái)訓(xùn)練模型
當(dāng)在60 GPUs上訓(xùn)練Xception模型需要數(shù)月的時(shí)間的時(shí)候,谷歌可能不太在乎成本。然而,對(duì)于任何沒(méi)有谷歌規(guī)模預(yù)算的團(tuán)隊(duì)來(lái)說(shuō),模型訓(xùn)練的價(jià)格是一個(gè)真正令人擔(dān)憂的問(wèn)題。
例如,當(dāng)OpenAI第一次公布GPT-2的結(jié)果時(shí),他們發(fā)布了模型架構(gòu),但由于擔(dān)心誤用,沒(méi)有發(fā)布完整的預(yù)訓(xùn)練模型。
作為回應(yīng),Brown的一個(gè)團(tuán)隊(duì)按照本文所述的架構(gòu)和訓(xùn)練過(guò)程復(fù)制GPT-2,并調(diào)用模型OpenGPT-2。他們花了大約5萬(wàn)美元去訓(xùn)練,但表現(xiàn)不如GPT-2。
如果一個(gè)模型的性能低于比較先進(jìn)的水平,那么5萬(wàn)美元對(duì)于任何一個(gè)團(tuán)隊(duì)來(lái)說(shuō)都是一個(gè)巨大的風(fēng)險(xiǎn),因?yàn)樗麄冊(cè)跊](méi)有大量資金的情況下去構(gòu)建真正的軟件。
建造AI Dungeon時(shí),尼克·沃爾頓通過(guò)微調(diào)GPT-2來(lái)完成項(xiàng)目。OpenAI已經(jīng)投入大約27118520頁(yè)的文本和數(shù)千美元來(lái)訓(xùn)練這個(gè)模型,而沃爾頓不需要重新創(chuàng)建任何一個(gè)。
取而代之的是,他使用從chooseyourstory.com上截取了一組小得多的文本,并在完全免費(fèi)的GoogleColab中對(duì)模型進(jìn)行微調(diào)。
機(jī)器學(xué)習(xí)工程正在成為一個(gè)真正的生態(tài)系統(tǒng)
相比軟件工程,從相當(dāng)標(biāo)準(zhǔn)的模式來(lái)看,人們一般認(rèn)為生態(tài)系統(tǒng)已經(jīng)“成熟”。
一種涵蓋了一些極強(qiáng)性能的新編程語(yǔ)言即將出現(xiàn),人們將把它用于專門(mén)的案例、研究項(xiàng)目和玩具上。在這個(gè)階段,任何使用它的人都必須從頭開(kāi)始構(gòu)建所有的基本實(shí)用程序。
接下來(lái),這一社區(qū)中的人們開(kāi)發(fā)庫(kù)和項(xiàng)目,將公共實(shí)用程序抽離出來(lái),直到工具能夠穩(wěn)定地用于生產(chǎn)。
在這個(gè)階段,使用它來(lái)構(gòu)建軟件的工程師并不關(guān)心發(fā)送HTTP請(qǐng)求或連接到數(shù)據(jù)庫(kù),所有這些都被抽離出來(lái)的,工程師們只關(guān)注于構(gòu)建他們的產(chǎn)品。
換句話說(shuō),臉書(shū)構(gòu)建React,谷歌構(gòu)建Angular,而工程師使用它們來(lái)構(gòu)建產(chǎn)品。隨著遷移學(xué)習(xí)的發(fā)展,機(jī)器學(xué)習(xí)工程正朝著這一方向邁進(jìn)。
隨著OpenAI、谷歌、臉書(shū)和其他科技巨頭發(fā)布強(qiáng)大的開(kāi)源模型,機(jī)器學(xué)習(xí)工程師的“工具”變得更加強(qiáng)大和穩(wěn)定。
機(jī)器學(xué)習(xí)工程師們不再花時(shí)間用PyTorch或TensorFlow從頭開(kāi)始構(gòu)建模型,而是使用開(kāi)源模型和遷移學(xué)習(xí)來(lái)構(gòu)建產(chǎn)品,這意味著全新一代的機(jī)器學(xué)習(xí)驅(qū)動(dòng)軟件即將面世。
現(xiàn)在,機(jī)器學(xué)習(xí)工程師只需要擔(dān)心如何將這些模型投入生產(chǎn)。
深度學(xué)習(xí)不再困難。