摘要

这篇文章是微软18年发的基于强化学习来做推荐系统的文章。

一、引言

新闻领域的个性化推荐十分重要,传统的方法如基于内容的方法、协同过滤、深度学习方法在建模user-item交互关系时,经常面临以下三个问题:
1)难以处理新闻推荐的动态变化。这种动态变化体现在两个方面,首先新闻具有很强的时效性,其次是用户对于新闻阅读的兴趣是不断变化的,如下图所示:

因此,在建模过程中,不仅要考虑用户对当前推荐的反馈,还要考虑长期的影响。就好比买股票,不能只考虑眼前的收益,而是要考虑未来的预期收益。
2)当前的推荐算法通常只考虑用户的点击/未点击 或者 用户的评分作为反馈,然而,用户隔多久会再次使用服务也能在一定程度上反映用户对推荐结果的满意度。
3)目前的推荐系统倾向于推荐用户重复或相似内容的东西,这也许会降低用户在同一个主题上的兴趣度。因此需要进行exploration。传统方法 e -greedy strategy(ϵ-greedy策略,但它会推给用户完全不相关的内容) 或者 Upper Con dence Bound (UCB) (UCB,但是它的响应时间很长,需要重复点击一个item很多次才能给出一个准确的reward)都会在短期对推荐系统的效果造成一定的影响,需要更有效的exploration策略。

因此,本文提出了基于强化学习的推荐系统框架来解决上述提到的三个问题:
1)首先,使用DQN网络来有效建模新闻推荐的动态变化属性,DQN可以将短期回报和长期回报进行有效的模拟(DQN能同时考虑current reward和future reward,MAB-based方法不能清晰地给出future reward,MDP-based方法不适用于大规模数据)。
2)将用户活跃度(activeness score)作为一种新的反馈信息,用户活跃度在后面会详细介绍。
3)使用Dueling Bandit Gradient Descent方法来进行有效的探索。

二、算法框架

整体结构框架如下图,其中,用户点击情况就是实时reward,用户活跃度就是future reward,state表示的用户特征以及用户行为特征,action是新闻候选池的特征,这样就构成了强化学习的基本框架。

对于上图,描述了强化学习的四个必要因素:
状态:用户的特征
动作:物品(新闻)特征
环境:用户和物品池
回报:点击率和用户的活跃度
**强化过程:**将用户的连续状态特征表示和连续的物品动作特征表示作为多层深度Q-网络,预测潜在回报。

本文的贡献主要有:
1)提出了一种强化学习的框架用于在线新闻的个性化推荐
2)使用用户活跃度作为一种新的反馈,来提高推荐的准确性
3)使用了一种更加高效的探索算法:Dueling Bandit Gra- dient Descent
4)模型可以进行在线学习和更新,在离线和在线实验上的表现都超过了传统的算法。

三、模型详解

3.1 模型框架

模型整体框架如下图所示:

有几个关键的环节:
PUSH:在每一个时刻,用户发送请求时,agent根据当前的state产生k篇新闻推荐给用户,这个推荐结果是exploitation和exploration的结合

FEEDBACK:通过用户对推荐新闻的点击行为得到反馈结果。

MINOR UPDATE:在每个时间点过后,根据用户的信息(state)和推荐的新闻(action)及得到的反馈(reward),agent会评估exploitation network Q 和 exploration network Q ̃ 的表现,如果exploitation network Q效果更好,则模型保持不动,如果 exploration network Q ̃ 的表现更好,exploitation network Q的参数将会向exploration network Q ̃变化。

MAJOR UPDATE:在经过一段时间T后,代理将利用用户的反馈和存储在内存中的用户的活跃度和反馈更新Q网络。因此我们将利用
经验重放技术更新网络。每次更新,代理将抽样批量记录更新模型。(在一段时间过后,根据DQN的经验池中存放的历史经验,对exploitation network Q 模型参数进行更新。)

3.2 特征设计

(1)新闻特征:417维的one hot,包括headline, provider, ranking, entity name, category, topic category, and click counts in last 1 hour, 6 hours, 24 hours, 1 week, and 1 year respectively。这里每个click count是1维,其余的特征总共412维,不知道分别是多少维的
(2)用户特征:413*5维: 1 hour, 6 hours, 24 hours, 1 week, and 1 year里用户点击过的新闻的headline, provider, ranking, entity name, category, and topic category + click count
(3)用户-新闻特征:25维,在该用户的所有浏览记录中category, topic category and provider的出现频率
(4)环境特征:32维,当一次点击发生时的环境,包括time, weekday, and the freshness of the news (the gap between
request time and news publish time).

