大家好,這篇文章是接上篇文章的一個補充文章,主要是回答一下上篇文章的問題,講一下triplet loss。上一篇文章我們介紹了4種目前人臉識別領域的主流loss,如果沒有閱讀的同學可以先看一下那篇文章哦。

好的,針對上一篇文章的問題我們首先作出一個回答:

為什麼這些同樣是做分類的loss,在人臉領域如此大火,但在其他領域,比如Imagenet上面被大家用的基本沒有呢?一些最普通最基本的問題上面,這些loss的表現如何?

這兩個問題我透過實驗驗證,事實上在其他領域,是完全可以應用改進的新loss function的,而且在模型結構不改變,超引數不改變的情況下,模型的效能會有些許改善。大概在1%~3%點左右。

但是這裡會延伸出來一個問題,我們費勁去將一個新的loss function用到模型裡面只換來1%的提升,這究竟是否有價值?

事實上,比如最簡單的MNIST資料集,用改進loss function提升甚至到不了0。1%(由於目前在這個問題上深度學習普遍模型準確率可達99。5%以上的準確率)。所以我們可以看出來,改進型loss想要取得較好的模型效果是有一定的前提的。

這個前提就是,對於分類問題而言,類別越多,改進loss function的效果越好,這和人臉識別問題相契合,以UMD face為例,其就包含了8277個類別,而改進loss會在這種多類別的分類任務中取得相對而言較好的效果。

好的,那麼現在,我們把上次咱們遺留下來的彩蛋(triplet loss)給介紹一下。

Triplet Loss:

在開始介紹這個loss之前,我們首先需要理解一個這個loss所用到的一個概念:Anchor。這個概念能夠幫助我們直擊triplet的含義,方便我們對於其數學意義的理解。

anchor是什麼?

我們可以簡單理解為我們訓練樣本中任意取出的一個樣本。比如取到的樣本是黃磊老師:

盤點在人臉識別領域現今主流的loss(2)

照片來源:《嚮往的生活》

這個在triplet中就是anchor,記為

X^a

。然後我們還需要從我們的訓練樣本中去分別找到一個正樣本(possitive sample)和一個負樣本(negitive sample)來組成一個triplet。

正樣本如何選取呢?其實很簡單,就是同類樣本,在本例中就還是黃磊老師,比如:

盤點在人臉識別領域現今主流的loss(2)

圖片來源:《中華網》

正樣本我們記為:

X^p

負樣本,就是任意一個和黃磊老師不一樣的類別的人臉,比如何炅:

盤點在人臉識別領域現今主流的loss(2)

照片來源:《新華網》

負樣本我們記為:

X^N

那麼此時,這三個樣本就組成了一個triplet進行訓練了。

三張樣本,進入神經網路,在倒數第二層 embedding 層,一定會得到三個不同的embedding feature輸出(對於embedding feature的理解參見上一篇文章哦)。我們將三個feature標記為:

f(X_a), f(X_p), f(X_N)

直觀上設計,我們一定是希望

f(X_a), f(X_p)

的距離越近越好,因為他們同屬於黃磊這一類,而

f(X_a), f(X_N)

之間的距離越大越好,因為他們屬於不同類。

數學表示就是:

||(f_{x_i^a}) - (f_{x_i^p})||^2  + \alpha < ||(f_{x_i^a}) - (f_{x_i^N})||^2

這裡,我們引入了

\alpha

的概念,和我們之前Arcface,CosineFace思路是一致的,加入一個間隔,使類間距增大,類內距變小。

觀察目標函式,那麼其對應的訓練損失函式也就很顯然了:

\sum_{i}^{N} (||(f_{x_i^a}) - (f_{x_i^p})||^2 - ||(f_{x_i^a}) - (f_{x_i^N})||^2 + \alpha)_+

這裡的+代表如果()裡的值為負數的時候,則值為0,否則為其本身。

這樣就約束保證了,不同類別之間的embedding

l_2

距離一定大於等於

\alpha

以上就是我們的triplet loss了,是不是感覺很簡單呢?

我在這裡有個想法,我們一起回顧了所有的五種新的loss function的設計思路,那麼是不是可以借鑑一下之前的四種,在採用triplet的思路之上,將triplet裡面用的loss裡面的

\alpha

換個位置,比如採用ArcFace的思想,來設計出一種全新的更好的loss呢?是不是一篇新的期會論文又誕生啦~

不過triplet loss也有其工業上的劣勢,比如建立triplet 對會比較耗時,網路訓練更新不容易等問題,這裡就需要大家用更好的方式去創新更新啦。

好了今天就和大家分享到這裡,

做個預告,我打算近兩篇文章和大家聊聊google 現在大火的transformer(還是一樣的從本質的數學理解), 和聊聊人體姿態學估計與重建的相關演算法,演算法之路,咱們快樂同行。

謝謝閱讀~比心