通常情況下,機(jī)器學(xué)習(xí)尤其是深度學(xué)習(xí)的使用往往需要具備相當(dāng)?shù)挠欣麠l件,包括一個(gè)大型的數(shù)據(jù)集,設(shè)計(jì)有效的模型,而且還需要訓(xùn)練的方法——但現(xiàn)在,利用遷移學(xué)習(xí)就可以消除掉這些瓶頸。 譯文: 在不久之前,為了有效地使用深度學(xué)習(xí),數(shù)據(jù)科學(xué)團(tuán)隊(duì)需要: · 一種新穎的模型架構(gòu),很可能需要自己設(shè)計(jì); · 大型數(shù)據(jù)集,很可能需要自己收集; · 大規(guī)模訓(xùn)練模型的硬件或資金。 這些條件和設(shè)施成為了限制深度學(xué)習(xí)的瓶頸,只有少數(shù)滿足這些條件項(xiàng)目才能應(yīng)用深度學(xué)習(xí)。 然而,在過(guò)去的幾年中,情況發(fā)生了變化。 我們看到用戶開(kāi)始試用基于深度學(xué)習(xí)的新一代產(chǎn)品,而且與以往不同的是,這些產(chǎn)品使用的是以前沒(méi)有出現(xiàn)過(guò)的任何一種模型架構(gòu)。 這種增長(zhǎng)背后的驅(qū)動(dòng)力是遷移學(xué)習(xí)(transfer learning)。 什么是遷移學(xué)習(xí)? 從廣義上講,遷移學(xué)習(xí)的思想是專注于存儲(chǔ)已有問(wèn)題的解決模型(例如識(shí)別照片中的花朵),并將其利用在其他不同但相關(guān)問(wèn)題上(例如識(shí)別皮膚中的黑素瘤)。 遷移學(xué)習(xí)有多種方法,但其中一種方法——微調(diào)法(finetuning)得到了廣泛采用。 在這種方法中,團(tuán)隊(duì)采用預(yù)先訓(xùn)練好的模型,然后通過(guò)刪除或重新訓(xùn)練模型的最后一層,將其用于新的相關(guān)任務(wù)。例如,AI Dungeon是一款開(kāi)放世界的文字冒險(xiǎn)游戲,因其AI生成的生動(dòng)形象的故事而廣為傳播: 注意,AI Dungeon不是Google研究實(shí)驗(yàn)室開(kāi)發(fā)的項(xiàng)目,只是一名工程師構(gòu)建的黑客馬拉松項(xiàng)目。 AI Dungeon的創(chuàng)建者Nick Walton并沒(méi)有從零開(kāi)始設(shè)計(jì)模型,而是采用了最新的NLP模型(OpenAI GPT-2),然后對(duì)其進(jìn)行微調(diào)來(lái)設(shè)置自己的冒險(xiǎn)文字。 這種方法完全可行的原因是,在神經(jīng)網(wǎng)絡(luò)中,最初幾層主要負(fù)責(zé)簡(jiǎn)單、通用的特征,而最后幾層主要負(fù)責(zé)與任務(wù)有關(guān)的分類/回歸。Andrew Ng 用一個(gè)圖像識(shí)別模型的例子,以可視化的方式介紹了各層與任務(wù)本身的相關(guān)性: 事實(shí)證明,基礎(chǔ)層學(xué)習(xí)的通用知識(shí)通常可以很好地遷移到其他任務(wù)上、。在AI Dungeon的示例中,GPT-2對(duì)通用英語(yǔ)有良好的理解,只需要對(duì)最后幾層進(jìn)行一些重新訓(xùn)練,即可在冒險(xiǎn)游戲中給出優(yōu)異的表現(xiàn)。 每位工程師都可以通過(guò)這種流程,在幾天之內(nèi)部署一個(gè)模型,以在新的領(lǐng)域?qū)崿F(xiàn)最新的結(jié)果。 為什么遷移學(xué)習(xí)是下一代機(jī)器學(xué)習(xí)軟件的關(guān)鍵? 本文開(kāi)頭我提到了使用機(jī)器學(xué)習(xí)(尤其是深度學(xué)習(xí))需要具備的有利條件。你需要一個(gè)大型的數(shù)據(jù)集,需要設(shè)計(jì)有效的模型,而且還需要訓(xùn)練的方法。 這意味著一般而言,某些領(lǐng)域的項(xiàng)目或缺乏某些資源的項(xiàng)目就無(wú)法開(kāi)展。 如今,我們可以利用遷移學(xué)習(xí)消除這些瓶頸: 1、小型數(shù)據(jù)集不再是問(wèn)題 通常,深度學(xué)習(xí)需要大量帶標(biāo)簽的數(shù)據(jù),但在許多領(lǐng)域中,這些數(shù)據(jù)根本不存在。然而,遷移學(xué)習(xí)可以解決這個(gè)問(wèn)題。 例如,哈佛醫(yī)學(xué)院附屬團(tuán)隊(duì)最近部署了一個(gè)模型,該模型可以“根據(jù)胸部X光片,預(yù)測(cè)長(zhǎng)期的死亡率,包括非癌性死亡”。 他們只有5萬(wàn)張帶標(biāo)簽圖像的數(shù)據(jù)集,不足以從頭開(kāi)始訓(xùn)練CNN(卷積神經(jīng)網(wǎng)絡(luò))。于是,他們采用了預(yù)先訓(xùn)練好的的Inception-v4模型(該模型在擁有超過(guò)1400萬(wàn)張圖像的ImageNet數(shù)據(jù)集上進(jìn)行了訓(xùn)練),并使用遷移學(xué)習(xí)和輕微的架構(gòu)調(diào)整,讓模型適應(yīng)了他們的數(shù)據(jù)集。 最終,他們的CNN成功地使用每位患者的一張胸部圖像,生成了與患者的實(shí)際死亡率相關(guān)的風(fēng)險(xiǎn)評(píng)分。 2、模型可在幾分鐘訓(xùn)練完成 在大量數(shù)據(jù)上訓(xùn)練模型面臨的難題不僅僅是獲取大型數(shù)據(jù)集,還有資源和時(shí)間的問(wèn)題。 例如,當(dāng)Google開(kāi)發(fā)最尖端的圖像分類模型Xception時(shí),他們訓(xùn)練了兩個(gè)版本:一個(gè)在ImageNet數(shù)據(jù)集(1400萬(wàn)張圖像)上,另一個(gè)在JFT數(shù)據(jù)集(3.5億張圖像)上。 即使他們?cè)谟?xùn)練中采用了60個(gè)NVIDIA K80 GPU,并進(jìn)行了各種優(yōu)化,但每次ImageNet實(shí)驗(yàn)的運(yùn)行都需要3天的時(shí)間。而JFT實(shí)驗(yàn)耗時(shí)一個(gè)多月。 如今,經(jīng)過(guò)預(yù)訓(xùn)練的Xception模型已經(jīng)發(fā)布了,各個(gè)團(tuán)隊(duì)可以通過(guò)微調(diào)更快地實(shí)現(xiàn)自己的模型。 例如,伊利諾伊大學(xué)和阿貢國(guó)家實(shí)驗(yàn)室的一個(gè)團(tuán)隊(duì)最近訓(xùn)練了一個(gè)模型,將星系的圖像分類為螺旋形或橢圓形: 盡管只有3萬(wàn)5千張帶標(biāo)簽的圖像數(shù)據(jù)集,但他們?nèi)阅軌蚴褂肗VIDIA GPU,在短短8分鐘內(nèi)對(duì)Xception進(jìn)行微調(diào)。 這樣得到模型在GPU上運(yùn)行時(shí),能夠以每分鐘超過(guò)2萬(wàn)個(gè)星系的驚人速度,并以99.8%的成功率對(duì)星系進(jìn)行分類。 3、不再需要風(fēng)險(xiǎn)資本來(lái)訓(xùn)練模型 當(dāng)初Google花費(fèi)數(shù)月在60個(gè)GPU上訓(xùn)練一次Xception模型時(shí),可能他們并不在乎成本。但是,對(duì)于沒(méi)有那么多預(yù)算的團(tuán)隊(duì)來(lái)說(shuō),訓(xùn)練模型是非?,F(xiàn)實(shí)的問(wèn)題。 例如,當(dāng)OpenAI首次公布GPT-2的結(jié)果時(shí),由于擔(dān)心濫用,他們只發(fā)布了模型架構(gòu),卻未發(fā)布完整的預(yù)訓(xùn)練模型。 之后,布朗大學(xué)的一個(gè)團(tuán)隊(duì)按照論文陳述的架構(gòu)和訓(xùn)練過(guò)程試圖重現(xiàn)GPT-2,并命名為OpenGPT-2。他們花了大約5萬(wàn)美金進(jìn)行了訓(xùn)練,但性能仍不及GPT-2。 5萬(wàn)美金的投入?yún)s未能訓(xùn)練出性能過(guò)關(guān)的模型,對(duì)于沒(méi)有充裕資金的生產(chǎn)軟件團(tuán)隊(duì)來(lái)說(shuō)都是巨大的風(fēng)險(xiǎn)。 幸運(yùn)的是,遷移學(xué)習(xí)可以顯著降低成本。 當(dāng)初Nick Walton構(gòu)建AI Dungeon時(shí),他對(duì)GPT-2進(jìn)行了微調(diào)。OpenAI已經(jīng)投入了大約27,118,520頁(yè)文本和數(shù)千美元來(lái)訓(xùn)練模型,所以Walton坐享其成就可以了。 機(jī)器學(xué)習(xí)工程的生態(tài)系統(tǒng)正在建設(shè)中 回顧軟件工程,我們會(huì)發(fā)現(xiàn)生態(tài)系統(tǒng)的“成熟”過(guò)程通常都有極其相似的模式。 首先是一門新語(yǔ)言的出現(xiàn),而且還擁有令人興奮的功能,然后人們將這門語(yǔ)言用于某些特別的場(chǎng)景,或者用于研究項(xiàng)目和業(yè)余愛(ài)好。在這個(gè)階段,任何使用這門語(yǔ)言的人都必須從零開(kāi)始構(gòu)建所有的基礎(chǔ)實(shí)用程序。 接下來(lái),社區(qū)會(huì)開(kāi)發(fā)庫(kù)和項(xiàng)目,將常見(jiàn)的實(shí)用程序抽象化,直到這些工具的功能足夠強(qiáng)大,足夠穩(wěn)定,能用于生產(chǎn)。 在這個(gè)階段,使用這門語(yǔ)言來(lái)構(gòu)建軟件的工程師不必再擔(dān)心發(fā)送HTTP請(qǐng)求或連接到數(shù)據(jù)庫(kù)等問(wèn)題(所有這些都已被抽象化),只需專心構(gòu)建產(chǎn)品即可。 換句話說(shuō),Facebook構(gòu)建React,Google構(gòu)建Angular,而工程師們則可以利用這些框架來(lái)構(gòu)建產(chǎn)品。而這一過(guò)程在機(jī)器學(xué)習(xí)中就是遷移學(xué)習(xí)。 隨著OpenAI、Google、Facebook和其他科技巨頭發(fā)布強(qiáng)大的開(kāi)源模型,面向機(jī)器學(xué)習(xí)工程師的“工具”會(huì)越來(lái)越強(qiáng)大,越來(lái)越穩(wěn)定。 機(jī)器學(xué)習(xí)工程師不再需要花時(shí)間使用PyTorch或TensorFlow從頭開(kāi)始構(gòu)建模型,他們可以利用開(kāi)源模型并通過(guò)遷移學(xué)習(xí)來(lái)構(gòu)建產(chǎn)品。 機(jī)器學(xué)習(xí)軟件的新時(shí)代即將到來(lái)。如今,機(jī)器學(xué)習(xí)工程師只需專心思考如何將這些模型投入生產(chǎn)。 原文:https://towardsdatascience.com/deep-learning-isnt-hard-anymore-26db0d4749d7 作者:Caleb Kaiser,創(chuàng)始團(tuán)隊(duì)成員@Cortex Labs。 |
|