• Circle Loss: A Unified Perspective of Pair Similarity Optimization


    Circle Loss: A Unified Perspective of Pair Similarity Optimization

    本文从一个统一的角度来看待 成对的 相似度 优化问题 (Pair Similarity Optimization),这个问题的目的是让不同类别之间的相似度 (S_n) 尽可能小,让同一类别的相似度 (S_p) 尽可能大;

    统一两类损失函数

    • 目前大部分的损失函数,以经典的粗分类损失函数 Softmax Cross Entrophy 和 细分类损失函数 Triplet Loss 为例子,其优化方法是可以统一起来用 (S_n)(S_p) 表示,然后去减小 ((S_n) - (S_p)), (S_n)越小,(S_p)越大,上式也就越小

    1. 粗分类代表:Softmax 交叉熵损失函数

    [operatorname{softmax}left(mathrm{y}_{i} ight)=mathrm{y}_{i}^{prime}=frac{e^{mathrm{y}_{i}}}{sum_{j=1}^{n} e^{mathrm{y}_{i}}} ]

    --------------------------------------------------------------------------------

    [H(p, q)=-sum_{x} p(x) log q(x) ]

    ---------------------------------------------------------------------------------

    [L_{ce}= -sum_{i} mathrm{y_i} log frac{e^{mathrm{y}_{i}}}{sum_{j=1}^{n} e^{mathrm{y}_{i}}} ]

    ---------------------------------------------------------------------------------

    softmax 交叉熵损失的特点:

    • 对于目标分数的梯度为 (p_y-1),为负数,
      • 梯度回传使得目标分数逐渐增加,与onehot中的 1 的差距越来越小
    • 对于非目标分数的梯度为 (p_i),为正数,
      • 梯度回传使得非目标目标分数逐渐减小,与onehot中的 0 的 差距越来越小
    • (p_y-1 =- sum_{i eq y}{p_i}),正样本的梯度与所有其他负样本的梯度之和是等值反向的
    • 所有的梯度之和为0,可以看到,回传的正负梯度是平衡的

    2. 细分类代表:Triplet Loss

    • 细分类相对于粗分类来说,其类别急剧增加;比如说人脸识别,就存在着好几十亿个类别,这样类别数就远大于特征的数目;这样子如果再使用softmax交叉熵来处理的话,对算力的需求就急剧增大了;而且softmax交叉熵在处理这类细微差别的效果也不好,因此就需要新的损失函数;
    • FaceNet提出了 triplet loss,其目的是构造了一个三元组,使得同一类别的差距尽可能小,然后不同类别的差距尽可能大

    [L_{triple} = max[d(x^a, x^+) - d(x^a, x^-) + margin, 0] ]

    当 L 趋向于0时,(d(x^a, x^+) < d(x^a, x^-)),也就是说,同一类样本的距离是小于其与不同样本的距离的,即,使得同一类别的相似度尽可能大,不同类别的相似度尽可能小;

    • (max(x, 0))函数又可以通过 (log(1+e^x))来拟合

    [L_{triple} = log (1+e^{d_p - d_n +m}) ]

    2.1 triple loss流程:

    image.png
    image.png
    image.png
    image.png


    3.两类损失的统一

    粗分类和细分类的损失是可以统一起来的,其统一的损失公式如下

    [egin{aligned} mathcal{L}_{u n i} &=log left[1+sum_{i=1}^{K} sum_{j=1}^{L} exp left(gammaleft(s_{n}^{j}-s_{p}^{i}+m ight) ight) ight] \ &=log left[1+sum_{j=1}^{L} exp left(gammaleft(s_{n}^{j}+m ight) ight) sum_{i=1}^{K} exp left(gammaleft(-s_{p}^{i} ight) ight) ight] end{aligned}]

    对于粗分类来说,softmax可以分解为:类内(onehot 为1的,只有一个) + 类外(某一类和其他类组成,N-1 个)

    再来看松弛变量 (gamma)(有的论文里面叫 温度 T),为什么需要 (gamma),举例说明:
    ------------------------------------------------------------------
    x = [1 2 3 4]
    softmax(x) = [0.0321 0.0871 0.2369 0.6439]

    从这个例子来看,本来1和4只差4倍,通过指数函数的放大作用,Softmax后的结果相差大约20倍。这样看,Softmax起到了近似 one-hot max 的作用,但 0.6439 其实也不算靠近1,近似效果不佳。
    -----------------------------------------------------------------
    x放大十倍
    x = [10 20 30 40]
    softmax(x) = [9.36e-14 2.06e-9 4.54e-5 1.00]
    ------------------------------------------------------------------
    x = [0.1 0.2 0.3 0.4]
    softmax(x) = [0.2138 0.2363 0.2612 0.2887]
    ------------------------------------------------------------------

    • 温度项控制着 Softmax 的 smooth 程度, (gamma) 越大,则 Softmax 越接近one-hot max, (gamma) 越小,则近似效果越差。那么只要我们引入这一项,并将 (gamma) 设置得足够大,是不是就能解决问题了呢?

    • 其实没那么容易,注意到这个 (gamma) 是施加在所有的分数 z 上的,所以这是对分数的一个线性变换,由于 z 本身就是通过一个内积层(全连接层)得到的,线性-线性还是线性,所以这个 (gamma) 在优化过程中会被融合进前边的内积层,只要进行充分的训练,是不会产生什么实际的影响的。

    • 于是就可以动态的设置 (gamma),根据当前分数 z 的大小动态地设置 (gamma) ,就像炼丹一样,随时把控火炉的温度,

    相似度加权,优化更加灵活

    1. 相似度加权

    • 当前的损失函数的优化是不灵活的,对于上面一点指出的 ((S_n - S_p)),损失进行梯度回传的时候对于 (S_n)(S_p) 的梯度是等值反向的;这就存在一个问题,(S_n)(S_p) 的优化不是完全同步的,也就说(S_n)(S_p) 分别与其各自的最优点的距离是不一样的
    • 因此,不能以完全相同的梯度对二者进行更新,离最优点近的应该要小火慢熬,离最优点远的应该大火猛煮
    • 于是,本文提出对 (S_n)(S_p) 进行加权,而其权重的大小是应该与他们和最优点的距离是成正相关的,也就是说,越接近最优点,其权重应该越小,对应回传的梯度也因为乘以了这个梯度变得更小;反之,其权重就应该越大,使得回传的梯度也越大;

    于是给每个相似度增加了一个权重 (alpha_n, alpha_p)

    [egin{aligned} mathcal{L}_{ ext {circle}} &=log left[1+sum_{i=1}^{K} sum_{j=1}^{L} exp left(gammaleft(alpha_{n}^{j} s_{n}^{j}-alpha_{p}^{i} s_{p}^{i} ight) ight) ight] \ &=log left[1+sum_{j=1}^{L} exp left(gamma alpha_{n}^{j} s_{n}^{j} ight) sum_{i=1}^{K} exp left(-gamma alpha_{p}^{i} s_{p}^{i} ight) ight. end{aligned}]

    其中

    [left{egin{aligned} alpha_{p}^{i} &=left[O_{p}-s_{p}^{i} ight]_{+} \ alpha_{n}^{j} &=left[s_{n}^{j}-O_{n} ight]_{+} end{aligned} ight.]

    与最优点的距离越近,这个权重就越小,与最优点的距离越远,这个权重就越大

    2. Margin

    • 对于没有权重的损失函数,(S_n)(S_p)是对称的,在(S_n)上附加一个正的margin 相当于 对 (S_p) 施加一个负的 margin,因此最后面就只需要一个margin就够了

    [egin{aligned} mathcal{L}_{u n i} &=log left[1+sum_{i=1}^{K} sum_{j=1}^{L} exp left(gammaleft(s_{n}^{j}-s_{p}^{i}+m ight) ight) ight] end{aligned}]

    • 而现在增加了权重后,(S_n)(S_p)就不是对称的了,因此这里需要2个margin

    [mathcal{L}_{c i r c l e}=log left[1+sum_{j=1}^{L} exp left(gamma alpha_{n}^{j}left(s_{n}^{j}-Delta_{n} ight) ight) sum_{i=1}^{K} exp left(-gamma alpha_{p}^{i}left(s_{p}^{i}-Delta_{p} ight) ight) ight] ]

    这个地方说 期望 (s_p^i > Delta_p)(s_n^i < Delta_n) 不明白;??????
    -------------------------------------------------------------

    • 以二分类为例,将权重代入统一的损失函数,可以得到:

      [left(s_{n}-frac{O_{n}+Delta_{n}}{2} ight)^{2}+left(s_{p}-frac{O_{p}+Delta_{p}}{2} ight)^{2}=C ]

      [C=left(left(O_{n}-Delta_{n} ight)^{2}+left(O_{p}-Delta_{p} ight)^{2} ight) / 4 ]

      是一个关于 (S_n),(S_p)的圆,这也就是为什么这篇文章叫做 circle loss的原因
      ---------------------------------------------------------
    • 可以看到,这样子 circle loss就存在5个超参数,太麻烦,于是作者进行了简化:
      (O_p = 1+m, O_n = -m, Delta_p = 1-m, Delta_n = m)
      于是,决策边界可以改为:

    [left(s_{n}-0 ight)^{2}+left(s_{p}-1 ight)^{2}=2 m^{2} ]


    Cicle Loss的优点:

    image.png

      1. Balanced optimization on (S_n), (S_p)
      • 如上图 A(S_n=0.8, S_p = 0.8),其中 (S_p)离最优点1已经很接近了,但是(S_n)离最优点0还有很远,
      • 而如图(a)所示,triplet loss 无论对(S_n)还是(S_p)的梯度都还很大,这是不应该的
      • 但circle loss,如图 (c) 所示,可以看到,c_左,(S_n)离最优点很远,其梯度很大;同时,c_右,(S_p)离最优点已经很近了,所以其梯度比较小,这是符合逻辑的
        --------------------------------------------------------
      1. Gradually-attenuated gradients
      • 一般的梯度在收敛前都基本保持不变,直到收敛时其梯度陡降,可以看到,图(a),triplet loss的决策面是几乎垂直的;而且B点相比与A点来说更加接近决策边界,但是他们优化时的惩罚力度是相同的,这也是不应该的
      • 而从图(c)来看,在初始远离最优点时其梯度比较大,然后慢慢接近最优点时其梯度是逐渐减低的
        ------------------------------------------------------
      1. A (more) definite convergence target
      • triple loss的决策边界是平行 (S_n - S_p=m)的,这样边界线上的任意一个点都可能被看作是最优点
      • 而circle loss 是圆形的分界面,其最优点就只有一个
        image.png

    消融实验

    1. 权重的加入,对不同的 (gamma),性能比较稳定
      image.png

    2. (S_p, S_n) 的变化
      image.png

    可以看到,circle loss的 (S_p)增加得比SM-softmax更快,最后的拟合效果也更好。

  • 相关阅读:
    网络编程基础
    面试题
    面试题合集
    异常
    三个重要的模块loggning,hashlib,configparse
    面向对象进阶
    单例模式
    反射
    封装
    开发规范
  • 原文地址:https://www.cnblogs.com/qiulinzhang/p/12661973.html
Copyright © 2020-2023  润新知