DRN: 将深度强化学习应用到新闻推荐

2019 年 12 月 02 日

DRN: 将深度强化学习应用到新闻推荐

背景和介绍


在线个性化新闻推荐已经成为一个富有挑战性的问题,尽管一些传统的在线推荐模型可初步解决新闻推荐中的动态变化性问题。这种动态变化性体现于:首先新闻具有很强的时效性,其次是用户对于新闻阅读的兴趣是不断变化的。但是这些模型还是有三个缺陷:


  • 难以处理新闻推荐的动态变化。因此模型不仅要考虑用户对当前推荐的反馈,还要考虑推荐对用户长期的影响。就好比买股票,不能只考虑眼前的收益,而是要考虑未来的预期收益。

  • 通常只考虑用户的点击/未点击 或者 用户的评分作为反馈,然而,用户隔多久会再次使用推荐服务也能在一定程度上反映用户对推荐结果的满意度。

  • 倾向于推荐用户重复或相似内容的东西,这也许会降低用户在同一个主题上的兴趣度。因此模型需要进行exploration。传统方法 e-greedy 策略或者 Upper Confidence Bound (UCB) 都会在短期对推荐系统的效果造成一定的影响(因为 e-greedy和UCB都会随机选取一些用户可能根本不敢兴趣的文章来推荐),需要更有效的exploration策略。

  • 因此本文提出了一种基于Deep Q-learning的推荐框架,可明确地对用户未来的预期奖赏进行建模。针对上述三个问题,本文提出了三个对应的解决方案:

  • 使用Deep Q-learning(DQN)网络来有效建模新闻推荐的动态变化属性,DQN可以将短期回报和长期回报进行有效的模拟。

  • 将用户活跃度(activeness score)作为一种新的反馈信息。

  • 使用Dueling Bandit Gradient Descent方法来进行有效的动作探索,同时保证了推荐结果的多样性和精准性。


系统整体框架



用户和新闻池作为环境,推荐算法作为 Agent,状态定义为用户的特征表示,动作定义为推荐新闻列表的特征表示。每个时刻当一个用户请求新闻,状态和一系列动作的表征传递给 Agent。Agent 会选择当前策略下最好的动作(对该用户的一个推荐列表)并且将用户的反馈当做 reward(是否点击+用户活跃度)。所有的推荐和反馈 log 都会被存储到 Memory 中,每隔一个小时,Agent 都会去使用 memory 中的 log 去更新推荐算法。本文的贡献主要有:


1)提出了一种强化学习的框架用于在线新闻的个性化推荐,并且可扩展到其它领域。


2)使用用户活跃度作为一种新的反馈,来提高推荐的准确性


3)使用了一种更加高效的探索算法:Dueling Bandit Gradient Descent,防止由于动作的探索而导致推荐精准性的下降。


4)模型可以进行在线学习和更新,在离线和在线实验上的表现都超过了传统的算法。


问题定义


符合定义



模型架构


模型架构如下:



模型由离线和在线部分组成。离线阶段:首先从新闻和用户中抽取四种类型的 features,然后利用多层的 DQN 网络来预测奖赏(用户点击+用户活跃度)。其中 DQN 网络是通过离线的用户新闻点击 logs 来训练。在线阶段:推荐 agent G 通过与用户的交互来更新网络。更新的方法是:


  • PUSH:在每个时刻,用户发送请求时,agent根据当前的state产生top-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:在一段时间过后,根据DQN的经验池中存放的历史经验,对exploitation network Q 模型参数进行更新。

  • 不断重复上述4个步骤。


输入特征设计:包括 4 部分


  • 新闻的特征:包括题目,作者,排名,类别等等,共417维

  • 用户的特征:包括用户在1小时,6小时,24小时,1周,1年内点击过的新闻的特征表示,共413*5=2065维

  • 新闻和用户的交互特征:25维。

  • 上下文特征:32维的上下文信息,如时间,周几,新闻的新鲜程度等。

  • 在这四组特征中,用户特征和上下文特征用于表示当前的state,新闻特征和交互特征用于表示当前的一个action。


Deep Reinforcement Recommendation


用了 Dueling-Double-DQN(两个 trick,一个是 dueling network,一个是 DDQN),将用户特征和上下文特征用于表示当前的 state,新闻特征和交互特征用语表示当前的一个 action,经过模型可以输出当前状态 state 采取这个 action 的预测 Q 值。Q 值包含两个部分,分别是立即奖励和带折扣的未来奖励:



其中立即奖励表示用户是否点击推荐的新闻和用户活跃度奖励,未来奖赏表示 agent 对未来奖励的一个 projection。使用 DDQN 算法:



加上 dueling 结构(将 Q 值分成 v 值和 A 值两部分),整体的模型图为:



