深度度量学习中的排序列表损失.

给定数据集\(\{(x_i,y_i)\}\),深度度量学习通过深度神经网络$f_{\theta}(\cdot)$把原始样本$x$映射到低维特征空间,并设计合理的度量损失使得同类样本在特征空间上的距离比较近,不同类样本之间的距离比较远;从而可以近似实现不同样本的相似度评估。对于输入样本$x$ (称为anchor样本),需要合理地选择正样本(相似样本)和负样本(不相似样本)。

目前常用的深度度量损失大多通过加入更多的负样本来获得结构化的信息,但是使用的负样本仅仅是一小部分;另外这些损失函数没有考虑类内的数据分布,都追求将同一个类别的样本压缩到一个点上。本文提出了Ranked List Loss,希望负样本对的距离大于某个阈值$\alpha$,并且正样本对的距离小于$\alpha-m$,即正负样本之间至少有$m$的间隔,相当于使得同一类别位于一个半径为$\alpha-m$大小的超球体内:

\[\Bbb{I}(y_i=y_j) \max(0,D[f_{\theta}(x_i),f_{\theta}(x_j)] - (\alpha-m)) \\ + \Bbb{I}(y_i\neq y_j) \max(0,\alpha- D[f_{\theta}(x_i),f_{\theta}(x_j)])\]

对样本进行合适的采样可以加快模型的收敛速率和提高模型性能。Ranked List Loss使用的采样策略是选择损失函数不为$0$的样本,具体来说,对于正样本损失函数不为$0$意味着它们与anchor之间的距离大于$\alpha-m$;对于负样本损失函数不为$0$意味着它们与anchor之间的距离小于$\alpha$。

给定anchor样本$x_i^c$后基于相似度对其他样本进行排序,然后选择$N_c-1$个距离大于$\alpha-m$的正样本和$N_k$个距离小于$\alpha$的负样本,通常$N_k>N_c$,即负样本集的样本数量比较大,因此在损失函数中对每个负样本使用加权的方式:

\[\frac{1}{N_c-1} \sum_{j=1}^{N_c-1} \max(0,D[f_{\theta}(x_i),f_{\theta}(x_j)] - (\alpha-m)) \\ + \sum_{j=1}^{N_k} \frac{w_{ij}}{\sum_{j=1}^{N_k}w_{ij}} \max(0,\alpha- D[f_{\theta}(x_i),f_{\theta}(x_j)])\]

其中权重$w_{ij}$设置为:

\[w_{ij} = \exp(T \cdot (\alpha - D[f_{\theta}(x_i),f_{\theta}(x_j)]))\]