【思考与讨论】Top-K推荐中两种考虑问题的方式

本文探讨了Top-K推荐中两种不同的处理方式:二分类问题和N分类问题。在二分类问题中,模型以二元交叉熵为代价函数,处理正负样本。而在N分类问题中,模型输出所有物品的交互概率,采用softmax函数。测试阶段,二分类通常采样负样本,而N分类则考虑所有物品。文章讨论了两种方法在模型训练、测试和实际应用中的差异。
摘要由CSDN通过智能技术生成

前言

在Top-K推荐,或者说召回中,似乎并没有统一的标准,例如K的选择、评价指标(HR、NDCG、MRR、MAP等)的选择,甚至是将其看作一个什么样的问题都有两种思考的角度,这对我的理解造成了不小的困扰(因为并没有接触过工业上真正的流程)。本文是我对上述问题的自己的讨论与理解,肯定有很多有错的地方,请多多指教。
本文约2k字,预计阅读10分钟。

正文

看过不少关于Top-K推荐(召回)的文章,最终目标都是得到Top-K个推荐物品,但是模型训练的过程中,看待问题却又两种方式:

  1. 模型的输入样本包含正样本、负样本,输出是用户与候选物品交互的概率(与CTR预测一样,看作一个「二分类问题」),一般采用二元交叉熵(Binary CrossEntropy)作为代价函数;

  2. 「模型的输入并没有候选物品」,只有描述用户的信息特征。以序列推荐为例,最简单的话输入只包含了用户历史发生交互的物品。经过若干层,最终通过softmax函数,输出得到用户与整个物品池的交互概率。可以把这个过程看作一个 分类问题」 代表物品集的总数),只是与图像分类问题不同,这里 特别大,因此代价函数并不是简单的分类交叉熵(Categorical Crossentropy);

接下来详细的描述在论文中两种方式的模型训练、测试。

二分类问题

将整个推荐问题看作二分类问题其实与CTR预估一模一样,不同的是在召回中的候选物品池比CTR预估要大得多。我以NCF、SASRec、attRec模型为例进行讨论。

模型训练

以下三个模型的最终输出都是对当前候选物品,用户是否交互的概率。NCF为经典的神经网络模型,SASRec、attRec为序列推荐模型。

「NCF」

NCF模型的结构如下:

模型输入:

  • 用户(id);

  • 目标物品(id),正样本或负样本;

经过用户embedding和物品embedding的交互(神经网络层),最终得到用户对当前物品 交互的概率。由于物品 可能是正样本,也可能是负样本,所以最终整个模型的损失函数(二元交叉熵)为:

其中 是正样本的集合, 是负样本的集合。对于负样本的采样,一般会随机选取用户未交互的物品,正负样本的比例为1:1。

「SASRec」

SASRec是一个序列推荐模型,模型结构为:

模型输入:

  • 用户的历史交互物品;

  • 目标物品(id);

与NCF唯一不同的是,SASRec通过用户的历史交互物品信息来抽象表示为用户的信息。抽象得到的用户信息与物品embedding进过交互(内积),得到对目标物品是否交互的概率,损失函数与上述相同:

正负样本的比例一般为1:1。

「attRec」

attRec也是一个序列推荐模型,模型结构如下:

模型输入:

  • 用户的历史交互物品;

  • 用户(id);

  • 目标物品(id);

序列embedding信息通过自注意力模块,得到用户短期兴趣的抽象表示,用户embedding信息作为用户的长期偏好表示,分别与物品embedding信息进行交互(内积),加权得到最终用户对目标物品是否交互的概率。

与SASRec模型不同的是,attRec采用对排序方法来学习模型参数,因此损失函数为:

模型测试

对于将推荐问题看作是二分类的模型,测试方法如出一辙,都是对于一个测试的正样本,然后随机选择100个负样本,通过模型预测,得到每个样本的交互概率进行排序,最终获得Top-K物品列表,选择HR、NDCG等指标衡量模型的性能。以下是SASRec论文的阐述:

To avoid heavy computation on all user-item pairs, we followed the strategy in [14], [48]. For each user u, we randomly sample 100 negative items, and rank these items with the ground-truth item.

对于选择100个负样本给出了解释---计算所有的用户-物品对,计算量太大。举例来说,对于

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值