本文分享一篇发表在CIKM2022的关于一种推荐系统中检索模型的可定制损失函数,其将召回模型与Recall指标进行统一建模,并可以根据不同的检索规模进行自适应的优化。另外,其给出了所提出损失函数与其他经典损失函数(如交叉熵、成对损失以及三元组损失)的关系。
![9ba029f3ddf2eb8ee7b5c20749b7dd8d.png](https://i-blog.csdnimg.cn/blog_migrate/1aa008130f77cab9801d4e2c508166b6.png)
链接:https://arxiv.org/abs/2208.02971
在大规模推荐场景中,针对资源有限的情况下准确地检索出前N个相关的候选者是至关重要的。为了评估这类检索模型的性能,Recall@N,即在前N个排名中检索到的正样本的频率,其已被广泛使用。然而,大多数应用在传统检索模型的损失函数,如softmax交叉熵、triplet loss和成对对比损失,并不能直接优化Recall@N这一指标。此外,那些传统的损失函数不能针对每个应用所需的特定检索规模N进行定制,因此可能导致性能的提升是有限的。
假设商品是从用户-商品集合中提取的正样本,商品是用户𝑢的负样本集合。针对于分类任务的softmax 交叉熵损失函数如下:
![fc971f641927825f2e346e302b437b37.png](https://i-blog.csdnimg.cn/blog_migrate/86746d6e5c923de81520c8154cd27539.png)
针对于成对排序任务的bpr损失函数如下:
![8ad8bcb0d9988040ec762483b3b43a57.png](https://i-blog.csdnimg.cn/blog_migrate/1bf0eb1dc6022c3a9bb040ef65407100.png)
针对于包含边界的成对排序任务的triplet损失函数如下:
![b87fde62a6aaa9a320c3b3426b3eeaac.png](https://i-blog.csdnimg.cn/blog_migrate/6b00a86b43d2082e11cff42403152918.png)
然而,上述损失函数没有直接考虑召回指标的建模。针对以上问题,本文提出了一种可定制的Recall@N优化损失(ROLoss),其是一个可以直接优化Recall@N指标的损失函数,并且可以针对不同的𝑁进行定制。另外,所提出的CRLoss定义了一个更普遍的损失函数空间,涵盖了大多数传统的损失函数的特例。通过在两个公共基准数据集上评估CRLoss。结果表明,在两种数据集的检索规模N的不同选择下,CROLoss比传统损失函数取得了SOTA的结果。CROLoss已经被部署到在线电子商务广告平台上,为期14天的在线A/B测试表明,CROLoss带来了4.75%的业务收入的大幅增长。
本文基于被广泛使用的双塔召回模型作为其基本模型。
![c8fe0f934a5b0be88e872b01b52980fa.png](https://i-blog.csdnimg.cn/blog_migrate/2587641d7cb44738e4c066d82c8f870f.png)
在本文中,首先以成对样本比较的形式重写Recall@N指标(从公式5-7)。通过利用成对比较核函数𝜙,该目标函数被导出为可微的损失函数空间。
![8360630a023314f6df07e1b3956d99c1.png](https://i-blog.csdnimg.cn/blog_migrate/45c93e68db72e18d38c410a20879d732.png)
![3fcdc465c5518d6894db8346ae340f0a.png](https://i-blog.csdnimg.cn/blog_migrate/c4ac2785fbb5d7e7a641d3d3341cecaa.png)
![8cfebe5cc3b2d1d51e600cd8b2de52b7.png](https://i-blog.csdnimg.cn/blog_migrate/bf53366232424d4daced9f63509b5fdb.png)
另外还引入了一个权重函数,以允许此损失函数可定制为不同的选择𝑁。
![a7065843c036f9e6512bc9e0748ac693.png](https://i-blog.csdnimg.cn/blog_migrate/98ab8ce97098b1a16648fd0a7c698f57.png)
此外,可以证明,所提出的交叉损失函数空间涵盖了传统的交叉熵损失、三元组损失和bpr损失。
![887f5a6369562517d8c7f93b1dde3c0f.png](https://i-blog.csdnimg.cn/blog_migrate/faf106c857548d5b0527442ccdef9899.png)
![26d9346c8c64f7dd90913f3bdd41d61b.png](https://i-blog.csdnimg.cn/blog_migrate/66788c51883c2e30a97d22b690ce1336.png)
![ec38504bf5b86df0a3513db3d9ed6dc5.png](https://i-blog.csdnimg.cn/blog_migrate/0e80a3633db31a187bc7bd4838d1fb51.png)
此外,通过分析交叉损失的梯度,发现比较核函数𝜙起着两种不同的作用。
![ff999b76c14f8ef3d0b51e9f89dcc2e7.png](https://i-blog.csdnimg.cn/blog_migrate/256b4dd750a2b742ead02abac1dd7d45.png)
为了进一步改进这个损失函数,其开发了Lambda方法,这是一种基于梯度的方法,允许为这两个角色选择不同的内核𝜙1和𝜙2,并进一步提高系统性能。
![7fda4bba4b2f2eef12b578d120ae4ac0.png](https://i-blog.csdnimg.cn/blog_migrate/aee1b7c1aa6a5e586c8477ac505f180a.png)
以下为所提损失函数与交叉熵损失、三元组损失、bpr损失的实验对比结果。
![784dbc3fede686f12f96e9ea20181d9e.png](https://i-blog.csdnimg.cn/blog_migrate/8e2d983b35ca85a39832034f6ed232ed.png)