为什么要采取上面的 dueling 结构呢?因为大多数时候奖赏只是和用户本身的特征和 context 的特征有关(比如该用户是否活跃,该用户今天是否已经阅读足够多的文章)。


奖赏函数设置


用户活跃度可理解为使用 app 的频率,好的推荐结果可以增加用户使用该 app 的频率,因此可以作为一个反馈指标。所以立即奖励变为用户是否点击推荐的新闻+用户活跃度奖励。



动作探索


提出了一种被称为 Dueling Bandit Gradient Descent 的探索方法



共有两个网络,一个 DQN 网络,一个是 exploration network Q ̃网络,探索网络的参数是由当前的 DQN 网络参数基础上加入一定的噪声产生的:



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



否则,当前 DQN 网络参数不变。


实验结果


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


DN:未考虑未来收益的 Double-DQN


DDQN:考虑未来收益的 Double-DQN


DDON+U:考虑未来收益,同时考虑用户活跃度的 Double-DQN


DDQN+U+EG:采用 e-greedy 作为探索策略的 Double-DQN


DDQN+U+DBGD:采用 DBGD 作为探索模型的 Double-DQN


离线实验结果:



在线实验结果:



推荐多样性比较:



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


总结:


有个疑问,推荐出的是商品的一个列表,那么动作空间应该很大很大,而 DQN 只适用于离散动作空间,怎么处理该问题??


冷启动问题,DQN 算法一开始推荐出的内容肯定很差,这时候应该需要离线训练一个预训练模型来保证算法一开始的推荐精确性。那么这里是使用传统的 CTR 预估模型还是直接使用拥有离线训练数据的 RL 模型来当做预训练的模型呢?


是否可以将 DQN 模型替换成 DDPG 模型?


参考文献:


http://www.personal.psu.edu/~gjz5038/paper/www2018_reinforceRec/www2018_reinforceRec.pdf


https://www.jianshu.com/p/c0384b213


本文转载自 Alex-zhai 知乎账号。


原文链接:https://zhuanlan.zhihu.com/p/72801609


2019 年 12 月 02 日 16:21251

评论

发布
暂无评论
发现更多内容

安全系列之——手写JAVA加密、解密

诸葛小猿

对称加密 加密解密 非对称加密 rsa AES

计算机的时钟(二):Lamport逻辑时钟

ElvinYang

ARTS 06 - Jenkins 多分支项目过滤及 when 的高级用法

jerry.mei

学习 算法 ARTS 打卡计划 CI/CD ARTS活动

架构师训练营第八周课后题

Cloud.

程序的机器级表示-访问数据

引花眠

应用程序研发之网络-网络编程模型

superman

轻松应对并发问题,Newbe.Claptrap 框架中 State 和 Event 应该如何理解?

newbe36524

分布式 微服务 架构设计 .net core ASP.NET Core

门面效应 - 拒绝别人会产生愧疚吗?

石云升

心理学 门面效应 留面子效应

ARTS Week9

时之虫

ARTS 打卡计划

读完《云原生架构白皮书》,我们来谈谈开放应用模型(OAM)

郭旭东

Kubernetes 云原生 OMA

从零开始写一个迷你版的Tomcat

简爱W

LeetCode题解: 206. 反转链表,JavaScript,容易理解的递归解释,详细注释

Lee Chen

LeetCode 前端进阶训练营

第8周作业

小胖子

ARTS打卡 第9周

引花眠

ARTS 打卡计划

第8周-作业1

seng man

架构师训练营第八周课后总结

Cloud.

应用程序研发之网络 - Http

superman

Jenkins 多分支项目过滤及 when 的高级用法

jerry.mei

DevOps 运维 自动化 jenkins CI/CD

ARTS 打卡(2020.07.13-2020.07.19)

小王同学

架构师课程第八周 作业

杉松壁

【架构师训练营 - 作业 -8】

小动物

周末在家加班开发代扣支付网关!

诸葛小猿

加班

C++编译过程 宏 内联和静态变量

大规模数据处理学习者

应用程序研发之网络-分层模型

superman

JDK1.8新特性(六):Stream的终极操作,轻松解决集合分组、汇总等复杂操作

xcbeyond

stream 集合 新特性 JDK1.8 Collections

第8周-作业2

seng man

数据结构和算法-链表

jason

封装element-ui表格,我是这样做的

前端有的玩

Java Vue Element 封装

MySQL主从复制详解

Simon

MySQL 主从复制

MySQL 百万级数据量分页查询方法及其优化

xcbeyond

SQL优化 数据库优化

5万字长文:Stream和Lambda表达式最佳实践-附PDF下载

程序那些事

Java jdk Lambda stream

DRN: 将深度强化学习应用到新闻推荐-InfoQ