3.3 深度强化学习做推荐

这里深度强化学习用的是Dueling-Double-DQN。之前我们介绍过DQN的三大改进,包括Double-DQN,Dueling-DQN和优先经验回放,这里用到了两个。将用户特征和上下文特征用于表示当前的state,新闻特征和交互特征用语表示当前的一个action,经过模型可以输出当前状态state采取这个action的预测Q值。

Q现实值包含两个部分:立即获得的奖励和未来获得奖励的折现:

立即的奖励可能包含两部分,即用户的点击奖励和用户活跃度奖励。由于采取了Double-DQN 的结构,Q现实值的计算变为:


下图显示了特征输入形式,值函数由静态的用户特征和环境特征构成,行为函数由静态动态的全部特征构成。

3.4 用户活跃度

用户活跃度(User Activeness) 是本文提出的新的可以用作推荐结果反馈的指标。用户活跃度可以理解为使用app的频率,好的推荐结果可以增加用户使用该app的频率,因此可以作为一个反馈指标。
当产生用户请求时,就被标记为user return的时刻,采用生存模型进行拟合,拟合公式如下:


用户活跃度的图示如下(最大值不超过1,初始化值是0.5,阶跃的点就代表发生了用户请求):

如果用户在一定时间内没有点击行为,活跃度会下降,但一旦有了点击行为,活跃度会上升。

在考虑了点击和活跃度之后,之前提到过的立即奖励变为:


3.5 探索
本文的探索采取的是Dueling Bandit Gradient Descent 算法,算法的结构如下:

在DQN网络的基础上又多出来一个exploration network Q ̃ ,这个网络的参数是由当前的Q网络参数基础上加入一定的噪声产生的,具体来说:

相当于给W一个很小的扰动,就会有一个新生成的Q’。Q’和Q都会给出top k的候选列表L’和L,最后推给用户的L 是随机的在L和L’中选择,比如L 的第一个内容选择在L中产生,那么就会随机的从L中抽取一个item,这个随机不是完全随机,和L中各item的概率有关,概率高的被抽到的概率也大,之后将L推给用户,用户就会产生点击行为和反馈信息B,如果由Q’产生的推荐item效果好于Q,就替换,这就是模型选择的逻辑。

即当一个用户请求到来时,由两个网络同时产生top-K的新闻列表,然后将二者产生的新闻进行一定程度的混合,然后得到用户的反馈。如果exploration network Q ̃的效果好的话,那么当前Q网络的参数向着exploration network Q ̃的参数方向进行更新,具体公式如下:

否则的话,当前Q网络的参数不变。

总的来说,使用深度强化学习来进行推荐,同时考虑了用户活跃度和对多样性推荐的探索,可以说是一个很完备的推荐框架了!

四、实验比较

4.1 数据集

使用的数据集是新闻app得到的数据:

数据中存在明显的长尾特点:

4.2 评估指标

主要用的评估指标有CTR、top-K准确率,nDCG,三者的计算公式如下:

在nDCG中,r是新闻的排序,n是推荐新闻列表的长度。

4.3 实验设定

4.4 对比模型

本文选取了五个基准模型:LR,FM,Wide&Deep,LinUCB,HLinUCB。同时根据组件的不同(U代表用户活跃度,EG代表e-greedy,DBGD代表Dueling Bandit Gradient De- scent )强化学习模型又分为以下几种:

DN:没有考虑未来收益的Double-DQN
DDQN:考虑未来收益的Double-DQN
DDQN+U:考虑未来收益,同时考虑用户活跃度的Double-DQN
DDQN+U+EG:采用e-greedy作为探索策略的Double-DQN
DDQN+U+DBGD:采用DBGD作为探索模型的Double-DQN

4.5 离线实验

离线实验的结果如下所示:

本文提出的模型效果明显好于基准模型。

4.6 在线实验

在线实验的效果分两部分,准确率和Diversity。

准确率

准确率用CTR来表征,如果CTR高,我们认为模型准确率较好,实验结果如下:

多样性

多样性这里采用的指标是ILS,用来表示推荐列表中item的相似性,如果这个相似性较低,可以认为推荐结果的多样性较好,计算公式如下:

实验结果如下:

可以看到DDQN+U+DBGD的多样性明显好于其他模型。

