当前位置:   article > 正文

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

top-k推荐系统

前言

在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个负样本给出了解释---计算所有的用户-物品对,计算量太大。举例来说,对于

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/737597
推荐阅读
相关标签
  

闽ICP备14008679号