Few-shot Learning(少樣本學習)是Meta Learning(元學習)中的一個實例[1],所以在了解什么是Few-shot Learning之前有必要對Meta Learning有一個簡單的認識线得。不過在了解什么是Meta Learning之前還是要了解一下什么是Meta贯钩。因此办素,閱讀本文后你將對如下知識有一個初步的了解祸穷。
- What is Meta
- What is Meta Learning
- What is Few-shot Learning
1. What is Meta?
meta就是描述數(shù)據(jù)的數(shù)據(jù)。
比如照片需曾,我們看到的是它呈現(xiàn)出來的數(shù)據(jù)祈远, 即Data,但它還含有許多描述它拍攝參數(shù)的數(shù)據(jù)谋减,比如光圈扫沼、快門速度、相機品牌等严就,即Meta器罐。
對于一片博客而言,博客內(nèi)容就是Data抖誉,博客的網(wǎng)址衰倦,標題旁理,作者信息等就是Meta [2]。
2. What is Meta Learning?
機器學習模型一般要求訓練集樣本量足夠大驻襟,才能取得不錯的預測效果芋哭。但對于人來說卻不需要,對于一個從沒有見過小貓和小狗的小朋友來說豌习,給他幾張照片他就能輕松的學會如何分辨兩只動物。如果一個人已經(jīng)掌握了如何騎自信車既荚,那么學習如何騎摩托車對他來說會非常輕松栋艳。我們能否設(shè)計一個模型,讓模型僅從一點點訓練樣本就能學會新的“知識”呢晴叨?即讓模型“自己學會去學習”[1]矾屯。
舉個簡單的例子,一個小朋友去動物園遍略,里面有些動物他沒有見過所以不知道叫什么名字骤坐,然后你給他一些小卡片,卡片上有各個動物的照片和名稱蕾久,小朋友就可以自己學習拌夏,從這些卡片中找出這些動物的名字。這里的未知動物叫做query障簿,小卡片叫做support set站故。培養(yǎng)小朋友從小卡片中自主學習就叫做meta learning[3]。如果一個類別的小卡片只有一張西篓,那么就叫做one-shot learning岂津。
Meta learning是一種學習其它機器學習任務(wù)輸出的機器學習算法(有一點繞,不過理解了meta data理解meta learning就會相對容易一些)橱乱。
Machine learning algorithm從歷史數(shù)據(jù)中學習知識,然后泛化到新的數(shù)據(jù)樣本中冗美。
- Learning Algorithm: Learn from historical data and make predictions given new examples of data.
而meta learning是從其它學習算法(learning algorithm)的輸出中學習析二,這就要求其它學習算法以及被預訓練過。即meta learning算法將其它機器學習算法的輸出作為輸入叶摄,然后進行回歸和分類預測蛤吓。
- Meta Learning Algorithm: Learn from the output of learning algorithms and make a prediction given predictions made by other models.
如果說machine learning是如果使用信息做出更好的預測,那么meta learning就是利用machine learning的預測作出最好的預測[3] [4]锅棕。
3. What is Few-shot Learning
3.1 Few-shot learning
Few-shot learning指從少量標注樣本中進行學習的一種思想淌山。Few-shot learning與標準的監(jiān)督學習不同,由于訓練數(shù)據(jù)太少德绿,所以不能讓模型去“認識”圖片退渗,再泛化到測試集中。而是讓模型來區(qū)分兩個圖片的相似性会油。當把few-shot learning運用到分類問題上時翻翩,就可以稱之為few-shot classification,當運用于回歸問題上時体斩,就可以稱之為few-shot regression絮吵。下面所提到的few-shot learning都只針對分類問題進行討論忱屑。
假如我們的有一個很大的訓練集暇昂,包含以下五類樣本伴嗡,有哈士奇、大象澄暮、老虎阱扬、金剛鸚鵡和汽車。我們的目標不是讓模型認出哪個是哈士奇馍刮,哪個是大象窃蹋,而是讓模型知道不同類別間的區(qū)別。
我們現(xiàn)在給模型輸入一張新的圖片松鼠(squirrel)匈辱,模型并不知道它是松鼠惠奸,因為訓練樣本中沒有這一種動物。但當你把兩只松鼠的圖片都輸入到網(wǎng)絡(luò)中梗掰,它雖然不知道它們屬于松鼠這一類別嗅回,但模型可以很確信的告訴你這是同一物種,因為長得很像埂陆。
但當你輸入一只穿山甲(pangolin)和一只狗(dog)娃豹,模型能夠區(qū)分出來它們長得不像懂版,所以不是同一種動物。
3.2 Support set vs training set
小樣本帶標簽的數(shù)據(jù)集稱為support set民鼓,由于support set數(shù)據(jù)樣本很少,所以不足以訓練一個神經(jīng)網(wǎng)絡(luò)丰嘉。而training set每個類別樣本量很大饮亏,使用training set訓練的模型能夠在測試集取得很好的泛化效果。
3.3 Supervised learning vs few-shot learning
-
監(jiān)督學習:
(1)測試樣本之前從沒有見過
(2)測試樣本類別出現(xiàn)在訓練集中 -
Few-shot learning
(1)query樣本之前從沒有見過
(2)query樣本來自于未知類別
由于query并未出現(xiàn)在訓練集中逼争,我們需要給query提供一個support set劝赔,通過對比query和support set間的相似度,來預測query屬于哪一類別杂伟。
3.4 k-way n-shot support set
- k-way:support set中有個類別
- n-shot:每一個類別有個樣本
例如下圖中有四個類別仍翰,每個類別有兩個樣本,所以是4-way 2-shot support set
Few-shot learning的預測準確率隨 #-way 增加而減小越平,隨 #-shot 增加而增加秦叛。因為對于2-way問題瀑粥,預測準確率顯然要比1000-way問題要高。而對于 #-shot避咆,一個類別中樣本數(shù)越多越容易幫助模型找到正確的類別修噪。
3.5 Basic idea behind few-shot learning
Few-shot learning的最基本的思想是學一個相似性函數(shù): 來度量兩個樣本和的相似性。 越大表明兩個圖片越相似樊销,越小,表明兩個圖片差距越大现柠。
操作步驟:
(1)從大規(guī)模訓練數(shù)據(jù)集中學習相似性函數(shù)
(2)比較query與support set中每個樣本的相似度够吩,然后找出相似度最高的樣本作為預測類別[3][5]
參考: