semi-triplet loss在線難分樣本選取深入理解

> 前言:在做REID任務的時候經常會用到triplet loss,後續我們常常會進行模型的優化,其中就包括難分數據的挖掘,也就是讓模型更加關注難分樣本。

兩種方式去實現:

1、離線的方式,就是在挑選樣本的時候進行,一種是在線的方式,其本質上就是在訓練的時候進行難分樣本的挑選,離線的方式更好實現一些,但是造成的後果就是不方便,每一個epoch結束時就要單獨就行計算

2、在線的方式直接就在訓練的過程中就進行處理了,所以現在大家都更青睞在線的訓練方式

在線難分樣本選取過程理解

使用trilet loss進行模型的搭建和數據的組織很好理解,和普通的分類網絡沒有任何的區別,就是定義好loss ,傳入每個batch的數據即可

但是在你理解 semi-triplet loss的時候需要注意的,這時候傳入的也是一個batch的數據,但是最終loss的計算不是考慮到batch中所有的數據,也就是說只有部分的難分數據參與了loss的計算,這也比較好解釋,我們在組織batch的時候沒有挑樣本,也就是說沒有刻意挑選難分樣本形成batch,那麼只能通過loss的定義來挑選了,可以達到一樣的效果,即模型在訓練的時候更加關注難分樣本,只有模型對難分樣本的區別能力增強了,loss纔會下降,因而模型會朝着loss下降的地方更新梯度,也就是說更新後的梯度參數對難分樣本的更爲適應(區分能力更強),這就達到我們的目的,更加關注難分樣本

所以通過上述的理解,我們可以認爲在難分樣本的挑選上,有兩個地方可以做文章,一是在輸入階段,挑選難分的輸入,二是在Loss定義方面,在損失函數中我們可以通過某種方式繼續寧難分樣本的在線選取。**

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