0
本文作者: AI研習(xí)社-譯站 | 2019-08-20 17:18 |
在大多數(shù)時候,你是沒有足夠的圖像來訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的。本文將教你如何從小樣本數(shù)據(jù)快速學(xué)習(xí)你的模型。
1980年, Kunihiko Fukushima 提出了第一個卷積神經(jīng)網(wǎng)絡(luò)。從那時起,由于計算能力的不斷提高和機器學(xué)習(xí)社區(qū)的巨大努力,深度學(xué)習(xí)算法在與計算機視覺相關(guān)的任務(wù)上從未停止過提高它們的性能。2015年,何凱明和他在微軟的團(tuán)隊報告說,他們的模型在對來自 ImageNet 的圖像進(jìn)行分類時表現(xiàn)優(yōu)于人類。在那時候,有人可能會說,計算機在利用數(shù)十億圖像來解決特定任務(wù)方面變得比我們更強。歡呼!
然而,如果你不是 Google 或者 Facebook,你就不可能總是能夠用這么多的圖像來構(gòu)建一個數(shù)據(jù)集。當(dāng)您從事計算機視覺工作時,有時您必須對每個標(biāo)簽只有一個或兩個樣本的圖像進(jìn)行分類。在這場比賽中,人類仍將被打敗。給嬰兒看一張大象的照片,從現(xiàn)在起他們永遠(yuǎn)不會認(rèn)不出大象。如果你對 Resnet50 做同樣的事情,你可能會對結(jié)果感到失望。從少數(shù)的樣本中學(xué)習(xí)的這個問題,被稱為小樣本學(xué)習(xí)(few-shot learning)。
近幾年來,小樣本學(xué)習(xí)的問題引起了研究界的廣泛關(guān)注,并形成了許多優(yōu)雅的解決方案。目前最流行的解決方案是使用元學(xué)習(xí)(meta-learning),又稱為:learning to learn。如果你想知道它是什么,以及它是如何用于小樣本圖像分類,請繼續(xù)閱讀。
首先,我們需要定義N個類別,K張圖片(譯者注:針對每個類別)的分類任務(wù)。假設(shè)以下的場景:
1. 一個支持?jǐn)?shù)據(jù)集,包含N個分類標(biāo)簽,針對每個標(biāo)簽有K個已分類的圖片。
2. 一個查詢數(shù)據(jù)集,包含Q張查詢圖片。
任務(wù)是利用支持?jǐn)?shù)據(jù)集中的N*K個圖片,將查詢數(shù)據(jù)集中的圖片分類為N個類別(譯者注:可以理解為訓(xùn)練集有N*K個圖片,將測試集在N個類別進(jìn)行分類)。當(dāng)K值很小時(通常K<10),我們稱這種分類任務(wù)為極少樣本分類任務(wù)(當(dāng)K=1時,變成單樣本分類任務(wù))
極少樣本分類任務(wù)的一個例子:在支持集中,給定N=3(3類),每類K=2,即每種類別兩張圖片,我們希望將查詢集中(查詢集Q=4,即4張查詢圖片)的狗標(biāo)注為拉普拉多狗,圣伯納德狗或哈巴狗。即使你從未見過任何的哈巴狗、圣伯納德狗或拉普拉多狗,這項任務(wù)對你來說也不困難。但使用AI來解決這個問題,我們需要進(jìn)行一些元學(xué)習(xí)。
1998年,Thrun和Pratt指出,對于一個指定的任務(wù),一個算法“如果隨著經(jīng)驗的增長,在該任務(wù)上的表現(xiàn)得到改進(jìn)”,則認(rèn)為該算法能夠?qū)W習(xí)。與此同時,與此同時,對于一族待解決的多個任務(wù),一個算法“如果隨著經(jīng)驗和任務(wù)數(shù)量的增長,在每個任務(wù)上的表現(xiàn)得到改進(jìn)”,則認(rèn)為該算法能夠?qū)W習(xí)如何學(xué)習(xí),我們將后者稱為元學(xué)習(xí)算法。它不學(xué)習(xí)如何解決一個特定的問題,但可以成功學(xué)習(xí)如何解決多個任務(wù)。每當(dāng)它學(xué)會解決一個新的任務(wù),它就越有能力解決其他新的任務(wù):它學(xué)會如何學(xué)習(xí)。
如果我們希望解決一項任務(wù)T,會在一批訓(xùn)練任務(wù){(diào)Ti}上訓(xùn)練元學(xué)習(xí)算法。算法在被訓(xùn)練解決這些任務(wù)的過程中得到的經(jīng)驗將被用于解決最終的任務(wù)T。
比如,考慮上個圖像中提到的任務(wù)T。它的目標(biāo)是通過使用3x2=6張已標(biāo)記的同品種狗的圖片,來識別(新的)圖片是屬于拉普拉多狗,圣伯納德狗或哈巴狗。訓(xùn)練任務(wù){(diào)Ti}中的某一項任務(wù)Ti可以是通過使用3x2=6的已標(biāo)記的同品種狗圖片中獲取信息,將新圖片標(biāo)記為拳師狗、圣伯納德狗或洛特維勒牧狗。元學(xué)習(xí)過程就是由一系列這樣的每一次針對不同品種的狗的訓(xùn)練任務(wù)Ti所組成的。我們希望元學(xué)習(xí)模型“隨著經(jīng)驗和任務(wù)數(shù)量的增長”得到不斷地改進(jìn)。最終,我們在T任務(wù)上評估模型。
我們評估了拉布拉多犬、圣伯納德犬和八哥的元學(xué)習(xí)模型,但我們只是在其他所有品種上進(jìn)行訓(xùn)練。
現(xiàn)在我們該怎么做?假設(shè)你想解決任務(wù)T(里面有拉布拉多,圣伯納德和 八哥),那么你需要一個元訓(xùn)練數(shù)據(jù)集,里面有很多不同品種的狗。 你可以使用 Stanford Dogs 數(shù)據(jù)集(http://vision.stanford.edu/aditya86/ImageNetDogs),其中包含從ImageNet中提取的超過20k 只狗。我們將把這個數(shù)據(jù)集命名為D。注意,這個過程不需要包含任何拉布拉多、圣伯納德或八哥。
我們從D中采樣了一批(如下),每集對應(yīng)于一個 N-way K-shot 分類任務(wù) T? 類似T(通常我們使用相同的N和K)。 模型解決了每一集(即標(biāo)記了每一個查詢集的圖像)后,它的參數(shù)會更新,這通常是通過對查詢集的分類不準(zhǔn)確造成的損失進(jìn)行反向跟蹤來實現(xiàn)的。
這樣,模型就可以跨任務(wù)學(xué)習(xí)準(zhǔn)確地解決一個新的、不可見的少鏡頭分類任務(wù)。 標(biāo)準(zhǔn)的學(xué)習(xí)分類算法學(xué)習(xí)映射圖像→標(biāo)簽,元學(xué)習(xí)算法通常學(xué)習(xí)映射支持集→c(.),其中c是映射查詢→標(biāo)簽。
既然我們知道了算法元訓(xùn)練的含義,那么還有一個謎團(tuán):元學(xué)習(xí)模型是如何解決一個少鏡頭分類任務(wù)的?當(dāng)然,解決方案不止一個。在這里,我們將關(guān)注最受歡迎的方案。
度量學(xué)習(xí)的基本思想是學(xué)習(xí)數(shù)據(jù)點(如圖像)之間的距離函數(shù)。事實證明,它對于解決少樣本分類任務(wù)非常有用:度量學(xué)習(xí)算法不必在支持集(少量的帶標(biāo)簽圖像)上進(jìn)行微調(diào),而是通過將查詢圖像與帶標(biāo)簽圖像進(jìn)行比較來對其進(jìn)行分類。
將查詢圖像(在右側(cè))與支持集的每個圖像進(jìn)行比較,它的標(biāo)簽取決于與其最接近的圖像。當(dāng)然,你不能逐個像素地比較圖像,你要做的是在相關(guān)的特征空間中比較圖像。為了清楚起見,讓我們詳細(xì)說明度量學(xué)習(xí)算法是如何解決少樣本分類任務(wù)的(上面定義為帶標(biāo)簽樣本的支持集,以及我們要分類的查詢圖像集):
我們從支持集和查詢集的所有圖像中提取特征(通常使用卷積神經(jīng)網(wǎng)絡(luò))?,F(xiàn)在,我們在少樣本分類任務(wù)中必須考慮的每個圖像都由一個一維向量表示。
每個查詢圖像根據(jù)其與支持集圖像的距離進(jìn)行分類。對于距離函數(shù)和分類策略,可以有許多可能的設(shè)計選擇。例如,歐氏距離和k-最近鄰分類。
在元訓(xùn)練期間,在每一場景(episode)結(jié)束時,對由查詢集的分類錯誤產(chǎn)生的損失值(通常是交叉熵?fù)p失)進(jìn)行反向傳播,從而更新CNN的參數(shù)。
每年都會提出幾種度量學(xué)習(xí)算法來解決少樣本圖像分類問題,這其中的兩個原因是:
他們憑經(jīng)驗可以做得很好;
唯一的限制就是你的想象力。有很多方法可以提取特性,甚至還有更多方法可以比較這些特性。我們現(xiàn)在將介紹一些現(xiàn)有的解決方案。
匹配網(wǎng)絡(luò)算法。對于支持集圖像(左)和查詢圖像(底部),特征提取器是不同的。使用余弦相似性,將查詢的嵌入特征與支持集中的每個圖像進(jìn)行比較。然后用softmax進(jìn)行分類。上圖來自Oriol等。
匹配網(wǎng)絡(luò)(見上文)是第一個使用元學(xué)習(xí)的度量學(xué)習(xí)算法。在這個方法中,我們不會以同樣的方式提取支持圖像和查詢圖像的特征。來自 Google DeepMind 的Oriol Vinyals和他的團(tuán)隊有一個想法,即在特征提取過程中使用LSTM網(wǎng)絡(luò)使所有圖像交互。他們稱之為完全上下文嵌入,因為你允許網(wǎng)絡(luò)找到最合適的嵌入,這不僅知道要嵌入的圖像,還知道支持集中的所有其他圖像。這使得他們的模型比所有的圖像都通過一個簡單的CNN時表現(xiàn)得更好,但它也需要更多的時間和更大的GPU。
在最近的工作中,我們不會將查詢圖像與支持集中的每個圖像進(jìn)行比較。多倫多大學(xué)的研究人員提出了原型網(wǎng)絡(luò)。在他們的度量學(xué)習(xí)算法中,從圖像中提取特征后,我們?yōu)槊總€類計算一個原型。為此,他們使用類中每個圖像嵌入的平均值。(但是你可以想出成千上萬的方法來計算這些嵌入。為了反向傳播,函數(shù)只需要是可微的。)一旦計算出原型,就可以計算查詢圖像到原型的歐式距離,從而對查詢圖像進(jìn)行分類(見下圖)。
在原型網(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ù)(而不是歐幾里得距離)。這略微提高了準(zhǔn)確性,但我相信到目前為止,原型理念在少樣本圖像分類的度量學(xué)習(xí)算法領(lǐng)域是最有價值的想法(如果你不同意,請留下評論)。
模型無關(guān)的元學(xué)習(xí)
我們將以模型無關(guān)的元學(xué)習(xí)(MAML)結(jié)束這篇綜述,MAML是目前最優(yōu)雅和最有潛力的元學(xué)習(xí)算法之一。它基本上是最純粹的元學(xué)習(xí)形式,通過神經(jīng)網(wǎng)絡(luò)進(jìn)行兩級反向傳播。
該算法的核心思想是訓(xùn)練一個神經(jīng)網(wǎng)絡(luò),使其能夠僅用少量樣本就能快速適應(yīng)新的分類任務(wù)。下圖將展示MAML如何在元訓(xùn)練的一個場景(即,從數(shù)據(jù)集D中采樣得到的少樣本分類任務(wù)T?)中工作的。假設(shè)你有一個用?參數(shù)化的神經(jīng)網(wǎng)絡(luò)M:
用?參數(shù)化的MAML模型的元訓(xùn)練步驟:
創(chuàng)建M的副本(此處命名為f),并用?對其進(jìn)行初始化(在圖中,??=?)。
快速微調(diào)支持集上的f(只有少量梯度下降)。
在查詢集上應(yīng)用微調(diào)過的f。
在整個過程中,對分類錯誤造成的損失進(jìn)行反向傳播,并更新?。
然后,在下一場景中,我們創(chuàng)建一個更新后模型M的副本,我們在新的少樣本分類任務(wù)上運行該過程,依此類推。
在元訓(xùn)練期間,MAML學(xué)習(xí)初始化參數(shù),這些參數(shù)允許模型快速有效地適應(yīng)新的少樣本任務(wù),其中這個任務(wù)有著新的、未知的類別。
公平地說,MAML目前在流行的少樣本圖像分類基準(zhǔn)測試中的效果不如度量學(xué)習(xí)算法。由于訓(xùn)練分為兩個層次,模型的訓(xùn)練難度很大,因此超參數(shù)搜索更為復(fù)雜。此外,元的反向傳播意味著需要計算梯度的梯度,因此你必須使用近似值來在標(biāo)準(zhǔn)GPU上進(jìn)行訓(xùn)練。出于這些原因,你可能更愿意在家里或工作中為你的項目使用度量學(xué)習(xí)算法。
但是,模型無關(guān)的元學(xué)習(xí)之所以如此令人興奮,是因為它的模型是不可知的。這意味著它幾乎可以應(yīng)用于任何神經(jīng)網(wǎng)絡(luò),適用于任何任務(wù)。掌握MAML意味著只需少量樣本就能夠訓(xùn)練任何神經(jīng)網(wǎng)絡(luò)以快速適應(yīng)新的任務(wù)。MAML的作者Chelsea Finn和Sergey Levine將其應(yīng)用于有監(jiān)督的少樣本分類,監(jiān)督回歸和強化學(xué)習(xí)。但是通過想象和努力研究,你可以用它把任何一個神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)換成少樣本有效的神經(jīng)網(wǎng)絡(luò)!
這就是這次在元學(xué)習(xí)這個令人興奮的世界里的旅行。少樣本學(xué)習(xí)最近引起了計算機視覺研究的廣泛關(guān)注,因此該領(lǐng)域的發(fā)展非常迅速(如果你在2020年閱讀這篇文章,我建議你尋找更新的信息來源)。誰知道未來幾年,神經(jīng)網(wǎng)絡(luò)會變得有多好,是否能一眼就學(xué)習(xí)到視覺概念?
via https://blog.sicara.com/meta-learning-for-few-shot-computer-vision-1a2655ac0f3a
點擊【圖像樣本不夠用?元學(xué)習(xí)幫你解決】即可訪問相關(guān)內(nèi)容和參考文獻(xiàn)!
今日資源推薦:資料 | Python學(xué)習(xí)材料(基礎(chǔ)+進(jìn)階+考試+答案)
包含以下內(nèi)容:
Python 測驗20題(含答案)
【初步】簡明Python教程.pdf
【進(jìn)階】Python for Data Analysis, 2nd Edition.pdf
【進(jìn)階】python_tutorial.pdf
【進(jìn)階】深入理解Python中文版(Dive into Python).pdf
Python測驗20題_答案另附文檔.ipynb
點擊鏈接獲?。?/span>https://ai.yanxishe.com/page/resourceDetail/535
雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。