9.DRN: A Deep Reinforcement Learning Framework for News Recommendation论文详解相关推荐

  1. [未]DRN: A Deep Reinforcement Learning Framework for News Recommendation

    DRN: A Deep Reinforcement Learning Framework for News Recommendation DRN:一个新闻推荐的深度强化学习框架 参考链接:https: ...

  2. DRN: A Deep Reinforcement Learning Framework for News Recommendation (2018)

    文章目录 1. DRN: A Deep Reinforcement Learning Framework for News Recommendation (2018) (0) 个人小结 (1) 研究目 ...

  3. 论文阅读:DRN: A Deep Reinforcement Learning Framework for News Recommendation

    文章目录 摘要 一.Introduction 1.引入原因 2.结构框架 二.相关工作 1.新闻推荐算法 2.推荐中的强化学习 3.问题定义 三.实现原理 1.模型框架 2.特征构造 3.深度强化推荐 ...

  4. DRN: A Deep Reinforcement Learning Framework for News Recommendation学习

    欢迎转载,请注明出处https://blog.csdn.net/ZJKL_Silence/article/details/85798935. 本文提出了(基于深度Q-learning 的推荐框架)基于 ...

  5. DRN: A Deep Reinforcement Learning Framework for News Recommendation理解

    这篇文章是微软18年发的基于强化学习来做推荐系统的文章. 研究推荐系统一个月有余,总觉得自己的模型过分简单,单纯的无脑过FC把人都整的蠢蠢的,于是就搜寻了一下有没有别的方式来做推荐,就发现了这一篇文章 ...

  6. DRN :A Deep Reinforcement Learning Framework for News Recommendation论文解读

    文章目录 1. 论文贡献 2. 模型架构 2.1. 特征构造 2.2. 深度强化学习模型 2.3. 用户的主动反馈 2.4. 探索策略 1. 论文贡献 该论文提出了一个基于DQN的推荐框架,用于解决以 ...

  7. DRN: A Deep Reinforcement Learning Framework for News Recommendation

    文章目录 总结 细节 实验 总结 dqn,reward增加了用户return 细节 提出一个针对新闻推荐的drl框架 旧方法的问题 新方法的应对措施 新闻动态变化快 DQN 只考虑ctr,不考虑用户回 ...

  8. 【论】A Deep Reinforcement Learning Framework for Rebalancing Dockless Bike Sharing Systems

    A Deep Reinforcement Learning Framework for Rebalancing Dockless Bike Sharing Systems 摘要 自行车共享为旅行提供了 ...

  9. ActionSpotter Deep Reinforcement Learning Framework for Temporal Action Spotting in Videos

    ActionSpotter: Deep Reinforcement Learning Framework for Temporal Action Spotting in Videos 论文阅读笔记 1 ...

最新文章

  1. [基础知识]Linux新手系列之三
  2. linux之权限管理_1
  3. dotnet core 开发无缝兼容Http和Websocket协议的接口服务
  4. Linux 命令之 arch --显示主机的硬件结构类型
  5. 补习系列-springboot-使用assembly进行项目打包
  6. 简述机器指令与微指令之间的关系_《计算机组成原理》试卷B与参考答案
  7. 打印0-1之间double数字的二进制表示
  8. npm是什么,用来干嘛的
  9. 计算机组成原理实验:静态随机存储器实验
  10. 如何使用计算机计算平方面积,尺平方米换算计算器(面积单位换算器)
  11. c语言报刊杂志订阅系统,C杂志订阅管理系统.doc
  12. 计算机考研对英语四六级有要求吗,2022考研指南|考研对英语四六级有要求吗?...
  13. 计算机图形学的反走样
  14. 动目标检测算法——高斯混合背景建模
  15. Win10彻底删除Windows.old文件夹
  16. Android 语音播报 , 百度在线语音合成封装;
  17. CSRF攻击、防止CSRF攻击原理及配置
  18. 入职新人如何快速了解业务
  19. Jasperserver 添加字体方法
  20. 计算机985博士带进高校的配偶,部分本科、全国985硕士、博士应届毕业生可直接落户上海...

热门文章

  1. python免费自学爬虫_这套Python爬虫学习教程,不到一天即可新手到进阶!免费领...
  2. React 数字取整
  3. JMC | 人工智能在药物合成中的当前和未来作用(1)
  4. 微生物生态学相关期刊2022年实时影响因子
  5. NC:电缆细菌减少水稻种植土壤中的甲烷排放
  6. Cell子刊:特异靶向病原菌致病力的植物天然产物的作用机制
  7. 如何用FAPROTAX预测微生物群落功能
  8. 西游记里河水让人怀孕的秘密:是寄生虫!我往河里放了寄生虫!
  9. linux中查看日志技巧,日志查看技巧之筛选[linux命令集][排查篇]
  10. python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组、使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank)