Smooth-AP@学习笔记

smooth-ap

AP是信息检索任务的标准度量之一,它是一个单一值,定义为精确召回曲线下的面积,对于一个查询Iq,检索集中所有实例的预测相关性得分是通过一个选定的度量来度量的,它的思想就是在排序的时候,dataset中与query相似度高的排名要比与query相似度低的排名靠前。假设采用余弦相似度表示两个样本之间的相似度。
在这里插入图片描述
其中
在这里插入图片描述在这里插入图片描述
Sp和Sn分别表示正样本和负样本的相似度集合。
那么Iq的AP值既可以通过公式(2)计算得到:
在这里插入图片描述
如何计算呢?下面给出一个例子。
在这里插入图片描述第一行指的是label,与I相同就为1,与I不同就为0,显然,1/2和2/3的分子和分母分别表示,每一个正例在所有正例中的rank和在所有set里的rank(set包括正例和负例)(需要注意的是AP对排名靠前一定要是正例有很高要求,对排名靠后的正例并没有那么高的要求,比如,如果I1的相似度为0.65,那么AP=1/2(1/2+2/3),影响就很大)。
指的就是第i个实例分别在P和omiga中的rank
那么rank是如何得到的呢?论文中计算rank的公式(3):
在这里插入图片描述
1{·} 是一个指示函数,先由公式(4)计算一个差分矩阵:
在这里插入图片描述
那最终的AP计算公式就应该是:

在这里插入图片描述
其中:1{·} 是一个Heaviside函数,Heaviside阶跃函数定义如下:
H(x) = {(1, x>=0) | (0, x<0)
为了更好地理解AP计算的过程,下面看一个例子:
在这里插入图片描述
阶跃函数是不可微的,因为smooth-ap将指示函数用sigmoid函数替代。
在这里插入图片描述
τ控制着sigmoid代替指示函数1{·}的的范围,它定义了一个由Smooth-AP loss计算的差分矩阵的梯度的可操作区域(operation region),如果排列错误,Smooth-AP将尝试将它们转换到正确的顺序。τ越小,operation region将越小,τ越大,operation region将越大。如下图(b,c,d)
在第一行是指示函数,第二行是指示函数的梯度

那么smooth-ap的最终公式为:

在这里插入图片描述
损失函数为:
在这里插入图片描述

论文后面还解释了triple loss是指一种度量损失而不是排序损失


例如:
在这里插入图片描述计算triplet loss:
在这里插入图片描述
其一

所有项都是线性组合的,并在一组中平等地处理。这种替代损失可能会迫使模型优化那些对AP影响很小的项,例如优化s4−s1与优化三态损失中的s7−s4是一样的,但是,从AP的角度来看,重要的是要在高阶上纠正错误的实例。也就是说triplet loss优化距离,而不是rank。

其二:
线性导数意味着优化过程纯粹是基于距离(而不是排序顺序),这使得AP在评估时处于次优状态。例如,在triplet loss的情况下,将s4−s1的距离从0.8减小到0.5相当于从0.2减小到−0.1,因为距离没有变,但在AP中,排序是变了的。

猜你喜欢

转载自blog.csdn.net/qq_42316533/article/details/109117389