Triplet Loss/zh

    From Marovi AI
    This page is a translated version of the page Triplet Loss and the translation is 100% complete.
    Other languages:
    Article
    Topic area Deep Learning
    Prerequisites Embeddings, Loss Functions, Stochastic Gradient Descent, Convolutional Neural Networks


    概述

    三元組損失是一種損失函數,用於訓練能夠產生向量嵌入的模型,使得語義相似的輸入在嵌入空間中彼此靠近,而不相似的輸入彼此遠離。它作用於由三個樣本組成的三元組(一個錨點、一個與錨點同類的正樣本以及一個不同類的負樣本),並在負樣本與錨點的距離比正樣本與錨點的距離近不到固定的間隔時對嵌入進行懲罰。三元組損失最初因 FaceNet 系統在人臉識別中的應用而流行,[1]如今已成為度量學習中的標準工具,被廣泛用於圖像檢索、行人重識別、簽名驗證、音頻相似度以及信息檢索中的稠密段落檢索

    與使用交叉熵損失的分類式訓練(將每個輸入分配到固定的類別索引)不同,三元組損失直接塑造嵌入空間的幾何結構。這使其非常適合開放集問題,即推理時所遇到的類別集合在訓練時並不已知,例如識別在訓練中從未見過的人臉。

    直觀理解

    考慮一個將輸入 $ x $ 映射向量 $ f(x) \in \mathbb{R}^d $ 的模型,該向量通常通過 $ L^2 $ 歸一化被約束在單位超球面上。一個三元組 $ (a, p, n) $ 由以下三部分組成:

    • 一個取自某一類別的錨點 $ a $
    • 一個與錨點取自同一類別的正樣本 $ p $,以及
    • 一個取自不同類別的負樣本 $ n $

    我們希望錨點的嵌入與正樣本的距離小於其與負樣本的距離。三元組損失並非僅作為一種排序約束施加這一要求,而是作為一種間隔條件:正樣本必須比負樣本至少近上某一數量 $ \alpha > 0 $。若沒有間隔,可以通過將所有嵌入塌縮到同一點來平凡地滿足損失,因為任何非零的距離差都足以滿足條件。間隔以有限的數量將負樣本推遠,並賦予損失明確的幾何尺度。

    形式化表述

    $ d(\cdot, \cdot) $嵌入空間上的一種距離,最常見的是對經過 $ L^2 $ 歸一化的嵌入所計算的歐氏距離平方。單個三元組上的三元組損失

    $ {\displaystyle \mathcal{L}(a, p, n) = \max\bigl(0,\; d(f(a), f(p)) - d(f(a), f(n)) + \alpha\bigr).} $

    由此產生兩種情形。當 $ d(f(a), f(p)) + \alpha \le d(f(a), f(n)) $ 時,損失為零且梯度消失:三元組已經滿足約束,對學習不產生貢獻。否則損失嚴格為正,將錨點拉向正樣本,同時將其推離負樣本。由於嵌入通常被約束在單位球面上,歐氏距離平方與餘弦相似度之間僅相差一個仿射變換,因此三元組損失可以等價地用內積的形式書寫。

    小批量上的總目標是所選三元組集合上各三元組損失的平均(或求和)。如何選好這些三元組是核心的實際問題。

    三元組挖掘

    均勻隨機地採樣三元組的樸素方法在計算上是浪費的:隨著訓練的推進,大多數隨機三元組已經滿足間隔條件,產生的梯度為零。這促使了三元組挖掘——即有針對性地選擇具有信息量的三元組的做法。

    在包含 $ B $嵌入小批量內通常區分以下三種情形:

    • 簡單三元組滿足 $ d(a, p) + \alpha < d(a, n) $。損失為零,無學習信號。
    • 困難三元組滿足 $ d(a, n) < d(a, p) $。負樣本比正樣本更接近錨點:會產生很強的梯度,但這類三元組往往對應於標籤噪聲或極端離群值,可能使訓練不穩定。
    • 半困難三元組滿足 $ d(a, p) < d(a, n) < d(a, p) + \alpha $。正樣本比負樣本更接近,但差距不足;損失為正但有界。

    FaceNet 引入了在線半困難挖掘:對批次中的每個錨點,選取最難的半困難負樣本。這種做法產生穩定的梯度,被廣泛認為是使三元組損失得以在大規模上實用化的關鍵配方。批次困難挖掘[2]最初為行人重識別提出,則改為對批次中的每個錨點選取最難的正樣本和最難的負樣本。這種方法需要謹慎處理(如課程學習、熱身階段或使用Adam等魯棒的優化器),但在許多任務上能得到更強的嵌入。挖掘策略可以是在線的(根據當前批次實時計算)或離線的(在整個數據集上預先計算)。

    訓練與推理

    訓練通過對 $ f $ 進行反向傳播來完成。典型的批次構造方式是採樣 $ P $ 個類別,每類 $ K $ 個樣本,從而得到 $ B = PK $嵌入$ O(B^2) $ 個候選成對距離;這種 $ P\!\times\!K $ 採樣器是批次困難挖掘的標準搭配。間隔 $ \alpha $ 是一個超參數;當嵌入被單位歸一化時,常用取值範圍為 $ [0.1, 0.5] $。嵌入幾乎總是經 $ L^2 $ 歸一化,這樣既可使損失有界,也因為餘弦幾何往往比無約束的歐氏幾何更為穩定。

    在推理階段,模型僅作為嵌入函數使用:兩個輸入之間的相似度通過 $ d(f(x_1), f(x_2)) $ 計算,下游任務(驗證、檢索、聚類)直接使用該距離。無需softmax頭。

    變體與相關損失

    若干損失對三元組目標進行了泛化或改進:

    • 對比損失,[3]作為其歷史前身,作用於樣本對而非三元組,並對相似對和不相似對設定固定的目標距離。
    • N 對損失[4]在單個softmax式目標中將一個正樣本與多個負樣本進行比較,提高了樣本效率。
    • 四元組損失增加了第二個負樣本項,以更大的間隔強制類內距離小於類間距離。
    • 提升結構化損失聯合考慮批次內所有樣本對,通過平滑的 log-sum-exp 進行加權。
    • 角度損失將歐氏距離替換為基於角度且對尺度不敏感的約束。
    • 多重相似性損失圓損失通過自相似性和相對相似性對樣本對加權進行了泛化。
    • InfoNCE及其他對比學習目標與三元組損失關係密切:當只有一個正樣本和多個負樣本時,InfoNCE 的行為類似於帶溫度的軟化 N 對損失。

    比較

    三元組損失最常被拿來與基於分類的嵌入學習進行比較。諸如 ArcFaceCosFace 等方法訓練一個顯式分類器,並在softmax的對數概率上施加角度間隔,無需顯式三元組採樣就能憑經驗得到強大的人臉嵌入。這類方法完全規避了挖掘問題,但訓練時需要固定的類別集合,並且當身份數量非常龐大時擴展性不佳。三元組損失則與身份無關,能自然地擴展到開放集問題,但需要謹慎的挖掘策略,並且對間隔和學習率較為敏感。

    與成對的對比損失相比,三元組損失通常在樣本效率上更高,因為每個三元組在一次更新中同時編碼了吸引和排斥。與 InfoNCE 風格的對比目標相比,三元組損失具有更銳利的間隔幾何,但當負樣本未被精心選擇時往往不太穩定。

    局限性

    三元組損失的主要實際困難在於:一旦間隔條件被滿足,梯度信號便消失,這使得未經篩選的採樣效率低下。這正是必須採用挖掘策略的原因。困難挖掘可能放大標籤噪聲:單個被錯誤標註的正樣本會成為許多錨點的最難配對,從而主導訓練。該損失對間隔、嵌入範數以及批次構成都很敏感;糟糕的 $ P, K $ 採樣器可能產出完全沒有有用三元組的批次。最後,儘管該損失直接優化的是一種排序式目標,卻並未在整個數據集上對距離進行顯式校準,因此用於驗證的絕對閾值必須在留出驗證集上事後確定。

    參考文獻

    1. Template:Cite arxiv
    2. Template:Cite arxiv
    3. Hadsell, Chopra, and LeCun, "Dimensionality Reduction by Learning an Invariant Mapping", CVPR 2006.
    4. Sohn, "Improved Deep Metric Learning with Multi-class N-pair Loss Objective", NeurIPS 2016.