參見https://blog.csdn.net/weixin_37589575/article/details/92801610
目錄(一)Few-shot learning(少樣本學習)1. 問題定義2. 解決方法2.1 數據增強和正則化2.2 Meta-learning(元學習)(二)Meta-learning(元學習)1. 學習微調 (Learning to Fine-Tune)2. 基於 RNN 的記憶 (RNN Memory Based)3.度量學習 (Metric Learning)4.方法簡單比較5.未來方向5.1 更好的 meta-learning 方法5.2 meta-learning 的應用(三)論文鏈接(一)Few-shot learning(少樣本學習)1. 問題定義眾所周知,現在的主流的傳統深度學習技術需要大量的數據來訓練一個好的模型。例如典型的 MNIST 分類問題,一共有 10 個類,訓練集一共有 6000 個樣本,平均下來每個類大約 600 個樣本,但是我們想一下我們人類自己,我們區分 0 到 9 的數字圖片的時候需要看 6000 張圖片才知道怎么區分嗎?很顯然,不需要!這表明當前的深度學習技術和我們人類智能差距還是很大的,要想彌補這一差距,少樣本學習是一個很關鍵的問題。另外還有一個重要原因是如果想要構建新的數據集,還是舉分類數據集為例,我們需要標記大量的數據,但是有的時候標記數據集需要某些領域的專家(例如醫學圖像的標記),這費時又費力,因此如果我們可以解決少樣本學習問題,只需要每個類標記幾張圖片就可以高准確率的給剩余大量圖片自動標記。這兩方面的原因都讓少樣本學習問題很吸引人。在 few-shot learning 中有一個術語叫做 N NN-way K KK-shot 問題,簡單的說就是我們需要分類的樣本屬於 N NN 個類中一種,但是我們每個類訓練集中的樣本只有 K KK 個,即一共只有 N∗K N * KN∗K 個樣本的類別是已知的。
圖片來自論文《Optimization as a Model for Few-Shot Learning.》,這是一個 5-way 1-shot 的圖示,左邊是訓練集一共 5 張圖片來自 5 個類,每個類只有一張圖片。右邊是測試集,理論上可以有任意多個圖片用於測試,圖中只給出了兩張實例。Few-shot learning 問題的關鍵是解決過擬合 (overfitting) 的問題,因為訓練的樣本太少了,訓練出的模型可能在訓練集上效果還行,但是在測試集上面會遭遇災難性的崩塌。
2. 解決方法2.1 數據增強和正則化這一類方法想法很直接簡單,既然訓練數據不夠那我就增加訓練樣本,既然過擬合那我就使用正則化技術。
數據加強:最常見的例子就是有時對 Omniglot 數據集的預處理,會將圖片旋轉 90 、180 、270 度,這樣就可以使樣本數量變為原來的 4 倍。正則化:在訓練的時候加入一個正則項,這個正則項的構建選擇是關鍵。比如 《Few-shot Classification on Graphs with Structural Regularized GCNs》。該論文討論 Graph 中節點分類的 few-shot 問題,常見的節點分類是使用 GCN 從節點的特征向量 feature 學習一個 embedding 然后用 embedding 來做分類,如果是 few-shot 問題,性能會大大下降(准確率大約從 70% 到了 40%),作者在訓練的時候給損失函數加了一個正則項。作者將 feature 到 embedding 的過程看成編碼器 encoder,然后額外加了幾層網絡作為 decoder,將 embedding 重構為 feature ,然后重構誤差作為正則項(准確率從 40% 提升了 50%,大約 10 個百分點)。(更多內容可以參考這篇論文和別的使用正則化技術的論文)2.2 Meta-learning(元學習)元學習的核心想法是先學習一個先驗知識(prior),這個先驗知識對解決 few-shot learning 問題特別有幫助。Meta-learning 中有 task 的概念,比如上面圖片講的 5-way 1-shot 問題就是一個 task,我們需要先學習很多很多這樣的 task,然后再來解決這個新的 task 。最最最重要的一點,這是一個新的 task。分類問題中,這個新的 task 中的類別是之前我們學習過的 task 中沒有見過的! 在 Meta-learning 中之前學習的 task 我們稱為 meta-training task,我們遇到的新的 task 稱為 meta-testing task。因為每一個 task 都有自己的訓練集和測試集,因此為了不引起混淆,我們把 task 內部的訓練集和測試集一般稱為 support set 和 query set
簡單畫了一個示意圖,前面三個是三個 meta-training task (當然實際需要很多這樣的 meta-training task 才能學到我們需要的先驗知識),最后一個就是 meta-testing task。我們最后評價我們的 meta-learning 方法的好壞就是在紅色標記部分上的 performance。
方法 2.1 和方法 2.2 之間有個明顯的差異就是 meta-learning 需要一些類來構建 meta-training task。由於 meta-testing 的類別要和 meta-training 完全不同,因此如果我們只有 MNIST 數據集,沒法使用 meat-learning 來解決 MNIST 上的 10-way few-shot learning 問題,但是方法 2.1 可以。不過我們可以使用 meta-learning 解決 MNIST 上的 N-way (N < 6) 的 few-shot learning 問題。那么如果我們非要解決 MNIST 上的 10-way few-shot learning 問題怎么辦呢,可以在另外一個數據集,例如 Omniglot ,上面進行 meta-training,然后學到的先驗知識用來解決這個問題。《Siamese neural networks for one-shot image recognition.》 和 《Matching networks for one shot learning.》都在論文中做過這樣子實驗(這一種情況和遷移學習(transfer learning)有相似的地方)。
(二)Meta-learning(元學習)Meta-learning 方法的分類標准有很多,個人喜歡按照如下標准分為三類。參考文章《Learning to Compare: Relation Network for Few-Shot Learning》
學習微調 (Learning to Fine-Tune)基於 RNN 的記憶 (RNN Memory Based)度量學習 (Metric Learning)Meta-learning 中 task 的概念是和 meta-learning 的本質有關的。Meta-learning 其實還有一個名字叫做“學會學習” (Learn to learn),這來自於對人類智能的基本認知:我們人類學習一個東西的時候不是從頭開始學的,都是基於之前學習的知識來進行學習的。比如如果你會玩英雄聯盟,那你學習玩王者榮耀會快很多。但是我們的深度學習模型呢,學習新的東西(可以看成新的類,新的 task)需要從頭開始學習( 當然需要大量的樣本 ),即使你之前學過特別類似的東西。因此 Meta-learning 就像讓深度學習學會學習,利用之前學過的知識在面對新的問題可以學習得又快又好,如何體現又快又好呢? – few-shot learning 唄~ 因此 meta-learning 和 few-shot learning 現在的研究基本都是在一起的。接下來介紹如何從之前的 task 來學習我們想要的先驗知識。
1. 學習微調 (Learning to Fine-Tune)MAML(《Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks》) 是這類方法的范例之一。MAML 的思想是學習一個 初始化參數 (initialization parameter),這個初始化參數在遇到新的問題時,只需要使用少量的樣本 (few-shot learning) 進行幾步梯度下降就可以取得很好地效果( 參見后續博客 )。另一個典型是《Optimization as a Model for Few-Shot Learning》,他不僅關注於初始化,還訓練了一個基於 LSTM 的優化器 (optimizer) 來幫助微調。
2. 基於 RNN 的記憶 (RNN Memory Based)最直觀的方法,使用基於 RNN 的技術記憶先前 task 中的表示等,這種表示將有助於學習新的 task。可參考《Meta networks》和 《Meta-learning with memory-augmented neural networks.》
3.度量學習 (Metric Learning)主要可以參考《Learning a Similarity Metric Discriminatively, with Application to Face Verification.》,《Siamese neural networks for one-shot image recognition》,《Siamese neural networks for one-shot image recognition》,《Matching networks for one shot learning》,《Prototypical Networks for Few-shot Learning》,《Learning to Compare: Relation Network for Few-Shot Learning》。核心思想:學習一個 embedding 函數,將輸入空間(例如圖片)映射到一個新的嵌入空間,在嵌入空間中有一個相似性度量來區分不同類。我們的先驗知識就是這個 embedding 函數,在遇到新的 task 的時候,只將需要分類的樣本點用這個 embedding 函數映射到嵌入空間里面,使用相似性度量比較進行分類。
4.方法簡單比較三種方法會在后續博客中繼續介紹(已經介紹了兩篇論文,可參見之前博客。鏈接1:https://blog.csdn.net/weixin_37589575/article/details/92582373,鏈接2:https://blog.csdn.net/weixin_37589575/article/details/92768668),這里簡單比較一下三種方法:
基於 RNN 的記憶 (RNN Memory Based) 有兩個關鍵問題,一個是這種方法經常會加一個外部存儲來記憶,另一個是對模型進行了限制 (RNN),這可能會在一定程度上阻礙其發展和應用。學習微調 (Learning to Fine-Tune) 的方法需要在新的 task 上面進行微調,也正是由於需要新的 task 中 support set 中有樣本來進行微調,目前我個人還沒看到這種方法用於 zero-shot learning(參考 few-shot learning 問題的定義,可以得到 zero-shot learning的定義)的問題上,但是在《Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks》的作者 Chelsea Finn 的博士論文《Learning to Learn with Gradients》中給出了 MAML 的理論證明,並且獲得了 2018 ACM 最佳博士論文獎,還有一點就是 MAML 可以用於強化學習,另外兩種方法多用於分類問題。鏈接:https://mp.weixin.qq.com/s/AdlwI-nbVlDWCj0o5LR7Sw度量學習 (Metric Learning),和學習微調 (Learning to Fine-Tune) 的方法一樣不對模型進行任何限制,並且可以用於 zero-shot learning 問題。雖然效果比較理想但是現在好像多用於分類任務並且可能缺乏一些理論上的證明,比如相似性度量是基於余弦距離還是歐式距離亦或是其他?為什么是這個距離?(因為 embedding 函數是一個神經網絡,可解釋性差,導致無法很好解釋新的 embedding 空間),雖然《Learning to Compare: Relation Network for Few-Shot Learning》中的 Relation Network 將兩個需要比較的 embedding 又送到一個神經網絡(而不是人為手動選擇相似性度量)來計算相似性得分,但是同樣缺乏很好地理論證明。5.未來方向5.1 更好的 meta-learning 方法現有方法都有各自的優缺點,提出一個新的更好的 meta-learning 方法是目前的主流研究方向。實驗結果還有很大的提升空間。例如,如果想從基於度量學習方向出發,那么是否可以從理論入手推導出相似性度量應該怎么選擇(圖片分類和文本分類問題,CNN 和 RNN 作為 embedding 函數都有可能使度量選擇不同)。
5.2 meta-learning 的應用現在的主流還是算法的研究,一般研究問題都是理論上的問題,例如圖片的 5-way 1-shot 問題。實際應用問題研究還很少,這也是一個未來的方向。
(三)論文鏈接《Optimization as a Model for Few-Shot Learning》:https://openreview.net/pdf?id=rJY0-Kcll.《Few-shot Classification on Graphs with Structural Regularized GCNs 》: https://openreview.net/pdf?id=r1znKiAcY7.《Siamese neural networks for one-shot image recognition》:http://www.cs.toronto.edu/~gkoch/files/msc-thesis.pdf.《Matching networks for one shot learning》: http://papers.nips.cc/paper/6385-matching-networks-for-one-shot-learning.pdf.《Learning to Compare: Relation Network for Few-Shot Learning》:http://openaccess.thecvf.com/content_cvpr_2018/papers/Sung_Learning_to_Compare_CVPR_2018_paper.pdf.《Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks》:https://www.cs.utexas.edu/~sniekum/classes/RL-F17/papers/Meta.pdf《Meta networks》:https://pdfs.semanticscholar.org/3ecc/71263d5dd8a51438e351f0a27fba5a6e7592.pdf《Meta-learning with memory-augmented neural networks.》:http://proceedings.mlr.press/v48/santoro16.pdf《Prototypical Networks for Few-shot Learning》:http://papers.nips.cc/paper/6996-prototypical-networks-for-few-shot-learning.pdf《Learning a Similarity Metric Discriminatively, with Application to Face Verification.》:http://yann.lecun.com/exdb/publis/pdf/chopra-05.pdf.————————————————版權聲明:本文為CSDN博主「CaoChengtai」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。原文鏈接:https://blog.csdn.net/weixin_37589575/article/details/92801610