关注我们,提升效率
title:Show Me the Whole World: Towards Entire Item Space Exploration for Interactive Personalized Recommendations
link:https://arxiv.org/pdf/2110.09905.pdf
from:WSDM 2022
1. 导读
EE是推荐系统中不变的话题,我们需要通过探索用户的兴趣来避免进入闭环,增加推荐系统的多样性和个性化,因此需要在探索和利用之间做权衡。
本文提出了两种简单高效的分层 Contextual bandit (CB)算法,使得经典的CB方法,如linUCB和汤普森采样可以用于整个商品空间,而不是小型商品集合。首先,通过自底向上的聚类来构建一颗分层树;然后,通过分层CB(HCB)算法来探索用户的兴趣。
总体思路:通过聚类将不同商品聚类,然后根据相似度构建树,最后通过经典的MAB算法进行树的遍历和参数跟新。通过聚类将大型商品空间缩小,从而使得整个算法可以在整个商品空间中应用。
2. 基础与问题
推荐系统可以被看做是一个智能体,包含M个用户和N个商品。每一轮迭代t=1,2,...,T,给定用户u智能体根据策略π推荐一个商品
,然后从用户那得到反馈,比如,如果用户对其进行点击,则
,否则为0。最优策略表示为
,目标就是学习到一个策略使得累积遗憾最小,公式如下,由于现实中没有最优策略,因此将公式改写为最大化累积奖励
。
bandit算法的核心是在利用(完全基于从用户交互历史中学习的用户资料进行推荐)和探索(找出用户可能更喜欢的新项目)之间找到最佳权衡,从而使用户多样化新的兴趣有一定的机会暴露,同时系统不会在用户不感兴趣的项目上浪费太多资源。以用户为中心的算法LinUCB为例,每个商品看作是一个手臂,在第t轮,当接收到用户请求,智能体通过下式选择一个手臂
,
LinUCB的策略π是特征向量
和可学习参数θ之间的线性函数,
,其中η是高斯随机变量,表示噪声。上界Ca衡量奖励估计的不确定性。参数θ和上界C的计算公式如下,其中Dt是直到t时,交互臂的特征矩阵,α是超参数,r_t是直到t时的用户响应向量。
如LinUCB选择商品的公式所示,LinUCB 需要枚举和计算每个臂的分数,然后选择最好的一个。在现代推荐系统中,商品的数量通常非常大(数百万甚至数十亿),这使得无法计算所有商品的分数。因此,现有的典型设置是在时间𝑡从整个𝑁臂中随机抽取少量𝐾(例如50个)臂,并在这个小臂集A𝑡上执行LinUCB;在行业中,bandit算法只能应用于候选池较小的场景,例如推荐系统的post-ranking阶段、首页热门item排名、广告创意排名等。为了充分挖掘用户潜在的兴趣,最好将bandit模块放在推荐系统的项目检索阶段(也称为召回阶段),其中候选池是整个商品集。否则,在推荐系统的排名后阶段,候选者实际上是由推荐模型提出的,并且与用户过去的行为密切相关。因此,在推荐系统的后期阶段探索用户的兴趣意义不大。
为了解决上述问题,本文作者提出HCB在整个商品空间中做探索。所提的框架1的总体思路:基于树的探索。整个商品集可以组织为一个层次树结构 H,其中节点链接到共享一些共同主题或用户兴趣的商品子集,并且从上到下移动的节点反映了主题/兴趣分区正在从粗到细。在基于树的探索过程中,首先根据某种机制选择一个节点,然后从链接到该节点的候选中选择一个商品。用户对所选项目的反馈不仅会更新item-wise的用户偏好估计,还会沿着层次路径更新node-wise的用户偏好估计。
3. 方法
由于不同类别下的商品数不平衡,并且缺乏对用户集体行为的利用,简单地使用类别分类法可能会导致性能不理想。因此,首先基于物品内容和用户点击行为学习商品的embedding,然后设计一种基于K-Means聚类算法的自下而上的聚类方法,形成用于对物品之间的依赖关系进行建模的层次树。具体来说,为了构建具有 𝐿 层的树结构,
个不同的子集。将每个子集视为树上的一个新节点,节点的embedding是属于该节点的所有商品embedding的均值。
个节点将使用 K-Means 进一步聚类为
个不同的子集,每个子集将被视为树上的一个新节点,形成父子关系。
本文所提方法可以与原有的经典bandit算法相结合的,使其可以在整个商品空间中进行探索,这里以LinUCB为例。
HCB有两种类型的臂:层次树 H 上的节点和叶节点的商品。H 上的每个节点代表一组商品。叶节点的特征向量是其上的商品的平均池化,非叶节点的特征向量是其子节点特征向量的平均池化。HCB 算法按顺序做出决策,从根节点开始到叶节点。在第 𝑙 层的任何非叶节点
,策略 𝜋 通过假设手臂的预期回报是线性的,从
中选择一个子节点它的特征向量是
,θ是可学习参数,𝑫 是由在第 𝑙 层交互的商品组成的矩阵,𝑫的每一行代表一个商品的特征向量。θ的计算公式如下,其中
是单位阵,r是在第
层的历史奖励。
令
,则其上界计算方式如下,可以发现整体的公式和原始的LinUCB是类似的。
如果给用户推荐
后获得奖励
,那么从root到
路径上的所有节点都获得奖励r,然后可以给每一层的节点对应的参数
进行更新,其中
表示商品臂,其他的
表示节点臂。更新方式可以写成下式,其中A被初始化为单位阵,b被初始化为0向量,X是embedding。
伪代码如下,以图1为例,它在层次结构树中有三层。agent依次做出三个决策,最后选择路径{𝐴,𝐶,𝐼,𝑃}。然后agent将在叶节点𝑃的商品中启动另一个多臂老虎机选出需要的商品。所选的商品对应的奖励将通过更新奖励历史
影响层次树上的参数θ估计和交互历史
。
HCB通过顺序决策过程了解每个用户的兴趣,并且总是从到达的叶子节点中选择项目,这可能会导致两个问题:
感受野定义:感受野是一组个性化的节点,代表每个用户探索的当前潜在兴趣。在第一轮,感受野只包含根节点(或者根据先验知识得到的集合),随着探索过程的进行,当以自适应自上而下的方式满足预定条件时,感受野将扩大(和缩小)。感受野中的节点称为可见节点。
在 HCB 中,只有叶节点与一组商品相关联。相比之下,在 pHCB 中,允许策略选择一个非叶节点,然后从与该非叶节点关联的商品集中推荐一个商品。以下定义来定义每个非叶子节点包含的商品集合。
定义:给定非叶子节点n和其子节点ch(n),n的商品集合是所有子节点的商品集合的并集。
在第 𝑡 轮,智能体对用户 𝑢,其感受野表示为 V𝑢 (𝑡)。pHCB 算法将 V𝑢 (𝑡) 中的每个节点视为一个臂,并选择具有最高估计奖励的臂(n(t))。然后使用 LinUCB 算法从选定的𝐼(𝑛(𝑡))(n(t)包含的商品集合) 中选择一个商品 𝑖𝜋 (𝑡) 并收集用户的反馈。pHCB 直接从感受野中选择一个手臂,无需执行顺序决策过程,避免了上述 HCB 的担忧。
伪代码如下所示,以图2为例,假设在
轮,用户𝑢的感受野由三个节点组成:𝐵、𝐶和𝐷。在接下来的几轮中,如果节点𝐶被多次选中并获得多个正奖励,使其满足扩展条件,则其子节点𝐺,𝐻,𝐼将被添加到感受野中以替换𝐶。结果,在回合
,感受野包括节点𝐵,𝐷,𝐺,𝐻,𝐼。通过这种方式,pHCB 将感受野从粗到细扩展,逐步发现用户的兴趣。
pHCB的一个关键机制是如何扩大感受野。由于树节点以不同的粒度组织,顶层节点代表用户粗略的兴趣,而底层节点描述用户的具体兴趣。希望感受野能够快速收敛到叶子节点,因此设置扩展条件如下:对于H的第𝑙层的非叶子节点𝑛,如果
𝑞 和 𝑝 是超参数。log𝑙表示顶层的节点比底层的节点更容易扩展。也可以根据实际应用场景设计更灵活的扩展规则。
4. 实验
累积奖励对比
将本文所提树方法与经典探索方法结合的对比,可以发现都有明显提高。