不再受限於資料集和硬體,下一代 ML 軟體如何構建?

喜歡打醬油的老鳥發表於2020-04-04

在不久以前,資料科學團隊需要一些東西來有效地利用深度學習:              

  • 一種新穎的模型結構,這個結構可能是內部設計的              

  • 訪問大型且、專有的資料集              

  • 大型模型訓練的硬體或資金              

這些條件將深度侷限於滿足它們的少數專案中,阻礙了深度學習的發展。              

然而,在過去幾年裡,情況發生了變化。              

在 Cortex,我們看到使用者推出了基於深度學習的新一代產品,與以前不同的是,這些產品並非都是使用獨一無二的模型架構構建的。              

這種增長背後的驅動力是遷移學習。              

什麼是遷移學習?              

廣義上講,遷移學習是指為特定任務訓練的模型中積累的知識,例如,識別照片中的花可以遷移到另一個模型中,以幫助對不同的相關任務(如識別某人皮膚上的黑色素瘤)進行預測。              

如果你想在遷移學習上有更專業的鑽研,Sebastian Ruder 已經寫了一本很棒的入門書:https://ruder.io/transfer-learning/ 。              

遷移學習有多種方法,但有的方法特別是微調方法被廣泛採用。              

在這種方法中,團隊接受一個預先訓練的模型,並移除/重新訓練模型的最後一層,以專注於一個新的、相關的任務。例如,AI Dungeon 是一款開放世界的文字冒險遊戲,它的人工智慧生成的故事非常有說服力:

不再受限於資料集和硬體,下一代 ML 軟體如何構建?

圖片來源:AI Dungeon          

值得注意的是,AI Dungeon 不是在谷歌的研究實驗室裡開發的,它是一個由個人工程師建造的黑客競技專案。              

AI Dungeon 的建立者 Nick Walton 並不是從頭開始設計模型,而是通過採用最先進的 NLP 模型 OpenAI 的 GPT-2,然後根據自己選擇的冒險文字進行微調獲得的。              

這項工作之所以有效,是因為在神經網路中,最初的層關注簡單的、一般的特徵,而最後的層則關注更多特定於任務的分類、迴歸。Andrew Ng 通過想象一個影像識別模型來視覺化這些層和它們的相對特異性水平:

不再受限於資料集和硬體,下一代 ML 軟體如何構建?

圖片來源:Stanford      

事實證明,基本層的一般知識通常可以很好地轉化為其他任務。在 AI Dungeon 的例子中,GPT-2 對常用的英語有著最先進的理解,它只需要在它的最後一層進行一些再訓練,就可以在自己選擇的冒險型別中表現出色。              

通過這個過程,一個工程師可以在幾天內將一個模型部署到一個新的域中,從而獲得最新的結果。       

為什麼遷移學習是下一代 ML 的軟體的關鍵              

在前面,我提到了機器學習和深度學習所需要的條件,特別是要有效地使用這些條件。你需要訪問一個大的、乾淨的資料集,你需要能夠設計一個有效的模型,你需要訓練它的方法。              

這意味著在預設情況下,在某些領域或沒有某些資源的專案是不可行的。              

現在,通過遷移學習,這些瓶頸正在消除:              

1.小資料集不再是瓶頸            

深度學習通常需要大量的標記資料,然而在許多領域中,這麼多資料根本不存在。遷移學習可以解決這個問題。              

例如,哈佛醫學院下屬的一個研究小組最近部署了一個模型,該模型可以「根據胸片預測長期死亡率,包括非癌症死亡」。

不再受限於資料集和硬體,下一代 ML 軟體如何構建?

圖片來源:JAMA Network             

有了大約50000個標記影像的資料集,他們沒有從零開始訓練 CNN 所需的資料。實際上,他們採用了一個預先訓練過的 Inception-v4 模型(在超過 1400 萬張影像的 ImageNet 資料集上進行訓練),並使用了遷移學習和輕微的架構修改來使模型適應他們的資料集。              

最後,他們的 CNN 成功地為每位患者僅使用一張胸部影像來生成與患者實際死亡率相關的風險評分。

