NanoNets:數據有限如何應用深度學習?

NanoNets:數據有限如何應用深度學習?

翻譯 | 葉青 洪振亞 整理 | 吳璇

我覺得人工智能就像是去建造一艘火箭飛船。你需要一個巨大的引擎和許多燃料。如果你有了一個大引擎,但燃料不夠,那麼肯定不能把火箭送上軌道;如果你有一個小引擎,但燃料充足,那麼說不定根本就無法成功起飛。所以,構建火箭船,你必須要一個巨大的引擎和許多燃料。

深度學習(創建人工智能的關鍵流程之一)也是同樣的道理,火箭引擎就是深度學習模型,而燃料就是海量數據,這樣我們的算法才能應用上。——吳恩達

使用深度學習解決問題的一個常見障礙是訓練模型所需的數據量。對大數據的需求是因為模型中有大量參數需要學習。

以下是幾個例子展示了最近一些模型所需要的參數數量:

NanoNets:數據有限如何應用深度學習?

深度學習模型的詳細信息

神經網絡又名深度學習是可以堆疊起來的層狀結構(想想樂高)

深度學習只不過是大型神經網絡,它們可以被認為是流程圖,數據從一邊進來,推理或知識從另一邊出來。

你可以拆分神經網絡,把它拆開,從任何你喜歡的地方取出推理。你可能沒有得到任何有意義的東西,但你依然可以這麼做,例如Google DeepDream。

NanoNets:數據有限如何應用深度學習?

模型大小 ∝ 數據大小 ∝ 問題複雜度

在所需的數據量和模型的大小之間有一個有趣的近乎線性的關係。 基本的推理是,你的模型應該足夠大,以便捕捉數據中的關係(例如圖像中的紋理和形狀,文本中的語法和語音中的音素)以及問題的具體細節(例如類別數量)。模型早期的層捕捉輸入的不同部分之間的高級關係(如邊緣和模式)。後面的層捕捉有助於做出最終決策的信息,通常能夠幫助在想要的輸出間進行區分。因此,如果問題的複雜性很高(如圖像分類),參數數量和所需數據體量也非常大。

NanoNets:數據有限如何應用深度學習?

AlexNet在每一步能夠看到什麼

遷移學習來解圍!

在處理一個您的特定領域的問題時,通常無法找到構建這種大小模型所需的數據量。 然而,訓練一個任務的模型捕獲數據類型中的關係,並且可以很容易地再用於同一個領域中的不同問題。 這種技術被稱為遷移學習。

NanoNets:數據有限如何應用深度學習?

轉移學習就像沒有人試圖保留但卻保存的最好的秘密一樣。 業內人人都知道,但外界沒有人知道。

NanoNets:數據有限如何應用深度學習?

Google 趨勢機器學習 vs 深度學習 vs 遷移學習

參考Awesome — Most Cited Deep Learning Papers(https://github.com/terryum/awesome-deep-learning-papers),看看深度學習中的頂級論文: 引用最多的深度學習論文,超過50%的論文使用某種形式的轉移學習或預訓練。 轉移學習變得越來越適用於資源有限(數據和計算)的人們,但不幸的是,這個想法還沒有得到應有的社會化。 最需要它的人還不知道它。

如果深度學習是聖盃,數據是守門人,轉移學習是關鍵。

通過轉移學習,我們可以採用已經在大型現成數據集上訓練好的預訓練模型(在完全不同的任務上進行訓練,輸入相同但輸出不同)。 然後嘗試查找輸出可重複使用特徵的圖層。 我們使用該層的輸出作為輸入特徵來訓練需要更少參數的小得多的網絡。 這個較小的網絡已經從預訓練模型瞭解了數據中的模式,現在只需要瞭解它與你特定問題的關係。 貓咪檢測模型可以被重利用於梵高作品重現的模型就是這樣訓練的。

NanoNets:數據有限如何應用深度學習?

使用轉移學習的另一個主要優勢是模型的泛化效果很好。 較大的模型傾向於過度擬合數據(即對數據進行建模而不是對潛在的現象建模),並且在對未見數據進行測試時效果不佳。 由於轉移學習允許模型看到不同類型的數據,因此它更好地學習了世界的基本規則。

把過擬合看做是記憶而不是學習。—— James Faghmous

由於遷移學習導致的數據減少

假設想結束藍黑禮服vs白金禮服的爭論。你開始收集驗證的藍黑禮服和白金禮服的圖像。如果想自己建立一個像上文提到的那樣精確的模型(有140百萬個參數)。為了訓練這個模型,你需要找到120萬張圖像,這是一個不可能完成的任務。 所以可以試試遷移學習。

計算一下使用遷移學習解決該問題所需要的參數數量:

參數數量 = [輸入大小 + 1] * [輸出大小 + 1]

= [2048+1]*[1+1]~ 4098 個參數

我們看到參數數量從1.4×10⁸減少到4×10³,這是5個數量級。 所以我們要收集不到一百個連衣裙的圖像,這樣應該還好。唷!

如果你不耐煩,等不及要找出衣服的實際顏色,向下滾動,看看如何建立自己的禮服模型。

· · ·


分享到:


相關文章: