深度學習應用不再舉步維艱,遷移學習成最大功臣

作者 | Caleb Kaiser

編譯 | 叢末
在不久之前,一個數據科學家團隊要想有效地使用深度學習,需要滿足以下幾個條件:

  • 設計一種新穎的模型架構,並且該架構可能需要在模型內部設計
  • 可使用大型或專有的數據集
  • 用於大型模型訓練的硬件或資金

這就給深度學習帶來了瓶頸,並將它侷限在能夠滿足這些條件的少數項目中。然而,在過去幾年間,情況發生了變化。在 Cortex 這一平臺上,有不少用戶發佈了基於深度學習的新一代產品,並且與之前不同的是,這些產品並非都是使用獨一無二的模型架構創建的。這一進展背後的最大功臣便是遷移學習。

一、遷移學習

從廣義上來看,遷移學習是一種在爲特定任務而訓練的模型中積累知識的思想,比如說,一個模型在識別圖像中的花的任務中積累的知識,可以遷移到另一個模型上來幫助另一個不同但是相關的任務(例如識別某個人的皮膚上的皮膚上的黑素瘤)做預測。如果想要深入瞭解遷移學習,可參考 Sebastian Ruder 曾爲遷移學習寫過的一篇綜述性的文章:https://ruder.io/transfer-learning/ 做遷移學習的方法有很多,而其中微調的方法尤其被廣泛採用。在該方法下,研究者採用一個預訓練模型並去除或重新訓練模型最後的幾層,來完成一個新的相關任務。AI Dungeon 是一款開放世界的文字冒險遊戲,根據 AI 生成的故事有多令人信服向前推進:

深度學習應用不再舉步維艱,遷移學習成最大功臣

圖源:AI Dungeon 值得一提的是,AI Dungeon 這款遊戲並非誕生於谷歌的研究實驗室,而是由一位工程師創建的黑客競技項目。這位工程師名叫 Nick Walton,不過他並沒有從頭開始爲 AI Dungeon 設計模型,而是採用了當前性能最佳的 NLP 模型——OpenAI 的 GPT-2,並基於玩家自身選擇的冒險文本來對模型進行微調。這款 AI 遊戲的工作原理是:在神經網絡中,前面的層專注於簡單、一般的特徵,而後面的層則更多地聚焦於特定任務的分類和迴歸。吳恩達通過設想一個圖像識別模型,對這些層和它們的相對獨特度進行了可視化處理:深度學習應用不再舉步維艱,遷移學習成最大功臣圖源:Stanford 結果顯示,基礎層的通用知識往往能夠很好地遷移到其他任務上。在 AI Dungeon 這一遊戲示例中,GPT-2 在理解通用英文上已經實現了最佳性能,僅僅需要對模型後面的層稍微重新訓練下,玩家就能夠在自己選擇的冒險題材的文本遊戲中獲得出色的表現。通過這種處理方法,一位工程師在幾天時間內,就能夠獨自將實現了最佳結果的模型部署到新的領域中。

二、爲什麼遷移學習是下一代 ML 賦能軟件的關鍵所在

