Circle Loss:统一 Softmax 与 Triplet 的圆形优化视角
论文题目:《Circle Loss: A Unified Perspective of Pair Similarity Optimization》
背景:两大范式的分歧
在深度学习领域,损失函数的设计一直是核心问题。主要分为两类流派,过去大家往往觉得它们逻辑迥异。
基于分类的学习 (Classification-based)
- 代表:Softmax, SphereFace, CosFace, ArcFace。
- 核心逻辑:优化样本和权重向量之间的相似性。
- 通俗理解:模型预先设立了多个类别(教室),每个类别有一个中心向量(班主任)。训练目标是让样本尽可能靠近自己的类中心,远离其他类中心。
- 公式特征:涉及 $x \cdot W$。
基于度量的学习 (Metric Learning / Pairwise Learning)
- 代表:Triplet Loss, Contrastive Loss。
- 核心逻辑:直接优化样本之间的相似性。
- 通俗理解:从数据中随机抓两个样本。如果是同类(正样本对),拉近距离;如果是不同类(负样本对),推远距离。
- 公式特征:涉及 $x_1 \cdot x_2$,没有固定的权重向量 $W$。
为什么要提这个?
在 Circle Loss 之前,业界普遍认为这是两套完全不同的逻辑:
- 用 Softmax 的人觉得 Triplet Loss 收敛太慢,采样麻烦(组合爆炸)。
- 用 Triplet Loss 的人觉得 Softmax 只能处理闭集,不够灵活。
Circle Loss 的核心贡献在于指出:别吵了,其实你们俩在数学本质上是一回事!
它认为 Triplet 其实就是把另一个样本当作临时的'中心',而 Softmax/ArcFace 则是把权重向量看作一种特殊的'样本'。它们的目标都是:最大化类内相似度 ($s_p$),最小化类间相似度 ($s_n$)。
1. 万物归一 —— 统一视角
Circle Loss 的第一步贡献,是建立了一个统一的 Loss 框架。作者敏锐地发现,无论是分类还是配对,本质目标都是最大化正样本分数,最小化负样本分数。
1.1 统一 Loss 公式
作者首先推导出了一个通用公式 $L_{uni}$ (Unified Loss):
$$ L_{uni} = \log \left[ 1 + \sum_{i=1}^K \sum_{j=1}^L \exp(\gamma(s_n^j - s_p^i + m)) \right] $$
其中:
- $m$:间隔(Margin)。
- $\gamma$:缩放因子(Scale Factor)。
- $s_n^j$:第 $j$ 个负样本对的相似度。
- $s_p^i$:第 $i$ 个正样本对的相似度。
这个公式的直观含义很简单:要在 Loss 最小化过程中,迫使 $(s_n - s_p)$ 越小越好。
1.2 计算量的'降维打击'
上面的公式有一个双重求和 $\sum \sum$,这意味着要计算所有正负样本的配对,计算量是 $O(K \times L)$。
利用指数运算法则 $e^{a-b} = e^a \cdot e^{-b}$,作者做了一个精彩的数学变换:
$$ L_{uni} = \log \left[ 1 + \underbrace{\sum_{j=1}^L \exp(\gamma(s_n^j + m))}{\text{负样本集合}} \cdot \underbrace{\sum{i=1}^K \exp(\gamma(-s_p^i))}_{\text{正样本集合}} \right] $$
这一步变换至关重要。它将复杂的'成对比较'解耦成了独立的'正样本组'和'负样本组'计算。这解释了为什么 Circle Loss 能够像 Softmax 一样高效训练,而不需要像 Triplet Loss 那样进行繁重的样本挖掘。

