目录
https://daiwk.github.io/posts/rl-drn.html
https://daiwk.github.io/posts/dl-topk-off-policy-correction.html
https://daiwk.github.io/posts/rl-slateq.html
今日头条最新论文,首次改进DQN网络解决推荐中的在线广告投放问题
Deep Reinforcement Learning for Online Advertising in Recommender Systems
在给定推荐列表前提下,本文提出了一种基于DQN的创新架构来同时解决三个任务:
DQN的两种经典结构:
这两种经典架构的最主要的问题是只能将action定义为插入哪一条广告,或者插入广告在列表的哪个位置,无法同时解决上述提到的三个任务。
当然,插入位置与插入哪一条广告通过某种表示形式,如one-hot编码来建模action,那么action空间就是O(A*L),其中A是广告数量,L是位置数量。要实际应用是不可能的。。
本文融合了上述提到了两种经典DQN结构的结合,会同时针对所有可能的插入位置的Q进行预估。
如下图的左边部分,输入层包含State以及Action(插入哪条广告),输出层则是广告插入推荐列表的L+1位置对应的Q-(假设推荐列表长度为L,则可以插入广告的位置为L+1种可能)。与此同时,使用一个特殊插入位置0用来表示不进行广告插入,因此输出层的长度扩展成为L+2。
然后看右边部分,参考dueling dqn,输出层Q函数被拆解成两部分:只由state决定的V(s)函数;以及由state和action同时决定的A(s,a)函数。其中,
\(p^{rec}_t\)
和\(p^{ad}_t\)
;\(c\)
,例如操作系统,app版本号,上下滑动等;\(rec_{t}\)
;\(a_t^{ad}\)
,作为输入的一部分\(a_t^{loc}\)
\(r^{ad}_t\)
;\(r^{ex}_t\)
,继续刷新是1,离开是-1。最优的Q函数策略便可以通过Bellman等式求得:
\[
Q^{*}\left(s_{t}, a_{t}\right)=\mathbb{E}_{s_{t+1}}\left[r_{t}+\gamma \max _{a_{t+1}} Q^{*}\left(s_{t+1}, a_{t+1}\right) | s_{t}, a_{t}\right]
\]
基于用户交互历史的离线日志,采用 Off-policy的方式进行训练得到最优的投放策略。
针对每一次迭代训练:
\(s_t=concat(p^{rec}_t,p^{ad}_t,c_t,rec_t)\)
;\(b(s_t)\)
(即离线日志里的当前广告策略)执行action \(a_t\)
,也就是选取特定ad;\(s_{t+1}\)
\(r_t=r_t^{ad}+\alpha r_t^{ex}\)
;\((s_{t},a_{t},r_{t},s_{t+1})\)
存储到replay buffer;\(s,a,r,s'\)
,来最小化\((y-Q(s, a ; \theta))^{2}\)
训练得到最优的Q函数参数。\[
y=\left\{\begin{array}{ll}{r} & {\text { terminal } s^{\prime}} \\ {r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime} ; \theta\right)} & {\text { non - terminal } s^{\prime}}\end{array}\right.
\]
在线test:
\(s_t=concat(p^{rec}_t,p^{ad}_t,c_t,rec_t)\)
;\(Q^*(s_t,a_t)\)
执行动作\(a_t\)
\(r_t(s_t,a_t)\)
\(s_t\)
更新到\(s_{t+1}\)
100w的session,涉及到18w的user,1700w的自然结果视频,1000w的广告。
平均每个session里有55个自然结果视频,55%的推荐列表里有广告,平均每个session的时长是17min。