Fork me on GitHub

基于深度强化学习的新闻推荐模型 DRN

a8ee1db865f24a2e86e302bcbf855e48.png

文章作者:杨镒铭 滴滴出行 高级算法工程师

内容来源:记录广告、推荐等方面的模型积累@知乎专栏

出品社区:DataFun

注:欢迎后台留言投稿「行知」专栏文章。

在深度学习大潮之后,搜索推荐等领域模型该如何升级迭代呢?强化学习在游戏等领域大放异彩,那是否可将强化学习应用到搜索推荐领域呢?推荐搜索问题往往也可看作是序列决策的问题,引入强化学习的思想来实现长期回报最大的想法也是很自然的,事实上在工业界已有相关探索。因此后面将会写一个系列来介绍近期强化学习在搜索推荐业务上的应用。
本次将介绍第一篇,发表在WWW2018上,链接为:

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

▪ Introduction

在新闻推荐业务中,虽然很多机器学习模型有较好的建模能力,但是仍有如下问题:

  • 新闻推荐中的动态变化难以处理

动态变化表现在两种层次:一个是新闻的时效性,可能会很快过时;另一个是用户的浏览兴趣,随着时间会动态变化。虽然通过在线学习的方式可以捕获新闻特征和用户兴趣的动态变化,但是这些方法只注重短期回报,并未考虑长期回报。

  • 仅使用是否点击作为用户反馈

现有方法只考虑是否点击或者打分来作为用户的反馈。作者提出引入用户返回APP的时间,因为该指标也反映了用户对推荐的满意度。

  • 现有方法推荐结果重复较多

现有方法倾向于给用户推荐相似item,而这将降低用户对相似topic的兴趣,也不利于探索用户新的兴趣。

▪ 所提模型

为了解决上述问题,作者提出了基于DQN的框架来进行实时新闻推荐。具体来说,将用户和news的特征表示输入给Deep Q-Network来预测可能的reward,也就是用户点击news的概率。该框架通过DQN的在线更新来处理新闻推荐中的动态变化,并注重长期回报。框架除了用户click的反馈之外,引入了user activeness(用户在一次推荐后返回到APP的频率)作为回报。另外为避免传统的exploration策略比如 或UCB可能带来的不准确推荐,作者引入Dueling Bandit Gradient Descent策略来改善推荐的多样性。

  • 模型框架

模型框架

如下图,整体框架包括离线和在线两部分。所需信息主要是从news和user中抽取4类特征,Deep Q-network则根据这4类特征来预测reward(用户click和activeness的结合)。离线部分主要是使用离线的用户点击日志来训练,给点击和未点击的news不同的奖励,然后训练一个Q网络。这部分和论文作者聊过,其实就是一个监督学习的过程。在线部分涉及推荐agent和用户的交互过程,按下面的流程对网络进行更新:

  1. Push:每当用户发送一个请求,推荐智能体G会根据用户和候选news集合的特征表示,综合exploitation和exploration生成top-k的news列表L。

  2. FeedBack:用户针对接受的列表L将会有点击行为。

  3. Minor Update:在每个时间戳后,根据user、news列表L和反馈B,智能体G将会比较exploitation network Q和exploration network 的推荐效果来更新模型。如果给出的效果更好,则将Q往的方向更新,否则Q保持不变。每次推荐发生之后都会进行Minor update。

  4. Major Update:在一个特定时期后,智能体G将使用用户反馈B和用户activeness来更新网络Q。这里使用经验回放来实现,智能体G保存近期历史click和用户activeness记录,当触发Major Update时,智能体随机选择一个batch来更新模型。Major Update通常间隔比如一个小时来进行,在这段时间会收集很多次的展现和反馈的记录。

  • 特征构造

针对预测用户是否会点击某个news,文中构造了4大类特征,包括News Feature、User Feature、User News Feature和Context Feature。篇幅有限,这里不再细讲。

  • 深度强化推荐

考虑到新闻推荐中的动态变化和长期回报,文章使用DQN来建模用户是否点击某一news的概率,而这一概率也是智能体能得到的奖励即reward。文章对total reward进行如下形式化:

其中状态state表示成context feature和user feature,而动作action表示成news feature和user-news交互特征,别表示当前情况下奖励(也就是用户是否点击新闻)和未来回报。给定当前状态s、动作a和时间戳t,使用DDQN来对total reward进行预测:

其中表示采取动作a的立即回报,表示DQN中的两个不同参数集合。首先给定候选动作集,在参数的设置下根据长期回报最大选择出动作。然后估计采取动作所得到的长期回报。每几轮迭代之后将互换。DDQN可解决Q值过高估计的问题。通过这个过程,模型可兼顾total reward进行决策。

Q network如上图所示。底层将四类特征输入到网络中,user feature和context feature作为state feature,而user-news feature和news feature作为action feature。一方面,在一个特定状态采用某个动作的reward和所有特征均有关。另一方面,reward受user本身特征的影响要大于只用用户状态和context特征。基于此,文中类似Dueling Network将Q函数分解成V(s)和A(s,a),其中V(s)只受state特征影响,而A(s,a)则会受到state特征和action特征影响。

  • User activeness

文中采用留存模型来对用户activeness来建模。时间t后用户返回App的概率定义为 ,其中一个生命周期(文中设为一天)。每次检测到一个用户返回App,我们将使得。如下图,开始时,然后activeness衰减,在时刻用户返回App,使得activeness增加,后续以此类推。整个过程保证活跃度保持在0-1之间,如果超过1的话直接截断成1。这里等值的设定都是数据中的真实用户行为模式确定的。

  • Exploration

常见的探索方法包括和UCB等,其中前者会随机推荐一些新item,后者会选择一些未探索充分的item,这些都会导致推荐效果有一定下降。因此作者使用了Dueling Bandit Gradient Descent算法(最早来自online LTR领域)来进行exploration。智能体G使用当前网络Q产出推荐列表L,并使用explore网络产生另一个推荐列表的参数可以通过Q的参数基础上增加微小扰动得到。然后使用L和进行interleave来产生一个融合的列表 。如果探索网络产生的item得到更好的反馈,则智能体G将网络Q向的方向更新,表示为,否则Q的参数保持不变。

▪ 总结

这篇文章结合了一些已有的DQN及改进实现了强化学习在新闻推荐上的应用,其中的框架设计和exploration机制值得相关的业务场景进行借鉴。

作者介绍:

杨镒铭,滴滴出行高级算法工程师,硕士毕业于中国科学技术大学,知乎「记录广告、推荐等方面的模型积累」专栏作者。


本文地址:https://www.6aiq.com/article/1552543182669
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出