數據太少怎么搞深度學習?


作者:Tyler Folkman
編譯:McGL

你一定看過這種報道——深度學習是切片面包以來最流行的東西。它許諾用海量數據的一小部分即可解決你最復雜的問題。唯一的問題是你既不在 Google 也不在 Facebook 工作,數據稀缺。那該怎么辦呢?你是否仍然可以利用深度學習的力量?還是無奈運氣不佳?讓我們看看怎樣在數據有限的情況下利用深度學習,以及為什么我認為這可能是未來研究最令人興奮的領域之一。

 

從簡單開始

在我們討論利用有限的數據進行深度學習的方法之前,請忘了神經網絡並創建一個簡單的基准。嘗試一些傳統模型(如隨機森林)通常不需要很長時間。這將幫助你評估深度學習的任何潛在提升,並深入理解在你的問題上深度學習與其它傳統方法的權衡取舍。

 

獲取更多數據

這聽起來很荒謬,但是你是否真正考慮過可以收集更多數據呢?我對公司提出這個建議的頻率感到驚訝,他們看我像是個瘋子。沒錯,可以花時間和金錢來收集更多數據。實際上,這通常是你的最佳選擇。例如,也許你正在嘗試對稀有鳥類物種進行分類並且數據十分有限。幾乎可以肯定,僅通過標記更多數據,你就可以更輕松地解決此問題。不確定需要收集多少數據?嘗試在增加數據時繪制學習曲線並查看模型性能的變化。

 

微調(Fine-Tuning)

Okay. 假設你現在有了一個簡單的基准模型,並且不可能收集更多數據或費用太高。此時,嘗試最多的方法是利用預訓練模型,然后針對你的問題進行微調。

微調的基本思想是用一個非常大的數據集,該數據集最好和你數據的領域有些相似,訓練一個神經網絡,然后用較小的數據集微調此預訓練網絡。

對於圖像分類問題,這個關鍵數據集是經典的ImageNet。該數據集包含很多不同類別的數百萬圖像,對很多類型的圖像問題非常有用。它甚至包括動物,因此可能有助於稀有鳥類的分類。

 

數據增強(Data Augmentation)

如果無法獲得更多數據,且無法對大型數據集進行微調,那么數據增強通常是你的第二選擇。它也可以與微調結合使用。

數據增強背后的思路很簡單:改變輸入數據而不改變輸出標簽值。

例如,如果你有一只貓的圖片並旋轉圖像,那它仍然是一只貓。這是很好的數據增強。另一方面,如果你有一張道路圖片,並且想要預測適當的轉向角(自動駕駛汽車),則旋轉圖像會更改合適的轉向角。這種情況數據增強當然是不行滴。

數據增強最常用於圖像分類問題。

你經常可以想到一些創造性的方法把數據增強用到其它領域(如NLP),人們也在嘗試使用GAN來生成新數據。如果對GAN方法感興趣,可以看DADA(Deep Adversarial Data Augmentation)。

 

余弦損失(Cosine Loss)

最近一篇paper "Deep Learning on Small Datasets without Pre-Training using Cosine Loss", 使用余弦損失在沒有進行預訓練的情況下對小型數據集進行深度學習的研究發現,將損失函數從分類交叉熵損失切換為余弦損失時,分類問題小型數據集的准確率提升了30%。

從上圖可以看到,基於每個類的樣本數量,性能如何變化。微調對於某些小型數據集(CUB)非常有價值,而對於其它數據集(CIFAR-100)則不那么有意義。

 

更深

在NIPs paper "Modern Neural Networks Generalize on Small Data Sets" 中,他們將深度神經網絡視為ensembles。具體來說,“最后的層可能會提供一種ensemble機制,而不是每個層都呈現出不斷增加的特征層次。”

我從中得出的結論是針對小數據,請確保你的網絡足夠深以便利用這種ensemble效果。

 

 自編碼器(Autoencoders)

使用堆疊式自編碼器以更理想的初始權重對網絡進行預訓練已經取得了一些成功。這可以讓你避開局部最優解以及其它錯誤初始化的陷阱。不過Andrej Karpathy 建議不要對無監督的預訓練過度興奮。

自編碼器的基本思想是建立一個可預測輸入的神經網絡。

 

先驗知識(Prior Knowledge)

最后但並非最不重要的一點是,嘗試找到整合領域特定知識以指導學習過程的方法。例如,在paper "Human-level concept learning through probabilistic program induction"中通過概率性程序歸納法,作者構建了一個模型,該模型通過利用過程中的先驗知識從各個部分構建概念。這超越了當時的深度學習方法,達到了人類水平的表現。

你還可以應用領域知識來限制網絡的輸入,以減少維度或將網絡結構調整到更小。

我將其作為最后的選擇是因為整合先驗知識很有挑戰性,且通常是最耗時的。

 

Making Small Cool Again

希望本文為你提供了一些在數據有限的情況下如何利用深度學習技術的思路。我發現,這個問題目前尚未得到應有的討論,但它的意義非凡。

目前很多這樣的問題存在:數據非常有限,獲取更多數據非常昂貴或者不可能。例如,檢測罕見疾病或教育成果。尋找將我們的最佳技術(比如深度學習等)應用於這些問題的方法非常令人興奮!

 

 

來源:https://towardsdatascience.com/how-to-use-deep-learning-even-with-small-data-e7f34b673987


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM