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

基于RV1126開發(fā)板實現(xiàn)自學(xué)習(xí)圖像分類方案

在Visual Studio中運行Hello分類樣本 ,僅在Visual Studio輸出中收到錯誤消息,怎么解決?
xgboost在圖像分類中的應(yīng)用
高通AI Hub:輕松實現(xiàn)Android圖像分類

《DNK210使用指南 -CanMV版 V1.0》第四十八章 自學(xué)習(xí)分類實驗
使用卷積神經(jīng)網(wǎng)絡(luò)進行圖像分類的步驟
主動學(xué)習(xí)在圖像分類技術(shù)中的應(yīng)用:當(dāng)前狀態(tài)與未來展望

評論