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