什麼是Triplet Loss?
在Triplet Loss中提到了三個實例,其一為a(anchor),其二為P(positive)即與a同類,其三為N(negative)即與a異類。該損失的本質是拉近與同類的距離,扯遠與異類的距離,更為強調兩個距離差。這樣會導致以下情況未被優化,a與p的距離很遠,但a與n的距離更遠。
以上所提到的距離可以是歐式距離,也可以是其他類型的距離,例如cos距離。將歐式距離換為cos距離後,公式如下:
為避免只強調距離差帶來的負面影響,可以加入regularization。從而使得同類的特徵方向性差異更小,異類的方向性差異更大。
疑問?
選取hard_positive和hard_negative的距離標準必須和loss中的距離標準保持一致嗎?
選擇三元的步驟1.Batchsize data特點:類別不同
特徵相似
將Input和positive輸入到模型中獲取其特徵,並記為features、p_features。將兩個特徵相乘,可以得到3個input樣本和12個樣本的特徵相似度,記為scores。將score按照行排序,記為rank。
循環rank的第i行第j列,在pos_labels中尋找與anchor_label不同的樣本,因為rank是將score排序獲取的,因此第一個類別不同的樣本為hard_negative。
3.Hard_positive特點:類別相同
特徵不相似
計算D(a,p) D(a,n)。Triplet loss 並不是直接衡量類別輸出與labels的差異性,而是更加側重同類特徵與異類特徵的差異性。因此比較適用於特徵區別微弱的數據。