triplet loss 原理以及梯度推導

2021-09-17 20:41:13 字數 893 閱讀 2933

最近,learning to rank 的思想逐漸被應用到很多領域,比如google用來做人臉識別(facenet),微軟jingdong wang 用來做 person-reid 等等。learning to rank中其中重要的乙個步驟就是找到乙個好的similarity function,而triplet loss是用的非常廣泛的一種。

【理解triplet】

如上圖所示,triplet是乙個三元組,這個三元組是這樣構成的:從訓練資料集中隨機選乙個樣本,該樣本稱為anchor,然後再隨機選取乙個和anchor (記為x_a)屬於同一類的樣本和不同類的樣本,這兩個樣本對應的稱為positive (記為x_p)和negative (記為x_n),由此構成乙個(anchor,positive,negative)三元組。

【理解triplet loss】 

有了上面的triplet的概念, triplet loss就好理解了。針對三元組中的每個元素(樣本),訓練乙個引數共享或者不共享的網路,得到三個元素的特徵表達,分別記為: 。triplet loss的目的就是通過學習,讓x_a和x_p特徵表達之間的距離盡可能小,而x_a和x_n的特徵表達之間的距離盡可能大,並且要讓x_a與x_n之間的距離和x_a與x_p之間的距離之間有乙個最小的間隔。公式化的表示就是: 

對應的目標函式也就很清楚了: 

這裡距離用歐式距離度量,+表示內的值大於零的時候,取該值為損失,小於零的時候,損失為零。 

由目標函式可以看出:

當x_a與x_n之間的距離 < x_a與x_p之間的距離加時,內的值大於零,就會產生損失。

當x_a與x_n之間的距離 >= x_a與x_p之間的距離加時,損失為零。

【triplet loss 梯度推導】 

上述目標函式記為l。則當第i個triplet損失大於零的時候,僅就上述公式而言,有: 

triplet loss 原理以及梯度推導

前言 最近,learning to rank 的思想逐漸被應用到很多領域,比如google用來做人臉識別 facenet 微軟jingdong wang 用來做 person reid 等等。learning to rank中其中重要的乙個步驟就是找到乙個好的similarity function,...

triplet loss 原理以及梯度推導

前言 最近,learning to rank 的思想逐漸被應用到很多領域,比如google用來做人臉識別 facenet 微軟jingdong wang 用來做 person reid 等等。learning to rank中其中重要的乙個步驟就是找到乙個好的similarity function,...

人臉識別 如何訓練tripletloss

本篇 來自獵戶星空這家公司 位址 google的facenet採用800萬人,2億資料,每個batchsize為1800進行訓練。然而有用如此資料的公司少之又少。下圖展示了乙個當每一類人數與準確率的關係。可見當資料量缺乏的情況下,使用tripletloss不但不會提高,還會降低。如上圖所示 trip...