機器學習任務(wù)按照對 樣本量 的需求可以分為:傳統(tǒng)監(jiān)督式學習、Few-shot Learning、One-shot Learning、Zero-shot Learning。
一、傳統(tǒng)監(jiān)督式學習
傳統(tǒng)learning,煉丹模式。傳統(tǒng)深度學習的學習速度慢,往往需要學習海量數(shù)據(jù)和反復(fù)訓練后才能使網(wǎng)絡(luò)模型具備不錯的泛化能力,傳統(tǒng)learning可以總結(jié)為:海量數(shù)據(jù) + 反復(fù)訓練(煉丹模式)。
為了 “多快好省” 地通往煉丹之路,開始研究 Zero-shot Learning / One-shot Learning / Few-shot Learning。
二、Zero-shot learning (零樣本學習,簡稱ZSL)
參考文章:https://blog.csdn.net/weixin_41862755/article/details/125623018
任務(wù)定義:
利用訓練集數(shù)據(jù)訓練模型,使得模型能夠?qū)y試集的對象進行分類,但是訓練集類別和測試集類別之間沒有交集;期間需要借助類別的描述,來建立訓練集和測試集之間的聯(lián)系,從而使得模型有效。
ZSL就是希望我們的模型能夠?qū)ζ鋸臎]見過的類別進行分類,讓機器具有推理能力,實現(xiàn)真正的智能。其中零次(Zero-shot)是指對于要分類的類別對象,一次也不學習。
比如:假設(shè)我們的模型已經(jīng)能夠識別馬,老虎和熊貓了,現(xiàn)在需要該模型也識別斑馬,那么我們需要告訴模型,怎樣的對象才是斑馬,但是并不能直接讓模型看見斑馬。所以模型需要知道的信息是馬的樣本、老虎的樣本、熊貓的樣本和樣本的標簽,以及關(guān)于前三種動物和斑馬的描述。
三、Few-shot learning
Few-shot Learning(少樣本學習)是Meta Learning(元學習)中的一個實例,所以在了解什么是Few-shot Learning之前有必要對Meta Learning有一個簡單的認識。不過在了解什么是Meta Learning之前還是要了解一下什么是Meta。
3.1 什么是Meta
meta就是描述數(shù)據(jù)的數(shù)據(jù)。
比如照片,我們看到的是它呈現(xiàn)出來的數(shù)據(jù), 即Data,但它還含有許多描述它拍攝參數(shù)的數(shù)據(jù),比如光圈、快門速度、相機品牌等,即Meta。
3.2 什么是Meta Learning?
機器學習模型一般要求訓練集樣本量足夠大,才能取得不錯的預(yù)測效果。但對于人來說卻不需要,對于一個從沒有見過小貓和小狗的小朋友來說,給他幾張照片他就能輕松的學會如何分辨兩只動物。如果一個人已經(jīng)掌握了如何騎自行車,那么學習如何騎摩托車對他來說會非常輕松。我們能否設(shè)計一個模型,讓模型僅從一點點訓練樣本就能學會新的“知識”呢?即讓模型“自己學會去學習”。
舉個簡單的例子,一個小朋友去動物園,里面有些動物他沒有見過所以不知道叫什么名字,然后你給他一些小卡片,卡片上有各個動物的照片和名稱,小朋友就可以自己學習,從這些卡片中找出這些動物的名字。這里的未知動物叫做query,小卡片叫做support set。培養(yǎng)小朋友從小卡片中自主學習就叫做meta learning。如果一個類別的小卡片只有一張,那么就叫做one-shot learning。
小樣本帶標簽的數(shù)據(jù)集稱為support set,由于support set數(shù)據(jù)樣本很少,所以不足以訓練一個神經(jīng)網(wǎng)絡(luò)。而training set每個類別樣本量很大,使用training set訓練的模型能夠在測試集取得很好的泛化效果。
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)的輸出中學習,這就要求其它學習算法以及被預(yù)訓練過。即meta learning算法將其它機器學習算法的輸出作為輸入,然后進行回歸和分類預(yù)測。
- Meta Learning Algorithm: Learn from the output of learning algorithms and make a prediction given predictions made by other models.
如果說machine learning是使用信息做出更好的預(yù)測,那么meta learning就是利用machine learning的預(yù)測作出最好的預(yù)測。
3.3 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.4 Supervised learning vs few-shot learning
3.4.1 監(jiān)督學習
- 測試樣本之前從沒有見過
- 測試樣本類別出現(xiàn)在訓練集中
3.4.2 Few-shot learning
- query樣本之前從沒有見過
- query樣本來自于未知類別
由于query并未出現(xiàn)在訓練集中,我們需要給query提供一個support set,通過對比query和support set間的相似度,來預(yù)測query屬于哪一類別。
3.5 k-way n-shot support set
- k-way:support set中有個類別
- n-shot:每一個類別有個樣本
例如下圖中有四個類別,每個類別有兩個樣本,所以是4-way 2-shot support set
Few-shot learning的預(yù)測準確率隨 #-way 增加而減小,隨 #-shot 增加而增加。因為對于2-way問題,預(yù)測準確率顯然要比1000-way問題要高。而對于 #-shot,一個類別中樣本數(shù)越多越容易幫助模型找到正確的類別。
3.6 Basic idea behind few-shot learning
Few-shot learning的最基本的思想是學一個相似性函數(shù): s i m ( x , x ‘ ) sim(x,x^{‘}) sim(x,x‘)來度量兩個樣本 x x x和 x ’ x^{’} x’的相似性。 s i m ( x , x ‘ ) sim(x,x^{‘}) sim(x,x‘)越大表明兩個圖片越相似;越小表明兩個圖片差距越大。
操作步驟:
- 從大規(guī)模訓練數(shù)據(jù)集中學習相似性函數(shù)
- 比較query與support set中每個樣本的相似度,然后找出相似度最高的樣本作為預(yù)測類別
四、One-shot learning
如果訓練集中,不同類別的樣本只有一個,則成為One-shot learning.文章來源:http://www.zghlxwxcb.cn/news/detail-442524.html
One-shot learning 屬于Few-shot learning的一種特殊情況。文章來源地址http://www.zghlxwxcb.cn/news/detail-442524.html
到了這里,關(guān)于【計算機視覺】Zero-shot, One-shot和Few-shot的理解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!