对比表示学习必知的几种训练目标
對比學習的主要思想就是相似的樣本的向量距離要近,不相似的要遠.對比學習在有監督/無監督場景下都取得了非常亮眼的成績,所以是我們煉丹的必備知識.早期的對比學習是只有一個正樣本和一個負樣本進行對比,最近的訓練目標變成了一個batch內多個正/負樣本進行訓練.
Contrastive Loss
有一系列樣本{xi},它們的label yi = {1, ..., L}, L類,還有個函數f將樣本xi映射成embedding,有著相同yi的樣本有著相似的embedding, 因此對比學習loss定義如下:
Triplet Loss
Triplet loss大家應該并不陌生,最早出現在FaceNet的論文里,這篇論文主要學習人臉表達,需要同一個人在不同角度位置的表達都很相近.
定義一個錨點(anchor) x,有個正例x+和一個負例x-,所以目標函數就是要最小化x和x+的距離,最大化x和x-的距離,定義如下所示:
Lifted Structured Loss
該loss為了更好的計算效率,充分利用了一個batch內所有pairwise的邊.
Dij = || f(xi) - f(xj) ||2, Loss函數定義如下:
紅色部分是為了挖掘hard負樣本,但是不是很平滑,難收斂,因此可以改為下式:
N-pair Loss
在負樣本同時有多個的時候,{x,x+, x1-, ..., x(N-1)-},包含1個正樣本和N-1個負樣本,N-pair loss定義如下所示:
NCE
NCE本身是統計模型做參數估計的方法,思想就是用羅杰斯特回歸來區分數據和噪聲.非噪聲樣本的概率用P表示,噪聲樣本的概率用q表示,如下所示:
所以NCE的loss函數定義如下:
我們看到NCE loss只對一個正樣本和一個噪聲樣本生效.
InfoNCE
受到NCE的啟發,InfoNCE使用了交叉熵損失,用在一個正樣本和一系列噪聲樣本上.給定一個上下文環境c,我們可以得到條件概率p(x|c),N-1的負樣本直接從概率分布p(x)提取,獨立于c. 我們有個樣本集合X = {xi},i=1~N, 其中只有一個正樣本x_pos, 我們能得到下式
f(x,c)就是模型的打分函數,所以InfoNCE loss優化log loss,如下式:
Soft-Nearest Neighbors Loss
該loss擴展到包含多個正樣本,假設有個batch {xi, yi} i = 1~B, 該loss會有個溫度系數控制,如下所示:
溫度τ用于調整特征在表示空間中的集中程度。例如,當溫度較低時,損失主要是由小距離造成的,而大范圍分離的表示不能起到很大作用。
總結
以上是生活随笔為你收集整理的对比表示学习必知的几种训练目标的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 召回:是塔,是塔,但不是双塔!
- 下一篇: 对比学习必知要点