zero-shot-learning-definition-examples-comparison

公众号-JavaEdge發表於2024-06-17

1 Zero-shot learning

零樣本學習。

1.1 任務定義

利用訓練集資料訓練模型,使得模型能夠對測試集的物件進行分類,但是訓練集類別和測試集類別之間沒有交集;期間需要藉助類別的描述,來建立訓練集和測試集之間的聯絡,從而使得模型有效。

Zero-shot learning 就是希望我們的模型能夠對其從沒見過的類別進行分類,讓機器具有推理能力,實現真正的智慧。其中零次(Zero-shot)是指對於要分類的類別物件,一次也不學習。

1.2 例項

假設我們的模型已經能夠識別馬,老虎和熊貓了,現在需要該模型也識別斑馬,那麼我們需要告訴模型,怎樣的物件才是斑馬,但是並不能直接讓模型看見斑馬。所以模型需要知道的資訊是馬的樣本、老虎的樣本、熊貓的樣本和樣本的標籤,以及關於前三種動物和斑馬的描述。

通俗點說就是:假設小暗(純粹因為不想用小明)和爸爸,到了動物園,看到了馬,然後爸爸告訴他,這就是馬;之後,又看到了老虎,告訴他:“看,這種身上有條紋的動物就是老虎。”;最後,又帶他去看了熊貓,對他說:“你看這熊貓是黑白色的。”然後,爸爸給小暗安排了一個任務,讓他在動物園裡找一種他從沒見過的動物,叫斑馬,並告訴了小暗有關於斑馬的資訊:“斑馬有著馬的輪廓,身上有像老虎一樣的條紋,而且它像熊貓一樣是黑白色的。”最後,小暗根據爸爸的提示,在動物園裡找到了斑馬(意料之中的結局。。。)。

上述例子中包含了一個人類的推理過程,就是利用過去的知識(馬,老虎,熊貓和斑馬的描述),在腦海中推理出新物件的具體形態,從而能對新物件進行辨認。zero-shot learning就是希望能夠模仿人類的這個推理過程,使得計算機具有識別新事物的能力。

2 One-shot learning --單樣本學習

Zero-shot learning 指的是我們之前沒有這個類別的訓練樣本。但是我們可以學習到一個對映X->Y。如果這個對映足夠好的話,我們就可以處理沒有看到的類了。

One-shot learning 指的是我們在訓練樣本很少,甚至只有一個的情況下,依舊能做預測。這是如何做到呢?可以在一個大資料集上學到general knowledge(具體的說,也可以是X->Y的對映),然後再到小資料上有技巧的update。

2.1 One-Shot Learning的意義

① 減少訓練資料

深度學習需要大量的資料
如MNIST為了10個類別的區分,需要60000張訓練影像,平均一個類別需要6000張訓練影像。

One-Shot試圖將一個類別的訓練影像減少,極端情況時只有一張圖片。

② 在新類別的資料出現時,無需重新訓練

傳統的神經網路無法處理沒有出現在訓練集中的類別。

如以員工刷臉打卡為例,使用深度神經網路,每一個新員工入職,都是一個類別,需要重新訓練深度神經網路。如果每天都有新員工入職,每天都要重新訓練網路,成本非常高。

One-Shot Learning可以無需重新訓練即可應用於新的類別的資料

One-shot learning 屬於Few-shot learning的一種特殊情況。

3 Few-shot learning

小樣本學習。

如果訓練集中,不同類別的樣本只有少量,則成為Few-shot learning.

就是給模型待預測類別的少量樣本,然後讓模型透過檢視該類別的其他樣本來預測該類別。比如:給小孩子看一張熊貓的照片,那麼小孩子到動物園看見熊貓的照片之後,就可以識別出那是熊貓。

Few-shot Learning V.S Zero-shot Learning

  • 小樣本學習的目的是在有少量訓練資料的情況下能獲得準確分類測試樣本的模型
  • 零樣本學習的目的是預測訓練資料集中沒有出現過的類

零樣本學習和小樣本學習有很多共同的應用,如:

  • 影像分類(image classification)
  • 語義分割(semantic segmentation)
  • 影像生成(image generation)
  • 目標檢測(object detection)
  • 自然語言處理(natural language processing)

另外單樣本學習(one-shot learning)經常會和零樣本學習混在一起。單樣本學習是小樣本學習問題的一個特例,它的目的是從一個訓練樣本或圖片中學習到有關物體類別的資訊。單樣本學習的一個例子是,智慧手機中使用的人臉識別技術。

本文由部落格一文多發平臺 OpenWrite 釋出!