1. 程式人生 > >從one-shot問題的解法發現新的deep learning應用思路

從one-shot問題的解法發現新的deep learning應用思路

摘要

本文講述了什麼是one-shot問題,以及one-shot問題的解決方案。並從這種解決問題的思路中得到啟發,得到了一種deep learning的新的應用思路。

one-shot問題

在我們訓練有監督學習模型時,為了讓模型“見多識廣”,我們會在構建訓練集時,注重每個類別樣本數的平衡。

但大家有沒有想過另一種情況,加入我們做你公司員工的人臉識別系統,每個員工只會給你一張圖片吧,每個樣本一張圖片,通常是沒法訓練機器學習模型來解決分類問題的。還有你公司的員工經常變動,有新人加入或老員工離職,我們都要重新訓練一次模型。

所謂的one-shot問題,就是指這種情況,對每一個類別,只提供一個或少量訓練樣本,且樣本又有變動性。

怎麼樣才能做到對小樣本也能適應,樣本的訓練集變化也不需要重新訓練模型呢?

如何解決

傳統的分類問題,Y值的label標註,都是用類別標號進行標註(或者one-hot編碼)。這樣我們學習得到的模型,就是分類模型,能直接通過softmax給出類別標號。

要解決one-shot問題,就不能讓模型學習直接分類了,因為每一個類別只有一個樣本,是無法通過學習得到好模型的。

讓模型學習(得到)一個similarity函式,就是解決one-shot問題的方案。這樣的模型,輸出的值不是類別,而是給定(輸入)兩幅影象的相似度。

這樣就能解決剛剛提高的人臉識別中的兩個問題:

  • 每個員工只給你一張圖片,但你用兩兩配對作為模型輸入時,每張圖片都能被模型學習多次
  • 有新員工入職或老員工離職,也不需要重新訓練模型,因為模型是做相似度輸出,並不涉及具體的label

新思路

解決分類問題,不讓模型直接學習分類(直接輸出類別標註),而是讓模型學習相似度函式,就解決了deep learning量大難題:樣本少;訓練集樣本變動(減少、增加某些新的label)導致模型必須重新訓練。

參考

  • andrew ng “CNN deep learning” chapter-04