以下内容纯属个人见解,欢迎大家交流。
发布于2020 WSDM
1 motivation
1.1 问题
推荐系统采用会话技术来动态获取用户偏好,并克服静态模型的固有限制。一个成功的会话推荐系统(CRS)需要正确处理会话和推荐之间的交互。我们认为有三个基本问题需要解决:
1)关于物品属性要问什么问题,
2)什么时候推荐物品,
3)如何适应用户的在线反馈。
特别是,我们认为CRS模型应该固有地采用多轮设置:CRS会根据用户的点击记录(如果有的话)与用户对话,并推荐产品。在每一轮中,CRS被允许选择两种类型的行动——要么明确询问用户是否喜欢某个道具属性,要么推荐一系列道具。在一个会话中,CRS可能会在这些操作之间多次交替,其目标是找到想要的道具,同时最小化交互的数量。由于CRS需要对其行动进行战略规划,因此这种多轮模式比单轮模式更具挑战性。在我们看来,执行这种计划的关键在于会话组件(CC;负责与用户交互)和推荐组件(RC;负责估计用户偏好——例如,生成推荐列表)。我们将CC和RC之间的深层互动的三个基本问题总结如下:
- 问什么属性?CRS需要选择向用户询问哪个属性。例如,在音乐推荐中,它可能会问“你想听古典音乐吗?”,期望二进制的yes/no响应1。如果答案是“是”,它可以专注于包含属性的项目,减少项目排名的不确定性,有利于RC。然而,如果答案是“否”,CRS花费了一个对话转向较少的收益RC。为了实现在更少的回合中击中正确的道具的目标,CC必须考虑用户是否会喜欢所询问的属性。这正是RC的工作,它仔细检查用户的历史行为。
- 什么时候推荐商品?在有足够的确定性的情况下,协调委员会应推动委员会提出的建议。推荐的最佳时机应该是:1)候选人空间足够小;当2)从信息获取或用户耐心的角度来看,附加问题被认为是不那么有用或有用的;3)当RC确信顶级推荐将被用户接受时。决定适当的时间应该考虑到CC的会话历史和RC的偏好估计。决定适当的时间应该考虑到CC的会话历史和RC的偏好估计。
- 如何适应用户的在线反馈?在每个回合后,用户会给出反馈;例如,“是”/“否”查询属性,或“接受”/“拒绝”推荐的项目。(1)对于属性上的“yes”,需要更新用户配置文件和候选项,以产生更好的推荐;这需要离线RC培训来考虑这些更新。(2)对于“否”,CC需要相应地调整策略。(3)如果推荐的项目被拒绝,RC模型需要更新,以纳入这样一个负信号。虽然调整似乎只影响RC或CC,我们表明这样的行动影响两者。
针对CC和RC之间的深度交互,我们提出了一个名为评估-行动-反射(EAR)的新解决方案,它包括三个阶段。请注意,这些阶段不一定与上面的每个问题都一致。(a)估计,即离线建立预测模型来估计用户对物品和物品属性的偏好。具体来说,我们使用用户配置文件和项目属性作为输入特征来训练一个因数分解机器(FM)。我们的估计阶段建立了两个新的进展:1)FM在项目预测和属性预测两个任务上的联合优化,2)在线用户属性反馈会话数据的自适应训练。(b)行动,学习对话策略,决定是询问还是推荐,以及询问的属性。我们通过强化学习训练策略网络,基于调频对用户偏好项目和属性的估计,以及对话历史,优化短转弯和成功推荐的奖励。(c)反思,根据用户的在线反馈调整CRS。具体来说,当用户拒绝推荐的项目时,我们通过将项目视为负面实例并在线更新FM来构建新的训练三元组。
1.2 解决方法
在本工作中,我们通过提出一个名为Estimation-Action-Reflection(或EAR)的新的CRS框架来填补这个缺失的交互框架的空白,该框架由三个阶段组成,以更好地与用户进行对话。
(1)估计,即建立预测模型来估计用户对物品和物品属性的偏好;
(2)动作,根据“估计”阶段和对话历史,学习对话策略来决定是询问属性还是推荐物品;
(3)反射,当用户拒绝Action阶段提出的建议时,它更新推荐模型。
2 模型介绍
EAR由推荐和会话组件(RC和CC)组成,它们在三个阶段的会话过程中紧密地相互作用。系统开始工作在估计阶段的RC为用户排名候选项目和项目属性,以便支持CC的行动决定。在评估阶段,系统将行动阶段CC决定是否选择一个属性来问,或者根据排名后的候选人和属性,以及对话历史进行推荐。如果用户喜欢RC询问的属性,CC将这个属性反馈给RC,以便再次进行新的估计;否则,系统将停留在操作阶段:更新对话历史并选择另一个操作。一旦一个建议被用户拒绝,CC将被拒绝的项目发送回RC,触发RC调整其估计的反射阶段。之后,系统再次进入评估阶段。
重要的是,与传统的推荐方法不同[17,30],这里的RC需要充分利用用户喜欢的属性,以准确预测用户的首选项和首选属性。这两个目标对EAR产生了积极的影响,第一个目标直接有助于推荐成功率,第二个目标引导CC选择更好的属性来询问用户,从而缩短对话。接下来,我们首先介绍推荐方法的基本形式,然后详细介绍如何调整我们提出的方法来同时实现这两个目标。
2.1 Estimation
2.1.1 Attribute-aware BPR for Item Prediction
2.1.2 Attribute Preference Prediction
2.2 Action
在评估阶段之后,行动阶段找到何时推荐的最佳策略。我们采用强化学习(RL)来解决这一多轮决策问题,旨在在更短的回合数中完成成功的推荐。值得注意的是,因为我们的重点是会话推荐策略,而不是流利的对话(语言部分),所以我们使用模板作为包装来处理用户话语和系统响应生成。也就是说,由于我们没有把语言理解和生成的错误包括在内,这项工作是对实际应用的上限研究。
2.2.1 State Vector
状态矢量是混凝土与混凝土相互作用的桥梁。我们将来自RC和对话历史的信息编码为一个状态向量,提供给CC来选择动作。状态向量是由四个分量向量串联而成的,它们从不同的角度对信号进行编码
1 该向量对当前候选项的属性中每个属性的熵信息进行编码
2 这个向量对每个属性的u偏好进行编码
3 这个向量对会话历史进行编码
4 这个向量对当前候选列表的长度进行编码
2.2.2 Policy Network and Rewards
对话行为由CC中的策略网络选择。为了证明我们设计的状态向量的有效性,我们特意选择了一个简单的策略网络——一个二层多层感知器,它可以用标准策略梯度方法进行优化。它包含两个完全连接的层,并将状态向量映射到动作空间。输出层通过softmax被归一化为所有动作的概率分布。在动作空间方面,我们沿用前面的方法,该方法包括所有属性和一个专门的动作来推荐。
当CC在每个回合采取行动后,它将从用户(或用户模拟器)那里获得即时奖励。这将指导CC学习优化长期回报的最优策略。在EAR中,我们设计了四种奖励
2.3 Reflection
此阶段还实现了CC和RC之间的交互。当CC将推荐物品Vt推送给用户但被拒绝时触发,以便更新RC模型,在以后的回合中获得更好的推荐。在传统的静态推荐系统训练场景中[17,30],一个问题是缺乏真实的负样本,因为用户没有明确表示他们不喜欢什么。在我们的对话案例中,拒绝反馈是用户不喜欢的明确信号,这是非常有价值的利用;此外,离线学习的FM模型不正确地将高分分配给了被拒绝的项目。为了利用这个反馈源,我们将被拒绝的项目Vt作为负样本,构造更多的训练示例来刷新FM模型。根据线下培训流程,我们也优化了BPR
3 实验
对于item属性,我们对数据集的原始属性进行预处理,通过合并同义词和剔除低频属性,得到Yelp中的590个属性和LastFM中的33个属性。在实际应用程序中,询问大型属性空间(例如Yelp数据集)中的属性会导致冗长的对话。因此,我们同时考虑了二进制问题设置(在LastFM上)和枚举问题(在Yelp上)。为了启用枚举问题设置,我们在Yelp数据的属性上构建了一个两级分类法。例如,{" wine", " beer", " whiskey "}的父属性是" alcohol "。我们在590个属性的顶部创建了29个这样的父属性,如“夜生活”、“活动策划服务”、“甜点类型”等。在枚举问题设置中,系统选择一个要询问的父属性。也就是说,我们将政策网络输出空间的大小改变为29 + 1 = 30。同时,它还显示所有的子属性,并要求用户从中进行选择(用户可以用多个子属性进行回复)。请注意,选择问什么样的问题是参与者的工程设计选择,这里我们在两种设置上评估我们的模型