DRN: A Deep Reinforcement Learning Framework for News Recommendation理解
这篇来自微软2018年的文章采用强化学习方法进行推荐系统设计。经过一个月的研究后发现推荐系统领域仍有许多值得探索的地方。我的模型显得过于简单,在未经深入思考的情况下直接运用全连接层可能导致用户被误导。后来又查阅了一些其他方法来改进推荐机制。总体而言这本书的内容还是比较值得借鉴的。如有误解之处恳请大家批评指正。
摘要
目前主流推荐算法没有解决的问题:
(1)大多数模型只用点击率CTR来作为目标函数
(2)鲜少有人尝试利用用户反馈信息来提升推荐效果
(3)大多数方法都会重复的给用户推荐相似的内容(这一点我深有同感,目前APP中的推荐算法大多都是这种模式)
本文创新点:
(1)引入了用户返回模式(user return pattern)对CTR进行补充,以利用更多的用户反馈信息
(2)引入了一种高效的exploration策略来尽可能的给用户推荐具有新鲜感的新闻
Introduction及related work
在新闻推荐领域中,面临着三个主要挑战:(1)其时效性特征显著,在本文所使用的数据集中通常会在约4.1小时内失效;(2)用户的兴趣偏好会发生持续的变化,在这种情况下定期更新模型以适应用户的兴趣变化是非常必要的。通过图示可以看出这种动态调整的效果非常显著。(例如,在一个简单的案例中展示了这种动态调整的效果)。

第二部分中提到模型倾向于推荐相似的内容给用户。为了解决这一问题之前提出的两种方法分别是:(1)采用ε-贪edy策略但它会导致向用户推送完全不相关的相关内容(2)UCB方法其响应时间过长需要反复点击同一个item才能获得准确的reward值

Method
模型框架

模型划分为线上及线下的两大模块。在线下部分中,基于用户的日志记录,提取新闻级别的特征以及四个维度的特征指标作为输入数据,用于计算DQN算法中的奖励值R。而在线上部分则分为四个具体步骤进行处理: (1)PUSH操作在t1时刻启动,系统接收用户的请求信号,并结合当前用户的日志信息以及候选新闻库内容,生成top k条推荐列表L; (2)当用户提供点击行为时,则会发送相应的反馈数据B; (3)在t1时刻之后进行小幅度更新时,系统将当前状态下的推荐列表L与最新的反馈数据B进行对比分析,并根据两套网络架构Q与Q'之间的性能评估结果,选择表现更为优秀的那一组参数; (4)每隔固定的时间周期Tr间隔进行一次大规模更新操作,此时系统会整合最新的反馈数据B以及内存中所存储的历史点击记录与活跃度评分信息,对核心价值评估模型中的参数Q进行全局优化更新
特征构造
这一部分内容较为关键但也存在一定的技术细节值得深入探讨
(1)新闻属性采用one-hot编码方案实现多维度信息提取 包括标题信息 多媒体平台标识 新闻排名 资源名称 类别 标题类别以及过去一小时内 六小时 二十四小时 一周及一年时间段内的点击次数 单位时间内的每一种点击次数均构成独立的一维特征 其他维度共计412个
(2)用户属性由多个维度构成 每个时段内用户的点击行为包含了资源标题 多媒体平台标识 新闻排名 资源名称 类别 标题类别以及该时段内的点击次数
(3)用户与新闻交互属性主要关注用户的浏览行为 包括资源类别 标题类别以及访问过的媒体平台在一定时间段内的出现频率
(4)系统环境参数涵盖了当前请求所处的具体场景 包括时间戳 星期几以及文章发布后的时间衰减程度 即请求时间和发布时间之间的间隔长度被定义为新鲜度指标
reward计算
总的reward可写为


其中s是当前的状态,在下一时刻t+1时的状态s_{a,t+1}下,agent会生成一系列候选的动作{a'}。这些动作中对最大奖励贡献最大的a'所对应的参数W'将会替代当前参数W。如图所示,输入形式包含静态用户的特征以及环境相关的静态特征。值函数基于这些静态特征构建而成,而行为函数则由静态与动态共同存在的全部特征构成。

用户活跃度拟合
当某个用户发起请求时,则会被立即标记为一个user return的状态(这让我产生了疑问:如果一个用户长时间内频繁刷新该页面呢?)

然后一通定义变量,拟合,就变成这样:

该函数图像大致呈现为一个阶梯状曲线,在其定义域内具有明确的意义。其最大输出值限定在1以下,并且初始状态设置为0.5。当出现阶跃点时,则表示系统接收到用户的请求。

Explore
这一节主要阐述了DQN如何选取候选列表L的过程,如图

权重更新公式为:ΔW = α × rand(−1, 1) × W。这相当于为权重矩阵W施加了一个微小的扰动量。这样的微小调整后会生成一个新的候选模型Q'。这个新旧两个候选模型分别会生成各自的候选列表L'和L。在每次推荐时会从当前候选列表及其历史候选项中随机选择一个项目。其中,在每次推荐时会从当前候选列表及其历史候选项中随机选择一个项目。(注:这里所说的"随机"并不是完全随机的选择方式,在这种情况下与TensorFlow自带的日志型均匀采样方式原理相似)。随后将推荐结果传递给用户用于评估与反馈机制优化相关的性能指标B。具体来说,在每次迭代过程中若由新模型Q'所生成的目标项目的预测效果优于原有模型Q,则会替换原有的模型参数或策略参数以实现性能提升的目标。(注:这里所说的"替换"是指采用新的预测参数来替代旧有的预测参数)
实验结果
metrics:用了precision@5和nDCG@5