2.模型可以在幾分鐘內訓練,而不是幾天              

在海量資料上訓練模型不僅有獲取大型資料集的問題,還有資源和時間的問題。              

例如,當 Google 開發最先進的影像分類模型 exception 時,他們訓練了兩個版本:一個是 ImageNet 資料集(包含 1400 萬張影像),另一個是 JFT 資料集(包含 3.5 億張影像)。              

在 60 NVIDIA K80 GPU 上進行各種優化的訓練,執行一個 ImageNet 實驗需要 3 天。JFT 的實驗花了一個多月的時間。              

然而,現在已經發布了預訓練的異常模型,團隊可以更快地微調自己的版本。              

例如,伊利諾伊大學和阿貢國家實驗室的一個小組最近訓練了一個模型,將星系的影像分類為螺旋狀或橢圓形:

不再受限於資料集和硬體,下一代 ML 軟體如何構建?

資料來源:阿貢計算裝置              

儘管只有 35000 個標記影像的資料集,他們能夠在 8 分鐘內使用 NVIDIA GPU 對異常進行微調。      

當它在 GPU 上服務時,所得到的模型能夠將星系以每分鐘超過 20000 個的超人速度進行歸類,且準確率高達 99.8% 。              

3.訓練模型不再像投資一樣有風險              

即便模型在 60 個 gpu 上訓練數月的時間,谷歌可能也不太在乎成本。然而,對於那些沒有谷歌規模預算的團隊來說,模型訓練的價格是一個真正令人擔憂的問題。              

例如,當 OpenAI 第一次公佈 GPT-2 的結果時,他們釋出了模型架構,但由於擔心有問題,於是並沒有釋出完整的預訓練模型。              

作為回應,Brown 的一個團隊按照本文所述的架構和訓練過程複製了 GPT-2,並呼叫了他們的模型 OpenGPT-2。他們花了大約 5 萬美元去訓練,但表現不如 GPT-2。              

如果一個模型的效能低於最先進的水平,那麼 50000 美元對於任何一個團隊來說都是一個巨大的風險,因為他們是在沒有大量資金的情況下構建真正的生產軟體。              

幸運的是,遷移學習大大降低了這一成本。              

當 Nick Walton 建立 AI Dungeon 時,他通過微調 GPT-2 來完成。OpenAI 已經投入了大約 27118520 頁的文字和數千美元來訓練這個模型,而 Walton 不需要重新建立。              

相反,他使用了從 chooseyourstory.com 上擷取的一組小得多的文字,並在完全免費的 Google Colab 中對模型進行了微調。              

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

將軟體工程看作一個並行的過程,我們通常會看到生態系統以相當標準的模式「成熟」。              

一種新的程式語言將有一些令人興奮的特性,人們將把它用於專門的用例、研究專案和玩具。在這個階段,任何使用它的人都必須從頭開始構建所有的基本實用程式。              

接下來,社群中的人們開發庫和專案,將公共實用程式抽象出來,直到工具能夠穩定地用於生產。       

在這個階段,使用它來構建軟體的工程師並不關心傳送 HTTP 請求或連線到資料庫,所有這些都是抽象出來的,只關注於構建他們的產品。              

換句話說,Facebook 構建 React,Google 構建 Angular,工程師使用它們來構建產品。隨著遷移學習的發展,機器學習工程正朝著這一步邁進。              

隨著 OpenAI、Google、Facebook 和其他科技巨頭髮布強大的開源模型,機器學習工程師的「工具」變得更加強大和穩定。              

機器學習工程師們不再花時間用 PyTorch 或 TensorFlow 從頭開始構建模型,而是使用開源模型和遷移學習來構建產品,這意味著全新一代的 ML 驅動軟體即將面世。              

現在,機器學習工程師只需要擔心如何將這些模型投入生產。              

注意:如果你對使用經過微調的模型構建軟體感興趣,請檢視 Cortex,一個用於部署模型的開源平臺:https://github.com/cortexlabs/cortex 。

via:https://towardsdatascience.com/deep-learning-isnt-hard-anymore-26db0d4749d7

相關文章