原文地址:算法
https://blog.csdn.net/qq_29056645/article/details/88909728網絡
------------------------------------------------------------------------------------------------框架
自深度學習發展起來以後, 智能化的各類設備也慢慢變多,可是對於智能化的程序來講,須要數以萬計甚至百萬千萬的數據行進訓練,以近年來最爲出名的AlphaGo爲例,雖然下棋的是一臺電腦,但其後臺須要龐大的數據支持訓練才能達到這樣的效果。因此這也是深度學習的一個短板,訓練數據須要太多,但有時一些訓練任務並不能找到這麼多的訓練數據。這種狀況下,若是訓練數據較少時給深度學習器加以訓練,會出現過擬合的現象,這是不利於應用的,因此對於此隨之而來的即是小樣本學習問題,即針對樣本量較少的任務,須要有一個學習器可以成功應用少許的數據進行好的訓練,達到學習器所需的功能。函數
其實小樣本學習問題的產生在另外一方面也是由於人的緣由,對於人來講,初識一個新的物品,你能夠經過探索很快地瞭解並熟悉它,而這種學習能力,是目前機器所沒有的。因此人們思考,若是機器也能擁有這種學習能力的話,面對樣本量較少的問題時,即可以快速地學習,這即是元學習(meta learning),也能夠稱爲元學習。
oop
提及小樣本學習的發展,在2015年Science雜誌封面刊登過一篇文章《Human-level concept learning through probabilistic program induction》,該文章提出了貝葉斯規劃學習(BPL)框架,實現One-shot learning,數據集採用了世界各地字母表的手寫字符(該文章這裏就不具體介紹,有興趣能夠百度搜索一下)。這篇文章也是我接觸小樣本學習看的第一篇論文,第一次接觸小樣本學習的同窗能夠仔細閱讀一下。
性能
在此以後,人們發現經過元學習可以很好地實現小樣本分類任務,所以愈來愈多的人將目光投在了元學習上。整體來講,經過元學習的方法實現小樣本分類大致上有三種:學習
每一類中都有較多的論文與一些較新的研究成果,下面將簡單介紹一下。優化
所謂度量(metric),即經過某種方式來表達兩個樣本的相關性,好比歐幾里得距離,能夠認爲在某一個投影空間中(嵌入空間,通常使用含參數的神經網絡來完成嵌入過程),距離越近的樣本越爲類似,即認爲能夠將其分爲同一類別。固然,度量方法有不少,可是近幾年中運用較多的是餘弦距離和歐幾里得距離。在此推薦兩篇論文,都是基於度量的方法實現小樣本學習,我也會在後續的博客中對這些論文進行總結闡述。spa
2016-NIPS-《Matching Networks for One Shot Learning》
2017-NIPS-《Prototypical Networks for Few-shot Learning》.net
兩篇論文方法差不太多,但思想挺好,同時後續的挺多小樣本學習方面的研究及論文也是基於這兩篇論文完成的。
固然,這種方法有好也有壞,好處即是經過度量能夠很簡單的用距離來表達類似性,將距離較近的樣本歸爲一類。但與此同時,我的認爲度量學習的一個關鍵點在於怎麼將樣本投影至一個空間,同時在這個空間中距離近的樣本爲同一類別。也許在挺多實驗和一些數據集上確實實現了,可是針對不一樣類型的樣本,使用同一套投影方法是否可行呢?面對不一樣類型的樣本是否須要從新訓練神經網絡的參數呢?這一點也是目前須要解決的問題,即面對不一樣的分類任務,同一小樣本分類器依舊能夠較好的使用。
其二簡單地使用距離來表達類似性是否可行?在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》
雖然說小樣本學習和元學習的目的是快速學習,且近幾年來全部研究採用的訓練樣本量都是少許的,可是我的認爲,要實現機器可以自主學習,仍是須要大樣本作支撐的。就如人同樣,其實剛出生的小孩也算是大量樣本訓練以後的產物,由於人的基因就比如模型的超參數,是經歷的很長時間的演化得來的,因此,機器應該也是這樣,須要不斷學習,不斷輸入樣本集,不斷訓練,才能達到最後具備學習能力的目的。
--------------------- 做者:MSnoopy 來源:CSDN 原文:https://blog.csdn.net/Snoopy_S/article/details/88257054