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