正如作者在開頭提到的,深度學習要想得到有效地應用,需要具備三個支撐條件:大規模、乾淨的數據集、設計出高效模型的能力以及模型訓練的方法。這也就意味着在默認情況下,在某些領域或沒有某些資源的項目中,深度學習很難得到很好的應用。而現在,隨着遷移學習的廣泛應用,這些瓶頸都不再是瓶頸:1、小數據集不再是“攔路虎”深度學習通常需要大量的標註數據,然而很多領域目前甚至都還沒有這類標註數據。遷移學習則能夠解決這一問題。例如,哈佛醫學院麾下的一個研究團隊最近就部署了一個能夠“能夠根據胸片預測包括非癌症死亡在內的死亡率”的模型:深度學習應用不再舉步維艱,遷移學習成最大功臣圖源:JAMA Network 有了超過 50000 張標註圖片的數據集後,他們並沒有使用這些數據從頭開始訓練 CNN (卷積神經網絡),而是採用了經過預訓練的 Inception-v4 模型(在有 1400 萬張 ImageNet 數據集上訓練),並且使用遷移學習和輕微的架構調整方法來使其模型適應新的數據集。 最終,他們訓練的 CNN 模型僅僅使用了每個病人的一張胸部圖像,就能夠生成與病人的實際死亡率對應相關的風險評分,應用得非常成功。 2、模型可以在幾分鐘訓練完,而不需要數天在海量數據上訓練模型,不僅面臨需要獲得大規模數據集的問題,還面臨着資源和時間消耗這一問題。例如,谷歌在開發最前最先進的圖像分類模型 Xception 時,訓練了兩個版本:一個是在 ImageNet 數據集(有 1400 萬張圖像)上訓練,另一個在 JFT 數據集(有 3.5 億張圖像)上訓練。採用各種優化器在 60 個 NVIDIA 的 K80 GPU 上訓練,前一個版本花了 3 天時間,而後一個版本則花了一個多月的時間。 而使用其發佈的預訓練 Xception 模型。谷歌研究團隊能夠更快地對上述兩個版本的模型進行微調。 另外一個案例是,伊利諾伊大學和美國阿貢國家實驗室的聯合團隊最近訓練了一個模型,來將星系的圖像分類爲螺旋狀還是橢圓狀:深度學習應用不再舉步維艱,遷移學習成最大功臣圖源:阿貢實驗室雖然只有一個擁有 35000 張標註圖片的數據集,他們使用 NVIDIA 的 GPU,在僅僅 8 分鐘內就完成了對 Xception 模型的微調。最終的模型能夠 9.8% 的正確率對星系進行分類,並且還在速度上超越了人類,每分鐘能分類 20000 多個星系。 3、 訓練模型不再需要承擔投資風險谷歌可能並不是很在乎他們每次都用 60 塊 GPU 數月地訓練 Xception 模型所需要花費的成本。然而,其他的多數團隊並不具有像谷歌一樣的財力支持,模型訓練的成本是一個非常實際的問題。例如, OpenAI 在首次公開 GPT-2 的結果時,一同發佈了模型架構,但是由於擔心被誤用而沒有發佈完整的預訓練模型。隨後,布朗大學的一個研究團隊根據模型架構和論文中描述的訓練步驟復現了 GPT-2,他們將這一模型稱之爲 OpenGPT-2。整個訓練花費了超過 50000 美元,然而表現卻遠不如 GPT-2。花了 50000 美元來訓練模型,結果性能卻低於當前的最佳性能,對於在沒有大量資金支持下開發應用型生產軟件的團隊而言,都是一個巨大的風險。而值得慶幸的是,遷移學習能夠極大地降低這種成本。例如 Nick Walton 就採用對 GPT-2 進行微調的方法開發出了 AI Dungeon。OpenAI 已經投入了大約 27118520 頁文本和數千美元來訓練 GPT-2 模型,所以 Walton 不需要重新創建。相反地,他使用了從 chooseyourstory.com 上截取的一組小得多的文本,並在完全免費的 Google Colab 中對模型進行了微調。

三、機器學習工程正在變成一個真正的生態系統

如果將軟件工程視作一個並行的操作,我們往往會看到這一生態系統正在以相當標準的模式「成熟」。一種新的編程語言誕生往往伴隨着一些令人興奮的特性,人們將把它應用於特定的用例、研究項目和遊戲。在這一階段,任何使用它的人都必須從頭開始構建所有基本的實用程序。接着,再由社區中的研究者開發能夠抽象出公共實用程序的庫和項目,直到這些工具足夠穩定地用於生產。在該階段,使用它來開發軟件的工程師並不在意發送 HTTP 請求到數據庫或者與數據庫連接,畢竟所有這些都是抽象出來的。而工程師們基本上只聚焦於構建他們的產品。換句話說,Facebook 開發 React,谷歌開發 Angular,而工程師則使用它們來開發產品。隨着遷移學習的發展,機器學習工程也正邁着這樣的步伐向前發展。隨着 OpenAI、谷歌、Facebook 等科技巨頭先後發佈強大的開源模型,機器學習工程師的「工具」也變得越來越強大和穩定。機器學習工程師們不再需要把時間花在使用 PyTorch 或 TensorFlow 從頭開始創建模型,而是使用開源模型和遷移學習來開發產品,這意味着全新一代的機器學習賦能的軟件即將到來。而現在,機器學習工程師只需要關心:如何將這些模型投入生產。via: https://towardsdatascience.com/deep-learning-isnt-hard-anymore-26db0d4749d7?gi=f918c0f5f26f


深度學習應用不再舉步維艱,遷移學習成最大功臣

深度學習應用不再舉步維艱,遷移學習成最大功臣點擊“閱讀 原文” 前往 AAAI 2020 專題

來源鏈接:mp.weixin.qq.com