遷移學習:人人可使用的深度學習,已經觸手可及
廣義上講,遷移學習是指將經過一項任務訓練的深度神經網絡的知識“遷移”到訓練相關任務的另一個網絡的技術。例如,可以使用遷移學習來獲取用于對象檢測模型,然后使用少量數據對其進行“微調”來檢測更具體的事物。
什么是遷移學習
廣義上講,遷移學習是指將經過一項任務訓練的深度神經網絡的知識“遷移”到訓練相關任務的另一個網絡的技術。例如,可以使用遷移學習來獲取用于對象檢測模型,然后使用少量數據對其進行“微調”來檢測更具體的事物。
這些技術之所以能起作用是因為深度神經網絡的體系結構。網絡的低層負責更多的基礎知識,而特定任務知識則通常在頂層:
較低層訓練完后,可以用少量數據微調較高的層。例如,對象檢測模型(比如說YOLOv4)進行微調后可以識別具有很小數據集的特定事物(例如車牌)。
在網絡之間遷移知識的技術各不相同,但不約而同的是,最近有許多新項目旨在簡化這個過程。例如,gpt-2-simple庫允許任何人微調GPT-2,還可以使用Python函數生成預測:https://gist.github.com/caleb-kaiser/dd40d16647b1e4cda7545837ea961272。
遷移學習是如何打通機器學習的
大部分團隊不會因為缺乏某類知識而無法使用機器學習。如果要構建圖像分類器,有許多知名的模型可以使用,使用現代化框架會讓訓練變得非常簡單。對于大多數團隊來說,機器學習因其成本因素所以從未被視為一個現實的選擇。
讓我們用OpenAI的(到目前為止)最佳語言模型GPT-2為例來說明。
如果使用公有云,單就估算GPT-2訓練成本就已超過4萬美元,除了這一費用,GPT-2還需要訓練40GB的文本內容(保守估計超過2000萬頁),抓取和整理大量文本本身就是一個巨大的項目。這讓大多數團隊無法訓練自己的GPT-2。
但如果只是對其進行微調呢?來看一個相關項目。
AI Dungeon是一款可自行選擇的冒險游戲,其風格延續之前的命令游戲地牢爬行者。玩家通過輸入指令進行游戲,游戲通過推進冒險作為回應。這款冒險游戲是由訓練后的GPT-2模型編寫的,你可以編寫自己選擇的冒險文本:
AI Dungeon是由獨立工程師尼克·沃頓開發的,他利用gpt-2-simple和從chooseyourstory.com網站上提取的文本微調GPT。沃爾頓表示微調GPT-2需要30MB的文本和12小時左右的時間來訓練DGX-1——大約花費了374.62美元,但做出來的產品效果和AWS的p3dn.24xlarge差不多。
也許大部分團隊只能對著4萬美元的云服務費和40GB的文本提取量望洋興嘆,但是375美元和30MB即便對小團隊來說也不成問題。
遷移學習的應用領域超越了語言模型。在藥物發現中,通常沒有足夠的特定疾病數據來從零開始訓練模型。DeepScreening是一個解決此類問題的免費平臺,它允許用戶上傳自己的數據庫和微調模型,然后利用該平臺來篩選可能會發生反應的化合物庫。
從零開始訓練一個這樣的模型超出大多數研究人員的能力范圍,但是由于有了遷移學習,突然間人人都可以做到。
新一代深度學習模型取決于遷移學習
必須強調的一點是,盡管筆者目前給出的例子都偏重經濟效益,但遷移學習并不是小型團隊用來湊數的一個工具,所有團隊無論大小都在使用遷移學習來訓練深度學習模型。事實上,一些新發布的模型都是專門針對遷移學習的。
還記得GPT-2首次發布時,因其原始內存而霸占各大頭版頭條,我們以前從未聽說過有15億參數的模型。然而和GPT-3相比則是小巫見大巫了,后者參數量達到1750億。
除了OpenAI之外,幾乎沒有哪家公司能訓練擁有1750億個參數的語言模型。即便是部署這么大的模型也存在諸多問題。OpenAI打破了他們發布開源的傳統,預訓練新模型版本,將GPT-3作為API發行—用戶可以使用自己的數據微調GPT-3。
換句話說,GPT-3的龐大讓遷移學習不再是訓練新任務的一個經濟實惠的方法,而是唯一可行的方法。
遷移學習優先方法已經變得越來越普遍。Google剛剛發布的Big Transfer是一個先進計算機視覺模型開源存儲庫。盡管計算機視覺模型通常要比語言模型小,但它們已經開始追趕了——預訓練過的ResNet-152x4接受了1400萬張圖像的訓練,容量為4.1 GB。
顧名思義,Big Transfer旨在鼓勵利用這些模型來使用轉移學習。作為存儲庫的一部分,Google還提供了可以輕松微調每個模型的代碼。正如下圖所示,模型容量會隨著時間不斷增大(GPT-3會將圖表的大小增加10倍):
如果這種趨勢持續下去(沒有跡象表明這種趨勢不會持續),那么遷移學習將成為團隊使用前沿深度學習的主要方式。
隨著模型變得越來越大,遷移學習使得每個團隊都能使用這些模型,投入生產的大型深度學習模型的數量猛增。訓練這些模型是一個挑戰——它們需要大量空間和內存來進行推理,而且通常無法一次處理多個請求。
因為這些模型(GPU / ASIC推斷,基于請求的彈性伸縮,spot實例支持),我們已經給Cortex引入了幾個主要功能,并且隨著模型的擴大,我們將不斷添加新的功能。
然而,與讓世界上每個工程師都可以使用最先進的深度學習解決問題的潛力相比,基礎架構挑戰性的難度微不足道。人人可使用的深度學習,已經觸手可及。