1. 程式人生 > >One-shot Learing/Few-shot Learning、Zero Shot Learning詳解

One-shot Learing/Few-shot Learning、Zero Shot Learning詳解

Zero-shot Learing和One Shot Learning(又叫Few-shot Learning)都是遷移學習中的概念。

Zero-shot Learing:

就是訓練樣本里沒有這個類別的樣本,但是如果我們可以學到一個對映,這個對映好到我們即使在訓練的時候沒看到這個類,但是我們在遇到的時候依然能通過這個對映得到這個新類的特徵。

如,訓練樣本是一些具有標籤的小動物,如何貓和狗。但是測試樣本是草泥馬的圖片,並且沒有標籤告訴你這個是草泥馬。

如何解決呢?

第一個解決方案是進一步細化特徵,比如說我們原來訓練了貓,狗,然後用這個網路去測試一個我們都沒有見過的物種,那麼很明顯是不能得到很好的結果的,那麼如果是人,他就會進行推斷。比如,這個物種,有幾隻眼睛幾條腿。根據這些特徵推斷這個物種可能是哪種物種的變異體或者是近親。 

舉個例子,我們將動物的特徵細化到是不是兩個眼睛,是不是四條腿,是不是毛茸茸的,用多少條腿走路等特徵,這樣的話,訓練的時候我們就可以訓練出一個網路,這個網路可以識別出圖片中特徵的個數,這個時候當我們見到沒有見過的生物的時候仍然可以通過特徵對他們進行大致的識別和區分。

One-shot Learing/Few-shot Learning:

類別下訓練樣本只有一個或者很少,我們依然可以進行分類。比如我們可以在一個更大的資料集上或者利用knowledge graph、domain-knowledge 等方法,學到一個一般化的對映,也就是學習一個對映,然後再到小資料集上進行更新升級對映。

如:

為了完成識別新類(狗)的問題,於是需要新來一張標好 label 的樣本(如 :有 label,樣本是田園土狗, 稱作 sample set 或 support set)用來泛化模型,那麼再來 test 樣本時候(如:無 label,樣本是哈士奇,稱作 query set 或者 test set),我們就可以把這個 哈士奇的樣本 label 標出來,達到分類的目的。這種學習叫做 one-shot learning,即單樣本學習。

同樣的,如果剛才來的是一堆標好 label 的樣本(除了田園土狗,可能還有京巴、吉娃娃、泰迪等做 support set),這種學習叫做 few-shot learning,即小樣本學習,一般 few 不會大於 20。

一個相對嚴謹的定義:

即模型只有少量的有 label 的訓練樣本 S ,S 中包括 N 個樣本,yi 代表各樣本的 label。因為測試樣本集中每個樣本都有一個正確的類別,我們希望,再來新的待分類的測試樣本 x’ 時候,正確預測出 x' 標籤是 y'。如果把每個類別 yi 的單個樣本換成 k個樣本就變成了k-shot learning , few-shot一般指的是 k 不超過 20。