1. 程式人生 > >深度嵌入學習“Sampling Matters in Deep Embedding Learning”

深度嵌入學習“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的效能不僅僅來自於其自身的函式結構,也與取樣方式有很大的關係。

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