目录
DRN: A Deep Reinforcement Learning Framework for News Recommendation
现有推荐模型的几大问题:
动态变化表现在两种层次:一个是新闻的时效性,可能会很快过时;另一个是用户的浏览兴趣,随着时间会动态变化。虽然通过在线学习的方式可以捕获新闻特征和用户兴趣的动态变化,但是这些方法只注重短期回报,并未考虑长期回报。
现有方法只考虑是否点击或者打分来作为用户的反馈。作者提出引入用户返回APP的时间,因为该指标也反映了用户对推荐的满意度。
现有方法倾向于给用户推荐相似item,而这将降低用户对相似topic的兴趣,也不利于探索用户新的兴趣。
将用户和news的特征表示输入给DQN来预测可能的reward,也就是用户点击news的概率。该框架通过DQN的在线更新来处理新闻推荐中的动态变化,并注重长期回报。框架除了用户点击的反馈之外,引入了user activeness(用户在一次推荐后返回到APP的频率)作为回报。另外为避免传统的exploration策略比如\(\varepsilon-greedy\)
或UCB可能带来的不准确推荐,作者引入Dueling Bandit Gradient Descent策略来改善推荐的多样性。
离线部分:主要是使用离线的用户点击日志来训练,给点击和未点击的news不同的奖励,然后训练一个Q网络,其实就是一个监督学习的过程。
在线部分:涉及推荐agent和用户的交互过程,按下面的流程对网络进行更新:
\(Q\)
和exploration network \(\tilde{Q}\)
的推荐效果来更新模型。如果\(\tilde{Q}\)
给出的推荐结果最终效果更好,则将Q往 \(\tilde{Q}\)
的方向更新,否则\(Q\)
保持不变。每次推荐发生之后都会进行Minor update。\(T_R\)
后,智能体G将使用用户反馈B和用户activeness来更新网络Q。这里使用经验回放来实现,智能体G保存近期历史click和用户activeness记录,当触发Major Update时,智能体随机选择一个batch来更新模型。Major Update通常间隔比如一个小时来进行,在这段时间会收集很多次的展现和反馈的记录。使用DQN来建模用户是否点击某一news的概率,而这一概率也是智能体能得到的奖励即reward:
\[
y_{s,a}=Q(s,a)=r_{immediate}+\gamma r_{future}
\]
\(r_{immediate}\)
和\(r_{future}\)
分别表示当前情况下奖励(也就是用户是否点击新闻)和未来回报。给定当前状态s、动作a和时间戳t,使用DDQN来对total reward进行预测:
\[
y_{s,a,t}=r_{a,t+1}+\gamma Q(s_{a,t+1},\mathop{\arg\max}_{a^{'}}Q(s_{a,t+1},a^{'};w_t);w_{t}^{'})
\]
其中,\(r_{a,t+1}\)
表示采取动作a的立即回报,\(w_t\)
和\(w_t^{'}\)
表示DQN中的两个不同参数集合。
\(w_t\)
的设置下根据长期回报最大选择出动作\(a^{'}\)
。\(s_{a,t+1}\)
采取动作\(a^{'}\)
所得到的长期回报。\(w_t\)
和\(w_t^{'}\)
将互换。DDQN(double DQN)可解决Q值过高估计的问题。通过这个过程,模型可兼顾total reward进行决策。
所以看起来,是先dueling dqn算q,再double dqn算reward
Q网络底层将四类特征输入到网络中,user feature和context feature作为state feature,而user-news feature和news feature作为action feature。
基于此,文中类似Dueling Network将Q函数分解成\(V(s)\)
和\(A(s,a)\)
,其中\(V(s)\)
只受state特征(即user+context)影响,而\(A(s,a)\)
则会受到state特征和action特征(即user+context+item+user-item-cross)影响。
采用留存模型来对用户activeness来建模。时间t后用户返回App的概率定义为\(s(t)=e^{-\int_{0}^{t}\lambda(x)dx}\)
,其中一个生命周期\(T_{0}=\int_{0}^{\infty}s(t)dt\)
(文中\(T_0\)
设为一天)。每次检测到一个用户返回App,我们将使得\(s(t)=s(t)+s_a\)
。如下图,开始时\(s_0=0.5\)
,然后activeness衰减,在\(t_1\)
时刻用户返回App,使得activeness增加\(s_a=0.32\)
,后续以此类推。整个过程保证活跃度保持在0-1之间,如果超过1的话直接截断成1。这里\(s_0\)
、\(s_a\)
等值的设定都是数据中的真实用户行为模式确定的。
常见的探索方法包括\(\epsilon-greedy\)
和UCB等,其中前者会随机推荐一些新item,后者会选择一些未探索充分的item,这些都会导致推荐效果有一定下降。因此作者使用了Dueling Bandit Gradient Descent算法(最早来自online LTR领域)来进行exploration。智能体G使用当前网络Q产出推荐列表L,并使用explore网络\(\tilde{Q}\)
产生另一个推荐列表\(\tilde{L}\)
。\(\tilde{Q}\)
的参数可以通过Q的参数基础上增加微小扰动得到。然后使用L和\(\tilde{L}\)
进行interleave来产生一个融合的列表\(\hat L\)
。如果探索网络\(\tilde{Q}\)
产生的item得到更好的反馈,则智能体G将网络Q向\(\tilde{Q}\)
的方向更新,表示为\(w^{'}=w+\eta \tilde{w}\)
,否则Q的参数保持不变。