自深度學習發展起來之後, 智慧型化的各種裝置也慢慢變多,但是對於智慧型化的程式來說,需要數以萬計甚至百萬千萬的資料行進訓練,以近年來最為出名的alphago為例,雖然下棋的是一台電腦,但其後台需要龐大的資料支援訓練才能達到這樣的效果。所以這也是深度學習的乙個短板,訓練資料需要太多,但有時一些訓練任務並不能找到這麼多的訓練資料。這種情況下,如果訓練資料較少時給深度學習器加以訓練,會出現過擬合的現象,這是不利於應用的,所以對於此隨之而來的便是小樣本學習問題,即針對樣本量較少的任務,需要有乙個學習器能夠成功應用少量的資料進行好的訓練,達到學習器所需的功能。
其實小樣本學習問題的產生在另一方面也是因為人的原因,對於人來說,初識乙個新的物品,你可以通過探索很快地了解並熟悉它,而這種學習能力,是目前機器所沒有的。所以人們思考,如果機器也能擁有這種學習能力的話,面對樣本量較少的問題時,便可以快速地學習,這便是元學習(meta learning),也可以稱為元學習。
在此之後,人們發現通過元學習能夠很好地實現小樣本分類任務,因此越來越多的人將目光投在了元學習上。總體來說,通過元學習的方法實現小樣本分類大體上有三種:
基於度量的元學習
基於模型的元學習
基於優化的元學習
每一類中都有較多的**與一些較新的研究成果,下面將簡單介紹一下。
基於度量的元學習
所謂度量(metric),即通過某種方式來表達兩個樣本的相關性,比如歐幾里得距離,可以認為在某乙個投影空間中(嵌入空間,一般使用含引數的神經網路來完成嵌入過程),距離越近的樣本越為相似,即認為可以將其分為同一類別。當然,度量方法有很多,但是近幾年中運用較多的是余弦距離和歐幾里得距離。在此推薦兩篇**,都是基於度量的方法實現小樣本學習,我也會在後續的部落格中對這些**進行總結闡述。
2016-nips-《matching networks for one shot learning》
2017-nips-《prototypical networks for few-shot learning》
兩篇**方法差不太多,但思想挺好,同時後續的挺多小樣本學習方面的研究及**也是基於這兩篇**完成的。
當然,這種方法有好也有壞,好處便是通過度量可以很簡單的用距離來表達相似性,將距離較近的樣本歸為一類。但與此同時,個人認為度量學習的乙個關鍵點在於怎麼將樣本投影至乙個空間,同時在這個空間中距離近的樣本為同一類別。也許在挺多實驗和一些資料集上確實實現了,但是針對不同型別的樣本,使用同一套投影方法是否可行呢?面對不同型別的樣本是否需要重新訓練神經網路的引數呢?這一點也是目前需要解決的問題,即面對不同的分類任務,同一小樣本分類器依舊可以較好的使用。
其二簡單地使用距離來表達相似性是否可行?在omniglot資料集上(手寫字元),使用距離來表達相似性可行的原因是因為通過將的特徵矩陣投影到一空間後,得到的矩陣是該手寫字元的形狀(即可以在矩陣中看出圖形形狀),這種情況下,就類似於knn實現手寫數字識別,使用距離來說明相似性是好使的。但對於一般的來說,得到的特徵矩陣和投影後得到的矩陣,這些數字我們看不出任何意義(雖說計算機領域裡都說神經網路裡訓練的數字我們是不能理解的,這些數字就是有用但我們不知道是什麼意義),那麼這種情況下使用距離來度量相似性是否可行呢?
基於模型的元學習
近年來,小樣本學習分類發展迅速,面對總多的分類任務,都可以通過訓練乙個模型來達到任務要求。其中元學習的方法較多,為了最大的適用性,元學習的機制應該是任務的通用性,即面對不同的任務,不需要構建不同的模型,用同樣的一套學習演算法即可解決多種不同的任務。定義乙個模型的可學習引數θ,面對不同的任務,可以通過改變引數θ的值來解決相應的任務。而引數θ的值可以通過元學習器去學習,在面對不同任務的時候,根據損失函式通過梯度下降的方法不斷地更新θ值,使這個模型不斷向能解決這個任務的模型靠近,當θ值最終收斂時,我們認為元學習器學習到了乙個較好的引數θ,讓模型自適應地解決相應任務。這個演算法是十分高效地,因為它沒有為學習器引入其他的引數,並且訓練學習器的策略使用的是已知的優化過程(如梯度下降等)而不是從頭開始構建乙個。
2017-《model-agnostic meta-learning for fast adaptation of deep networks》
2018 - arxiv - 《task-agnostic meta-learning for few-shotlearning》
後一篇是在前一篇的基礎上進行的相關擴充套件。
基於優化的元學習
在樣本量較少的任務中,通常的一些學習器會因為樣本較少出現過擬合的現象,同時在訓練過程中,為了達到乙個較好的效果,學習器通常會訓練迭代百萬甚至千萬次才能夠收斂。這些問題不僅影響了學習器的效能,也影響了效率。所以在本專案中,我們考慮一種優化方案,能夠在只有少量樣本的情況下又能高效地學習,使模型能夠通過幾個例子很好的學習。我們在元學習器中採用了lstm網路,使用任務中少量的已標記樣本,通過元學習器來優化更新學習器的初始化引數,讓學習器在面對相應任務的時候,能夠僅用少量的樣本,同時較快收斂,達到快速學習解決任務的目的。
在此推薦一篇**
2017-iclr-《optimization as a model for few-shot learning》
小樣本學習
眾所周知,深度學習是機器學習發展中乙個非常重要的里程碑,在很多任務上深度學習都取得了巨大的成功。然而,由於深度模型包含的引數很多,通常需要大量的有標籤的資料才能進行模型訓練,這點嚴重地限制了它的應用 在很多場景下,收集大量的有標籤的資料是非常昂貴 困難 甚至不可能的,比如醫療資料 手機上使用者手動標...
小樣本學習與元學習 學習隨筆1
未完待續。深度學習已經廣泛應用於各個領域,解決各類問題,傳統的深度學習需要大量的資料來訓練出乙個好的模型。然而,在我們生活中,有些問題要獲取大量樣本是不現實的,獲取的成本也非常大,比如在醫療領域 安全領域等。那麼我們是否能像人類一樣,只需學習很少的樣本,就能準確的識別出新的樣本?這就是小樣本學習問題...
小樣本學習 few shot learning
首先需要宣告的是,小樣本學習屬於遷移學習。接著,舉個例子詳細闡述。人類從未見到過 澳大利亞的鴨嘴獸 給我們一張鴨嘴獸的 後,人類就認識了!有的朋友可能會想,為什麼我們人類總是能快速的學習到未知的事物?簡單的說,是因為人類生活中各種知識的積累以及人類天生的思考能力 如 模擬能力 知識的積累意味著我們是...