Deep Reinforcement Learning for List-wise Recommendations

问题的来源:对于大多数传统推荐系统将推荐的过程看作是一个静态过程并利用混合策略进行推荐。本文中将考虑在用户交互中不断地改进策略,我们将构建用户与推荐系统的序列交互过程作为MDP并利用强化学习通过推荐试验错误的物品学习最优策略,并接收这些 来自用户反馈的物品。

引入在线用户代理环境交互模拟器,可以在线应用模型之前,可以线下预训练并评估模型的参数。另外,我们将用户与代理交互期间验证列表推荐重要性,并建立一种新颖的方法将他们融合到所提出的框架LIRD上。

List-wise推荐

本文提的主要方法是捕获推荐物品之间的关系并产生一系列补充物品,来增强性能。

对于一些方法基于在同样的状态下推荐一些物品,忽略了推荐的物品治安的搞关系,因此推荐的物品是相似的。实际中对于一些互补物品可能比推荐所有相似的物品有很高的回报。

结构的选择

crictl 登陆仓库 cric账号_历史记录


常见的DQN网络结构(a)(b)。

(a)DQN输入为状态空间,输出所有动作的Q值。该结构适合于较多的动作空间而又较小的动作空间。缺点:不能处理大的动态空间的场景。

(b)DQN网络的输入为动作和状态。输出为对应动作的Q值。这种结构不需要在内存中存储每个Q值

因此可以处理大的动作空间或者连续的动作。挑战:利用第二种结构是复杂的,因为需要分别计算所有潜在动作的Q值。

(c)为了处理(b)的问题,Actor-Critic框架。Actor的输入为当前的状态,目的是输出一个特定状态得分函数的参数。然后,RA对所有项目进行评分,并选择得分最高的项目。Critic利用近似结构取学习值函数,用来判断所选择的动作是否匹配当前的状态。最后根据评判家的判断,演员将朝着一个推荐性能提高的方向来更新它的策略参数,使得在接下来的迭代中输出合适的动作。

在线环境模拟器作用

由于推荐系统中在应用到在线之前,在线反馈是难以获得。在实际中,在线之前需要预训练线下参数并评估模型。因此,如何去训练并评估模型是一个挑战。所以提出了在线环境模拟器,输入的当前状态和一个选择的动作。输出的一个模拟的在线回报。测试性能讲利用基于用户的点击记录,但是只有对用户历史记录中的现有物品有真实反馈,但是不能得到不在用户历史记录中物品的反馈。所提出的在线环境模拟器可以通过产生模拟的在线回报减轻这个挑战,以便可以对整个物品空间进行评价。

2、提出的框架

(1)状态问题

我们在一个推荐代理与环境的交互中通过在一系列时间步骤中依次选择推荐物品,为了能够最大化累积奖赏。我们将这个问题看作MDP(包括状态,动作,回报)。正常MDP包括5个元素的元组,(S,A,P,R,r)

S:一个用户的浏览历史,在时间t之前用户浏览过N物品。一个状态st,在状态st中的物品是按时间顺序排列。

crictl 登陆仓库 cric账号_强化AC_02


crictl 登陆仓库 cric账号_强化AC_03


A:在时刻t用户基于当前的状态st对用户推荐的一系列物品。K为推荐列表的长度。

R:用户在状态st时刻采取动作at后,用户浏览这些物品并提供他们的反馈。根据用户的反馈代理将得到立即回报。

P:转换概率,当RA(推荐代理)采取动作从状态st到状态st+1的状态转移概率。

若用户跳过了所有的推荐物品,下一个状态为st+1=st;若用户点击了部分物品,下一个妆容st+1更新。

r:折扣因子取值为[0,1],当我们衡量将来回报的当前值,r=0将仅考虑当前回报。

由于仅仅使用离散的索引表示物品不能充分的知道来自索引中物品的关联性。一个常用的方法就是添加额外的信息表示物品。例如,我们可以使用属性信息。**本论文中将利用用户代理交互信息。**如用户的浏览历史。我们将每个物品作为一个单词,将在推荐部分点击的物品作为一个句子。然后通过词嵌入的方式获得对物品的低维向量表示。

crictl 登陆仓库 cric账号_函数参数_04


我们的最终目标是通过最大化累积找到推荐策略 π:S->A

(2)在线用户代理交互环境模拟器

为了模拟在线交互流程,模拟器的任务就是基于当前的状态和选择的动作预测回报。

crictl 登陆仓库 cric账号_用户代理_05


依据协同过滤的思想,我们将当前的状态进而动作与现有的历史状态动作对进行匹配,随机产生以模拟回报。

a\构建一个内存M存储历史浏览记录。将由用户代理交互元组组成。

计算当前状态-动作与其相似的历史的状态-动作对:

crictl 登陆仓库 cric账号_强化AC_06


直观上,若 pt(st,at)对mi越相似,则将pt映射奖赏为ri的概率越大。因此将概率定义为:

crictl 登陆仓库 cric账号_crictl 登陆仓库_07


由于需要计算pt与每一个mi的相似性,计算较为复杂,因此为了解决这个问题,根据回报将用户的历史浏览记录分组,注意,回报排列的数量有限的。利用下式

crictl 登陆仓库 cric账号_函数参数_08


crictl 登陆仓库 cric账号_用户代理_09


(3)Actor框架

a、生成具体状态下评分函数参数。

由于考虑整个浏览历史记录,状态s可能是无限的,无效的。因此仅仅考虑正物品。如先前点击的和排序的物品。

将当前状态st映射为去那种向量。

crictl 登陆仓库 cric账号_用户代理_10


crictl 登陆仓库 cric账号_用户代理_11


b、生成动作

基于分数函数参数生成动作。假设分数函数参数w与第i个物品在物品空间I的嵌入为ei线性相关

计算所有物品评分,将评分最高的k个选择。

该部分算法

crictl 登陆仓库 cric账号_强化AC_12

(4)Critic框架

是为了学习动作-值函数的近似,它是为了判断由演员产生的动作是否匹配当前状态st;演员如何根据Q(st,at)更新它的参数??

Critic框架利用DQN网络。其中这里动作将确定。目标值yt

crictl 登陆仓库 cric账号_强化AC_13


损失函数为:

crictl 登陆仓库 cric账号_crictl 登陆仓库_14


crictl 登陆仓库 cric账号_函数参数_15


(5)训练流程

将使用确定性策略梯度训练框架(DEV)中参数。

crictl 登陆仓库 cric账号_函数参数_16


crictl 登陆仓库 cric账号_crictl 登陆仓库_17

1、TD方法—Temporal-Difference (TD) Learning
TD它集成了蒙特卡洛思想和动态编程(dynamic programming, DP)思想。像 DP 方法一样,TD 方法不需要等到最终的 outcome 才更新模型,它可以基于其他估计值来更新估计