不同於cross entry loss或者MSE等等,他們的目標去表徵模型的輸出與實際的輸出差距是多少。但是ranking loss實際上是一種metric learning,他們學習的相對距離,而不在乎實際的值。由於在不同場景有不同的名字,包括 Contrastive Loss, Margin Loss, Hinge Loss or Triplet Loss。

ranking loss 應用十分廣泛,包括是二分類,例如人臉識別,是一個人不是一個人。

ranking loss 有非常多的叫法,但是他們的公式實際上非常一致的。大概有兩類,一類是輸入pair 對,另外一種是輸入3塔結構。

Pairwise Ranking Loss

Triplet Loss, Ranking Loss, Margin Loss

Triplet Loss, Ranking Loss, Margin Loss

對於負樣本,如果negative和anchor的具體大於m,那麼就可不用管了,直接=0,不用再費勁去優化了;正樣本就是postive和anchor的距離。

如果就是二分類,那麼也可以如下形式

Triplet Loss, Ranking Loss, Margin Loss

Triplet Ranking Loss

Triplet Loss, Ranking Loss, Margin Loss

easy triplets(簡單三元組): triplet對應的損失為0的三元組,形式化定義為d(a,n)>d(a,p)+margin,也就是負樣本的距離遠大於正樣本的距離。

hard triplets(困難三元組): negative example 與anchor距離小於anchor與positive example的距離,形式化定義為d(a,n)

semi-hard triplets(一般三元組): negative example 與anchor距離大於anchor與positive example的距離,但還不至於使得loss為0,即d(a,p)

Triplet Loss, Ranking Loss, Margin Loss

接下來的問題就是怎麼構造負樣本。

在triplet loss 中有如下的方式

Offline triplet mining

離線方式的triplet mining將所有的訓練資料餵給神經網路,得到每一個訓練樣本的編碼,根據編碼計算得到negative example與anchor和positive example之間的距離,根據這個距離判斷semi-hard triplets,hard triplets還是easy triplets。offline triplet mining 僅僅選擇select hard or semi-hard triplets,因為easy triplet太容易了,沒有必要訓練

Online triplet mining

-

batch all:

計算所有的valid triplet,對6hard 和 semi-hard triplets上的loss進行平均。

- 不考慮easy triplets,因為easy triplets的損失為0,平均會把整體損失縮小

- 將會產生PK(K-1)(PK-K)個triplet,即PK個anchor,對於每個anchor有k-1個可能的positive example,PK-K個可能的negative examples

-

batch hard:

對於每一個anchor,選擇hardest positive example(距離anchor最大的positive example)和hardest negative(距離anchor最小的negative example),

- 由此產生PK個triplet

- 這些triplet是最難分的

一些別名

在不同場景有不同的名字

Ranking loss

: 這個名字主要是在搜尋場景用,希望模型能能夠以一定順序rank item。

Margin Loss

: 這個則是希望用margin去代表距離 。

Contrastive Loss

Triplet Loss, Ranking Loss, Margin Loss

Triplet Loss

: 通常是3塔結構

Hinge loss

: 也是

max-margin objective

。 也是SVM 分類的損失函式。max{0,margin-(S(Q,D+)-S(Q,D-))}

WRGP loss

這個主要原理是認為隨機抽樣1000個

https://

gombru。github。io/2019/0

4/03/ranking_loss/

mountain blue:Triplet Network, Triplet Loss及其tensorflow實現

https://

medium。com/@gabrieltsen

g/intro-to-warp-loss-automatic-differentiation-and-pytorch-b6aa5083187a