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

阅读数:15 2019 年 12 月 2 日 16:21

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 方法来进行有效的动作探索,同时保证了推荐结果的多样性和精准性。

系统整体框架

DRN: 将深度强化学习应用到新闻推荐
用户和新闻池作为环境,推荐算法作为 Agent,状态定义为用户的特征表示,动作定义为推荐新闻列表的特征表示。每个时刻当一个用户请求新闻,状态和一系列动作的表征传递给 Agent。Agent 会选择当前策略下最好的动作(对该用户的一个推荐列表)并且将用户的反馈当做 reward(是否点击 + 用户活跃度)。所有的推荐和反馈 log 都会被存储到 Memory 中,每隔一个小时,Agent 都会去使用 memory 中的 log 去更新推荐算法。本文的贡献主要有:
1)提出了一种强化学习的框架用于在线新闻的个性化推荐,并且可扩展到其它领域。
2)使用用户活跃度作为一种新的反馈,来提高推荐的准确性
3)使用了一种更加高效的探索算法:Dueling Bandit Gradient Descent,防止由于动作的探索而导致推荐精准性的下降。
4)模型可以进行在线学习和更新,在离线和在线实验上的表现都超过了传统的算法。

问题定义

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

模型架构

模型架构如下:
DRN: 将深度强化学习应用到新闻推荐

模型由离线和在线部分组成。离线阶段:首先从新闻和用户中抽取四种类型的 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 值包含两个部分,分别是立即奖励和带折扣的未来奖励:
DRN: 将深度强化学习应用到新闻推荐

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

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

加上 dueling 结构(将 Q 值分成 v 值和 A 值两部分),整体的模型图为:
DRN: 将深度强化学习应用到新闻推荐
为什么要采取上面的 dueling 结构呢?因为大多数时候奖赏只是和用户本身的特征和 context 的特征有关(比如该用户是否活跃,该用户今天是否已经阅读足够多的文章)。

奖赏函数设置

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

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

动作探索

提出了一种被称为 Dueling Bandit Gradient Descent 的探索方法
DRN: 将深度强化学习应用到新闻推荐

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

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

否则,当前 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

离线实验结果:
DRN: 将深度强化学习应用到新闻推荐

在线实验结果:

DRN: 将深度强化学习应用到新闻推荐
推荐多样性比较:
DRN: 将深度强化学习应用到新闻推荐
多样性采用的指标是 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

评论

发布