0
本文作者: 汪思穎 | 2018-04-06 10:30 | 專題:CVPR 2018 |
雷鋒網(wǎng) AI 科技評論按:本文作者 Flood Sung,他為雷鋒網(wǎng) AI 科技評論撰寫了基于 CVPR 錄用論文《Learning to Compare: Relation Network for Few-Shot Learning》的獨家解讀稿件,未經(jīng)許可不得轉(zhuǎn)載。
1. 前言
相信每一位研究深度學(xué)習(xí)的朋友都明白,深度學(xué)習(xí)能夠在這幾年取得如此爆炸式的發(fā)展,除了算法本身的改進(jìn)與創(chuàng)新,最關(guān)鍵的因素就是擁有海量的數(shù)據(jù)和強(qiáng)大的計算資源。那么,我們很自然的會問:沒有海量數(shù)據(jù)怎么辦?現(xiàn)實生活中有很多問題并沒有那么多的數(shù)據(jù)可以采集,或者說采集數(shù)據(jù)所需的成本很高,比如稀有物種的圖片,醫(yī)療診斷的圖片?;蛘吒唵蔚睦?,我們每個人身邊都有很多獨有的物品。難道這些少樣本的東西深度學(xué)習(xí)就無法處理,無法識別了嘛?不應(yīng)該呀。原因非常簡單,我們?nèi)丝梢院茌p松的做到少樣本學(xué)習(xí),我們看到一個人就能記住他的樣貌并在下一次認(rèn)出對方。既然人能做到,那么深度學(xué)習(xí)按道理也應(yīng)該可以實現(xiàn)。因此,少樣本學(xué)習(xí)成為了近年來深度學(xué)習(xí)領(lǐng)域非常重要的一個前沿研究問題。
在本文中,我們將介紹 CVPR2018 最新錄用的一篇少樣本學(xué)習(xí)的 paper:
Learning to Compare: Relation Network for Few-Shot Learning
鏈接:https://arxiv.org/pdf/1711.06025.pdf
開源代碼: https://github.com/floodsung/LearningToCompare_FSL
在這篇 paper 中,我們提出構(gòu)建一個關(guān)系網(wǎng)絡(luò)(Relation Network)來讓其學(xué)習(xí)如何比較(Learning to Compare),從而實現(xiàn)少樣本學(xué)習(xí)(Few-Shot Learning)。這個方法非常簡單通用,但是效果很不錯,在少樣本學(xué)習(xí)及零樣本學(xué)習(xí)的幾個基準(zhǔn)數(shù)據(jù)集上都取得了相當(dāng)好的結(jié)果。下面,我們就來好好聊聊這篇 paper。
2. 為什么有這個 idea?
一般我們在 paper 中,并不會探討這個問題,就是這個 idea 是怎么產(chǎn)生的。但是在這篇博文中,我就可以先說說 idea 本身。我們想既然人可以實現(xiàn)少樣本學(xué)習(xí),那么我們是不是應(yīng)該先問這樣一個問題就是為什么人可以實現(xiàn)少樣本學(xué)習(xí)?這個問題可能會比較寬泛,那么我們把它具體化一下:為什么人可以看到 iPhone X 一眼然后就可以認(rèn)出它?我們很顯然會說:因為 iPhone X 丑陋的齊劉海,因為 iPhone X 背后的雙攝像頭是豎著的,和其他手機(jī)不一樣!我們發(fā)現(xiàn),我們大腦可以對 iPhone X 的形象提取關(guān)鍵特征,并且和其他手機(jī)做比較,從而使其擁有獨特性讓我們能夠識別。我們再舉一個例子:你能夠快速的識別網(wǎng)紅嗎?我不知道其他人能不能,反正我覺得都一個樣,都是網(wǎng)紅臉,傻傻分不出。我們說到了「分不出」這三個字,因為我們在識別一個人的臉的時候,我們大腦依然是在和其他臉做比較,而網(wǎng)紅臉因為太像,以至于我們很難區(qū)分,也就很難識別。
所以,我們就發(fā)現(xiàn)了,我們?nèi)酥阅軌蜃R別一個新的東西,在于我們?nèi)说囊曈X系統(tǒng)天生的能夠?qū)θ我馕矬w提取特征,并進(jìn)行比較。因為我們能夠比較不同物體,所以我們根本無所謂看到的東西是不是以前就見過。這就是我們?nèi)司邆渖贅颖緦W(xué)習(xí)能力的關(guān)鍵原因。那么問題又來了:提取特征很好理解,現(xiàn)在的神經(jīng)網(wǎng)絡(luò)比如卷積神經(jīng)網(wǎng)絡(luò)也是在學(xué)習(xí)提取特征,但是這個比較能力又是什么東西呢?思考清楚這個問題是產(chǎn)生這個 idea 的關(guān)鍵??雌饋砦覀?nèi)瞬恍枰獙W(xué)習(xí)先天就擁有視覺比較能力。如果哪天你看到一個人看一個東西卻說出「It doesn’t look like anything to me.」,那你一定不是在現(xiàn)實世界,而是西部世界了。所以,為什么人先天擁有視覺比較能力?我不清楚,我只能把它歸結(jié)為一種元知識 (Meta Knowledge)。
少樣本學(xué)習(xí)一直和元學(xué)習(xí)(Meta Learning)關(guān)系緊密。元學(xué)習(xí)的目標(biāo)就是通過學(xué)習(xí)大量的任務(wù),從而學(xué)習(xí)到內(nèi)在的元知識,從而能夠快速的處理新的同類任務(wù),這和少樣本學(xué)習(xí)的目標(biāo)設(shè)定是一樣的。我們也希望通過很多任務(wù)來學(xué)習(xí)識別物體這種能力,從而面向新的少樣本學(xué)習(xí)任務(wù),我們能夠充分利用我們已經(jīng)學(xué)習(xí)到的識別能力(也就是元知識),來快速實現(xiàn)對新物體的識別。而在這里,通過前面的分析,我們明白了,我們要研究如何通過元學(xué)習(xí)的方式來讓神經(jīng)網(wǎng)絡(luò)學(xué)會比較這個元知識能力。而因為任意的知識都可以通過神經(jīng)網(wǎng)絡(luò)來表示,因此呢,我們就想:為什么不用一個神經(jīng)網(wǎng)絡(luò)來表示這個視覺比較能力呢?然后利用這個網(wǎng)絡(luò)去做少樣本學(xué)習(xí)?到了這里,我們的 idea 也就呼之欲出了。
圖 1 關(guān)系網(wǎng)絡(luò)示意圖
3. 簡單說說方法論
有了上面的分析,我們得到的模型就非常簡單了,可以說完全模擬人識別物體的過程:如上圖所示,是一個典型的 5way 1shot 的少樣本學(xué)習(xí)問題,也就是我們要對 5 個新類別的物體進(jìn)行識別,但是每一類物體我們只給出一個樣本。上圖中,最左側(cè)的 5 張圖片就是我們擁有的訓(xùn)練樣本(一般稱為 support set)而旁邊的一個圖片則是我們用來測試的樣本(一般稱為 testing set)。我們先構(gòu)造一個嵌入單元(embedding module)來提取每一張圖片的特征信息,是什么特征我們不管,然后我們把要測試的圖片特征和訓(xùn)練樣本的圖片特征連起來輸入到關(guān)系單元(relation module)中做比較,然后我們根據(jù)比較的結(jié)果(relation score)來判斷這個測試圖片到底屬于哪一個類。這很好理解,比如上圖中測試圖片是狗,那么它跟訓(xùn)練樣本中狗的圖片相似度比較高,那么我們就認(rèn)為這個新的圖片是狗。所以,整個識別過程是非常簡單,完全模擬人的識別過程的。我們把上圖中的嵌入單元和關(guān)系單元合起來統(tǒng)稱為關(guān)系網(wǎng)絡(luò)(relation network)。
那么怎么來訓(xùn)練這個網(wǎng)絡(luò)呢?我們有一個擁有大量數(shù)據(jù)的訓(xùn)練集(training set),我們利用這個訓(xùn)練集來構(gòu)造出和測試時類似的數(shù)據(jù)結(jié)構(gòu),也就是 sample set 和 query set 來模擬測試時的 support set 和 testing set。我們可以使用訓(xùn)練集來生成巨量的模擬任務(wù),從而在 meta 層面上訓(xùn)練整個關(guān)系網(wǎng)絡(luò)。我們把輸出的 relation score 看做是一個從 0 到 1 的數(shù)值。0 就代表極不相似,而 1 則代表完全相似。因此,我們就非常直接地采用平方差 MSE 作為網(wǎng)絡(luò)訓(xùn)練的 loss。
只做少樣本學(xué)習(xí)不是這個模型的全部,我們很容易地把它做一些改變,就能直接用于零樣本學(xué)習(xí)。零樣本學(xué)習(xí)和少樣本學(xué)習(xí)不一樣的地方在于零樣本學(xué)習(xí)不給樣本,而是給出一個代表某一類物體語義的嵌入向量,我們要直接利用這個嵌入向量來對物體做分類。那么,在我們的關(guān)系網(wǎng)絡(luò)中,我們只需要把訓(xùn)練樣本(support set)改成這個語義嵌入向量就可以來做零樣本學(xué)習(xí)了。
圖 2 少樣本學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)
圖 3 零樣本學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)
4. 具體實驗
這里也稍微說一下實驗。在少樣本學(xué)習(xí)上,我們使用目前領(lǐng)域內(nèi)都在使用的 Omniglot 和 MiniImagenet 作為我們的基準(zhǔn)數(shù)據(jù)集,而在零樣本學(xué)習(xí)上,我們則使用廣泛采用的 AwA 和 CUB 數(shù)據(jù)集進(jìn)行測試。無論在哪個數(shù)據(jù)集上,我們都取得了 state-of-the-art 或者相當(dāng)好的結(jié)果:
圖 4 omniglot 實驗結(jié)果
圖 5 零樣本學(xué)習(xí)實驗結(jié)果
從這些實驗中,我們可以看到我們模型的有效性。更詳細(xì)的實驗過程請閱讀 paper 原文及已開源的代碼。
5. 關(guān)于關(guān)系網(wǎng)絡(luò)的思考,為什么它能 work?
在少樣本學(xué)習(xí)領(lǐng)域,我們的方法可以認(rèn)為是一種基于度量(metric-based)的方法,但是我們的方法很不一樣的一點,也是創(chuàng)新的一點在于我們完全使用神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)這種度量方式,并且使用元學(xué)習(xí)的訓(xùn)練方式。而一般的基于度量的方法都是人為的設(shè)計一種度量,比如最簡單的歐式距離。顯然,人為設(shè)計的方式總是有缺陷的,那么我們就想來看看,使用神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)的度量是不是能比人為設(shè)計的好。因此,我們做了個小實驗來印證這個想法。這個小實驗是一個 2 維數(shù)據(jù)的比較實驗。比如這樣兩個數(shù)據(jù)(1,2)和(-2,-1),這兩個數(shù)據(jù)看起來是不相關(guān)的,但是它們在某一些狀態(tài)下可能屬于同一個類別。那么這種情況,其實傳統(tǒng)的人為設(shè)計的度量方式實際上就失效了。我們只能通過神經(jīng)網(wǎng)絡(luò)去學(xué)習(xí)這種度量。所以像下圖這樣復(fù)雜的螺旋曲線關(guān)系數(shù)據(jù)情況,我們通過關(guān)系網(wǎng)絡(luò)(relation network)可以學(xué)的不錯,而人為度量則完全不行。
圖 6 關(guān)系網(wǎng)絡(luò)有效性試驗示意圖
因此,我們這篇 paper 也是想給大家一個啟示,用神經(jīng)網(wǎng)絡(luò)進(jìn)一步去替代一些之前還是人為設(shè)計的東西,有希望取得更好的效果!像目前元學(xué)習(xí)(Meta Learning)在研究的一個方向就是用神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)來生成網(wǎng)絡(luò)結(jié)構(gòu),也是一個意思。
6. 小結(jié)
在這篇博文中,我們簡單的介紹了 CVPR2018 這篇最新少樣本學(xué)習(xí)的 paper,和大家分析了一下 paper idea 的核心思想。對于這個 idea,我們拓展一下就有一個非常重要的問題值得去思考,也就是「其他領(lǐng)域有多少問題其實也是依靠元知識 Meta Knowledge 來驅(qū)動的?」如果我們發(fā)現(xiàn)了這樣元知識的需求,就可以考慮使用類似的方法——元學(xué)習(xí)(Meta Learning)的方法來實現(xiàn)。
展望一下,元學(xué)習(xí)方興未艾,接下來會有越來越多的相關(guān)文章出現(xiàn),進(jìn)一步推動少樣本學(xué)習(xí),快速學(xué)習(xí),自適應(yīng)學(xué)習(xí),終身學(xué)習(xí)等等領(lǐng)域的發(fā)展。讓我們拭目以待!
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。