Multi-Similarity Loss

通用pair对加权方案

参数是如何更新的?

\(x_i,x_j \in R^d\),分别表示两个样本的特征向量,且特征向量模长为1. 定义这两样本相似度为这两个特征的内积, 即\(S_{ij}=<x_i, x_j>\). 由于特征向量模长为1,因此内积便是余弦相似度。

考虑基于pair对的损失\(\mathcal{L}\), 是由相似度矩阵\(\mathbf{S}\)和标签\(\mathbf{y}\)所决定的.模型参数设为\(\theta\), 现在计算在t次迭代时(书写时省略t, 知道就行),损失\(\mathcal{L}\)关于参数\(\theta\)的梯度。

\[\frac{\partial{\mathcal{L}(\mathbf{S}, \mathbf{y})}}{\partial{\theta}} = \sum_{i,j} \frac{\partial{\mathcal{L}}}{\partial{S_{ij}}} \frac{\partial{S_{ij}}}{\partial{\theta}} \]

从这里可以看出梯度更新量中,\(\frac{\partial{\mathcal{L}}}{\partial{S_{ij}}}\)是参数\(\theta\)无关的,只有\(\frac{\partial{S_{ij}}}{\partial{\theta}}\) 才是参数\(\theta\)相关的。

  • \(\frac{\partial{S_{ij}}}{\partial{\theta}}\) 是由模型和样本对本身决定的。在一次迭代过程中,是由样本本身所决定的。
  • \(\frac{\partial{\mathcal{L}}}{\partial{S_{ij}}}\) 与参数无关相当于,权重系数

现在设想一下,如果上述权重系数都是1,那么会怎么样? 比如相似度很高的一个正样本与相似度很低的一个正样本对,都对参数更新产生相当的影响。这样合理吗?肯定是不合理。 因此需要设计一种权重方案,使得能通盘考虑所有样本的情况。容易的就降低权重,难得就加大权重。

难例挖掘

假设\(x_i\)是参考锚点

  • 负样本对筛选依据:

\[S_{ij}^{-} > \min \limits_{y_i=y_k} S_{ik} - m \]

就是找到与\(x_i\)同属同一类别样本对中相似度最小的那个,并且添加一个负的margin。然后从与\(x_i\)类别不同的样本中构建的负样本对中,找到大于刚才这个值的所有负样本对。这个集合用\(\mathcal{N_i}\)来表示。

  • 正样本对筛选依据:

\[S_{ij}^{+} < \max \limits_{y_i \neq y_k} S_{ik} + m \]

就是从与\(x_i\)类别不同的样本中构建的负样本对中,找到相似度最大的那个,并且添加一个正向的margin。再从与\(x_i\)同属相同类别正样本对,筛选出相似度比刚才值小的所有正样本对。这个集合用\(\mathcal{P_i}\)来表示。

梯度权重如何设计?

参考其它loss的设计,如下是一种权重设计方式。

负样本权重

\[w_{ij}^{-} = \frac{e^{\beta(S_{ij}-\lambda)}}{1+\sum\limits_{k \in \mathcal N_i} e^{\beta(S_{ik}-\lambda)} } \]

而这个权重可以通过下面函数求导得到的

\[log(1+\sum\limits_{k \in \mathcal N_i} e^{\beta(S_{ik}-\lambda)} ) \]

正样本权重

\[w_{ij}^{+} = - \frac{e^{-\alpha(S_{ij}-\lambda)}}{1+\sum\limits_{k \in \mathcal P_i} e^{-\alpha(S_{ik}-\lambda)} } \]

而这个权重可以通过下面函数求导得到的

\[log(1+\sum\limits_{k \in \mathcal P_i} e^{-\alpha(S_{ik}-\lambda)} ) \]

需要注意两点:

  • 关于指数部分,正样本权重有负号,负样本权重是正号。之所以如此是损失函数是求最小值,对于正样本相似度,是希望越大越好。反映在损失函数上是要添加一个负号。而负样本对则不需要这样。(不管是什么损失函数, \(\frac{\partial S_{ij}}{\partial \theta}\) 是一个梯度, 该梯度是朝着\(S_{ij}\)增加的方向走, 而目前计算框架,梯度更新默认是用负梯度更新,实现目标值下降。 但是对于正样本的相似度,我们是希望其不断增加的,因此添加一个符号来实现。对应负样本对则是相反,不需要添加一个符号)
  • 关于难例挖掘。选择了难例挖掘,那么有些负样本对或者正样本对,就不参与梯度的优化。那么如果一些超参设置不合理,是不是可能会把一些有意义的样本对排除,一些没有意义或者错误标注的样本,过于关注呢?

其它问题:

  • 超参如何设置,对效果又会产生多大影响吗?
posted @ 2025-02-10 21:50  星辰大海,绿色星球  阅读(152)  评论(0)    收藏  举报