首發:AI公園
作者:Etienne
編譯:ronghuaiyang
導讀
你并不總是有足夠的圖像來訓練一個深度神經網絡。下面是教你如何通過幾個樣本讓模型快速學習的方法。
我們為什么要關心少樣本學習?
1980年,Kunihiko Fukushima開發了第一個卷積神經網絡。自那以后,由于計算能力的不斷增強和機器學習社區的巨大努力,深度學習算法從未停止提高其在與計算機視覺相關的任務上的性能。2015年,Kaiming He和他的微軟的團隊報告說,他們的模型在從ImageNet分類圖像時比人類表現更好。那時,我們可以說計算機在處理數十億張圖像來解決特定任務方面比我們做得更好。
但是,如果你不是谷歌或Facebook,你不可能總是能夠構建具有那么多圖像的數據集。當你在計算機視覺領域工作時,你有時不得不對圖像進行分類,每個標簽只有一個或兩個樣本。在這場比賽中,人類還是要被打敗的。只要給嬰兒看一張大象的照片,他們從此以后就可以認出大象了。如果你用Resnet50做同樣的事情,你可能會對結果感到失望。這種從少量樣本中學習的問題叫做少樣本學習。
近年來,少樣本學習問題在研究界引起了極大的關注,并且已經開發出了許多優雅的解決方案。目前最流行的解決方案是使用元學習,或者用三個詞來概括:learning to learn。如果你想知道元學習是什么以及它是如何工作的,請繼續閱讀。
少樣本圖像分類任務
首先,我們需要定義N-way K-shot圖像分類任務。給定:
一個由N個標簽組成的支持集,每個標簽對應K個有標簽的圖像
由Q個查詢圖像組成的查詢集
任務是對查詢圖像進行分類。當K很小(通常是K<10)時,我們討論的是少樣本圖像分類(在K=1的情況下,是單樣本圖像分類)。
一個少樣本分類任務的例子:對于支持集中N=3個類中的每個類,給定K=2個樣本,我們希望將查詢集中的Q=4只狗標記為Labrador, saint bernard或Pug。即使你從沒見過Labrador、saint bernard或Pug,這對你來說也很容易。但要用人工智能解決這個問題,我們需要元學習。
元學習范式
1998年,Thrun & Pratt說,要解決一個任務,一個算法學習“如果性能可以隨著經驗提升”,同時,給定一族需要解決的問題,一個算法學習”性能隨著經驗和任務數量提升”。我們將后者稱為元學習算法。它不是去學習如何解決一個特定的任務。它可以學會解決許多任務。每學習一項新任務,它就能更好地學習新任務:它學會去學習。
正式的描述一下,如果我們想要解決一個任務T,元學習算法訓練一批任務{T?}。算法通過嘗試解決這些任務來得到學習的經驗,最終去解決終極任務T。
例如,考慮上圖中顯示的任務_T_。它包括有標簽圖像,如Labrador,Saint-Bernard或Pug,使用3x2=6個有標簽圖像。一個訓練任務T?可能是利用6個有標簽圖像把圖像標記為Boxer, Labradoodle或者Rottweiler。meta-training過程是一連串的這些任務T?,每一次都是不同品種的狗。我們期望元學習模型“隨著經驗和任務數量的增加”變得更好。最后,我們在_T_上對模型進行評價。
我們評估了Labradors、Saint-Bernards和Pugs的元學習模型,但我們只在其他品種上訓練。
怎么做呢?假設你想要解決這個任務(Labrador,Saint-Bernard 和Pug)。你需要一個元訓練數據集,里面有很多不同品種的狗。例如,你可以使用Stanford Dogs數據集,其中包含從ImageNet提取的超過20k只狗。我們將此數據集稱為_D_。注意,_D_不需要包含任何Labrador,Saint-Bernard或Pug。
我們從_D_中抽取batch組成episodes。每個episodes 對應于一個N-way K-shot分類任務T?,(通常我們使用相同的N和K)。模型解決了batch中的所有的episodes后(對查詢集中的所有圖像打標簽),它的參數被更新。這通常是通過對查詢集上的分類不準確造成的損失進行反向傳播來實現的。
這樣,模型跨任務學習,以準確地解決一個新的,看不見的少樣本分類任務。標準學習分類算法學習一個映射_圖像→標簽_,元學習算法學習一個映射:support-set→c(.),其中c是一個映射:query→label。
元學習算法
既然我們知道了算法元訓練意味著什么,一個謎仍然存在:元學習模型是如何解決一個少樣本的分類任務的?當然,解決方案不止一種。我們聚焦在最流行的方案上。
元學習
度量學習的基本思想是學習數據點(如圖像)之間的距離函數。它已經被證明對于解決較少樣本的分類任務是非常有用的:度量學習算法不需要對支持集(少量標記圖像)進行微調,而是通過與標記圖像進行比較來對查詢圖像進行分類。
查詢(右側)與支持集的每個圖像進行比較。它的標簽取決于哪些圖像最接近。
當然,你不能逐像素地比較圖像,所以你要做的是在相關的特征空間中比較圖像。為了更清楚一些,讓我們詳細說明度量學習算法如何解決一個少樣本的分類任務(上面定義為一個標簽樣本的支持集,和一個我們想要分類的圖像的查詢集):
1、我們從支持和查詢集的所有圖像中提取嵌入(通常使用卷積神經網絡)。現在,我們在少樣本分類任務中必須考慮的每一幅圖像都可以用一維向量表示。
2、每個查詢根據其支持圖像集的距離進行分類。距離函數和分類策略都有很多可能的設計選擇。一個例子就是歐氏距離和k近鄰。
3、在元訓練期間,在episode結束時,通過反向傳播查詢集上分類錯誤造成的損失(通常是交叉熵損失)來更新CNN的參數。
每年都會發布幾種度量學習算法來解決少樣本圖像分類的兩個原因是:
1、它們在經驗上很有效;
2、唯一的限制是你的想象力。有許多方法可以提取特征,甚至有更多的方法可以比較這些特征。現在我們將回顧一些現有的解決方案。
匹配網絡的算法。特征提取器對于支持集圖像和查詢圖像是不同的。使用余弦相似度將查詢的嵌入與支持集中的每幅圖像進行比較。然后用softmax對其進行分類。
匹配網絡(見上圖)是第一個使用元學習的度量學習算法。在這種方法中,我們不以同樣的方式提取支持圖像和查詢圖像的特征。來自谷歌DeepMind的Oriol Vinyals和他的團隊提出了使用LSTM networks在特征提取期間使所有圖像進行交互的想法。稱為全上下文嵌入,因為你允許網絡找到最合適的嵌入,不僅知道需要嵌入的圖像,而且還知道支持集中的所有其他圖像。這讓他們的模型表現的更好,因為所有的圖像都通過了這個簡單的CNN,但它也需要更多的時間和更大的GPU。
在最近的研究中,我們沒有將查詢圖像與支持集中的每一張圖像進行比較。多倫多大學的研究人員提出了Prototypical Networks。在它們的度量學習算法中,在從圖像中提取特征后,我們計算每個類的原型。為此,他們使用類中每個圖像嵌入的平均值。(但是你可以想象數以千計的方法來計算這些嵌入。為了反向傳播,函數只需是可微的即可)一旦原型被計算出來,查詢將使用到原型的歐式距離進行分類(見下圖)。
在原型網絡中,我們將查詢X標記為最接近原型的標簽。
盡管簡單,原型網絡仍然能產生最先進的結果。更復雜的度量學習架構后來被開發出來,比如一個神經網絡來表示距離函數(而不是歐氏距離)。這略微提高了精確度,但我相信時至今日,原型的想法是在用于少樣本圖像分類的度量學習算法領域中最有價值的想法(如果你不同意,請留下憤怒的評論)。
模型無關元學習
我們將以模型無關元學習 (MAML)來結束這次回顧,這是目前最優雅、最有前途的元學習算法之一。它基本上是最純粹的元學習,通過神經網絡有兩個層次的反向傳播。
該算法的核心思想是訓練神經網絡的參數,可以適應快速和較少的例子,以新的分類任務。下面我將為你提供一個關于MAML如何在一個episode中進行元訓練的可視化例子(例如,在從D中采樣得到的T?上進行few-shot分類任務)。假設你有一個神經網絡M參數為
審核編輯 黃昊宇
-
圖像分類
+關注
關注
0文章
90瀏覽量
11907 -
深度學習
+關注
關注
73文章
5492瀏覽量
120977
發布評論請先 登錄
相關推薦
評論