深度嵌入學習“Sampling Matters in Deep Embedding Learning”

在檢索和驗證任務中,經常使用contrastive 損失或 triplet損失作爲損失函數,大多數論文也主要關注如何選取損失函數,這篇論文認爲訓練樣本的選取也很重要。提出了distance weighed sampling,選取信息量更大更穩定的訓練樣本。此外,提出了margin based loss,效果更好。

深度嵌入學習的一般流程:

先驗知識回顧

contastive損失:

三元損失:

對於contrastive損失,困難負樣本挖掘可以幫助更快收斂。但對於三元損失來說,困難負樣本易導致collapse。FaceNet提出了挖掘半困難負樣本的方法:給定anchor-positive對,在batch中,通過如下關係選擇負樣本:

Distance Weighted Margin-Based Loss

1.隨機挑選樣本的問題

在高維空間中,pairwise距離分佈趨向於正態分佈,這意味着如果均勻的選擇負樣本,容易獲得1.414以外的樣本,對於距離小的樣本就很少獲得。

2.只挖掘太困難負樣本的問題

Hard negative樣本通常離anchor的距離較小,這時如果有噪聲,那麼這種採樣方式就很容易受到噪聲的影響,從而造成訓練時的模型坍塌,困難負樣本的梯度方差較大,具有較小的信噪比。

3.distance weighted sampling

根據距離均勻的篩選樣本,及帶權值的篩選,爲避免選擇到噪聲樣本,再對篩選進行裁剪。最終,給定anchor樣本,距離加權的採樣通過下式採樣負樣本:

下圖顯示了不同方法採樣負樣本,距離的方差,可以看到提出的距離加權的採樣提供了較大距離範圍的樣本:

 

三元損失比對比損失好的原因:第一點,三元損失不需要預選的閾值去分割相同、不同的圖像,它更能適應outliers;第二點,三元損失僅需要正樣本距離比負樣本距離近,對比損失需要將正樣本聚合的越來越近。

對於三元損失來說,困難負樣本的梯度趨於0,梯度主要來自困難正樣本對,很少來自困難負樣本對,對於網絡訓練是沒有幫助的。使用真實距離值代替平方距離值將好點,這在上一篇博文中提到的論文也有提到,即:

論文提出的基於對比損失的改進損失爲,$\beta$定義了正例對距離與負例對距離之間的界限,如果正例對距離Dij大於$\beta$,則損失加大;或者負例對距離Dij小於$\beta$,損失加大:

這裏$\beta$是正負樣本的決策邊界,$\alpha$控制分割的邊距。下圖顯示了四種損失與距離的關係:

爲了同時使用三元損失的靈活性能,這裏使用較爲靈活的決策邊界$\beta$,beta(class)稱爲樣本偏置, beta(img)稱爲類別偏置,第一個beta(0)是人工定義的初始值,利用梯度下降,不斷調整beta(class)和beta(img)的值(就如同調整神經網絡的參數)以在訓練集上達到最優,這時能夠得到最優的beta(class)和beta(img)(每個類一個beta(class),每個樣本一個beta(img)):

爲了正則化$\beta$,引入超參數v,這裏類似於v-SVM中的技巧

實驗結果

不同樣本採樣方式的對比,在semi-hard採樣方法中,constrastive loss和triplet loss的性能類似,而如果使用隨機採樣,constrastive loss的性能要差很多(triplet loss不能隨機採樣),這其實反證了一個結論:triplet loss的性能不僅僅來自於其自身的函數結構,也與採樣方式有很大的關係。

與其他人臉識別方法的對比:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章