星标/置顶小屋,带你解锁

最萌最前沿的NLP、搜索与推荐技术

文 | 江城

编 |  夕小瑶


今天分享一下Google在WSDM 2019的一篇将强化学习应用于Youtube推荐的论文,作者宣称是获得了Youtube近两年来单次上线的最高收益。文章仔细介绍了RL在Youtube上的实践方案细节以及相应的收益,同时介绍了很多实践中的Best Practice,是一篇工业界实践色彩浓重的论文,非常值得一读。

众所周知,工业界大规模推荐系统一般都是有百万、千万级甚至更大规模的item候选集,因此从RL的角度来说,action空间异常的庞大。同时用户规模都是数以十亿计,带来了复杂的user state空间。当前主流做法都是从大规模用户隐式行为日志中训练学习,但是这样会有一个明显造成 信息茧房困境 的System Bias——日志中的用户隐式反馈只包含了前一版本系统推荐选中曝光出去items,对于未被曝光/选中的item候选项则完全无法学习。

本文以Youtube推荐为场景,提出了一种基于策略梯度(例如REINFORCE)的算法来解决上述的System Bias。本文主要贡献点:

  1. REINFORCE Recommender:扩展REINFORCE算法应用于拥有百万级别量级超大action空间的工业界线上系统;

  2. Off-Policy Candidate Generation:在召回阶段使用off-policy矫正来解决基于多种行为策略下积累用户历史数据进行学习带来的数据偏差;

  3. Top-K Off-Policy Correction:提出一种新颖的Top-K off-policy矫正方案来优化同时推荐多个候选item时的矫正问题;

  4. Benefits in Live Experiments:证明了在线上实验的效果,展示了在提升用户长期满意度的价值。

论文链接

https://arxiv.org/abs/1812.02353 

公众号「夕小瑶的卖萌屋」后台回复关键词【0706】下载论文PDF

介绍

传统监督学习的方案在推荐系统中是有明显的局限性的。一方面,新模型迭代时使用的训练样本是当前模型选中并推荐给用户的,但是没有被选中的候选集的用户反馈则无从得知;另一方面,传统监督学习的方案的优化目标是最大化推荐的即时收益,导致了系统更倾向于推荐大众化或者熟悉的候选item。

与此同时,强化学习在推荐系统中的应用也存在着明显的困难:

  • 超大的action空间;

  • 实行exploration的成本较大:系统复杂而且容易带来糟糕用户体验;

  • 如何从当前模型策略收集的行为日志中学习;

  • 部分观测性;

  • 带有噪声的reward;

建模策略π

本文在Youtube中应用强化学习的建模示意图如下所示。RL中几个关键元素

  • Agent:candidate generator也就是召回;

  • State:用户表示,包含context,user profile特征等;

  • Reward:用户满意度反馈;

  • Action:从百万量级的候选video中选择Top-K;

前面提到的一个关键问题:如何从当前模型策略收集的行为日志中学习新的模型策略呢? 如下图所示,将收集到的用户行为日志一分为二。前半部分Sequential Past用来表征User state;后半部分Sequential Future用来计算Reward。

User State Representation

本文使用RNN来针对User state的变换进行建模,实验了LSTM/GRU等单元,最后实际使用的是Chaos Free RNN,其比较稳定且高效。

Reward

Reward建模方面,则是典型的针对未来收益进行指数衰减加和。

Action

基于User state,策略π的求解就是在action空间上的softmax。为了加速计算,在训练阶段使用了 sampled softmax;在serving阶段则是使用邻近搜索算法来获取top K的候选集。

Policy-based RL

在推荐的场景下,给定用户的行为序列,系统需要推荐给用户下一个感兴趣的候选item(也就是action)。Policy-based RL的目标就是希望能够学习到一个随机策略π,来最大化期望的累积收益。

Policy-based RL的求解思路是根据策略梯度可以迭代求解出最优的随机策略π。使用log-trick可以将上述对累积reward梯度的计算转化为对策略π的梯度计算。

Off-Policy矫正

如果解决系统的“部分观测性”问题?本文使用importance weighting的方式来处理推荐系统当前模型行为策略和新策略不一致的问题。

经过推导发现,为了处理系统偏差问题,Off-policy的更新迭代与On-policy的更新迭代唯一的区别只需要在梯度的基础上乘以一个矫正系数即可,如下图总结所示。这个矫正系数主要包含两部分:一部分是当前学习的新策略π;另一部分是用户行为日志保存时推荐系统的行为策略β

预估行为策略β

上述Off-Policy Learning中的矫正系数,当前学习的新策略π可以前向传导计算得到,那用户行为日志保存时推荐系统的行为策略如何得到呢?理想情况下我们可以记录当时系统选择action对应的概率。但是在推荐场景下:

  1. 推荐系统的召回部分有很多的agents,RL只是其中的一路召回,其他的agents我们无法控制也就无法记录对应选择action的概率;

  2. 一些agents有确定性的策略,也就是β为0或者1时无法高效地利用用户行为日志进行训练;

答案是直接使用一个单独的网络来进行预估即可。本文采用了上下文独立的neural estimator,对于每一个收集到的state-action pair,用另外一个softmax来估计β。如下图所示,在主流程学习当前新策略π的基础上,预估β的网络重复利用了从RNN结构生成出来的用户状态s,用另外一个单独的softmax层对日志中的系统行为策略进行建模。为了避免β对生成用户状态的主策略π产生干扰影响,本文中block掉β对用户状态s的梯度回传,β策略的梯度回传只用来更新其单独的item embedding。本文中提到也尝试过将两个策略单独分开建模,发现带来额外计算开销的同时并没有任何离线和线上指标的提升。

尽管两个策略π和β共享用户state参数,但是他们之间有着显著的区别

  1. 主策略π使用考虑长期reward的softmax进行训练,而行为策略β则仅仅使用state-action pairs进行训练;

  2. 主策略π使用用户行为历史上非零reward的样本进行训练,而行为策略β则使用用户行为历史上全部的样本进行训练。

也正是因为针对系统行为策略β进行预估,一方面行为策略可以是0或者1的确定性策略;另外一方面,即便是有多路召回也就是多个agents选择不同actions的时候,那么行为策略预估的便是在状态s下动作a发生的频率。

Top-K Off-Policy矫正

上面提到的Off-Policy Correction只是针对Top 1推荐的矫正,实际场景中系统往往会一次性地同时返回K个item,用户可能全部看到也可能只看到一部分,并可能与不止一个item发生交互。也就是说我们的建模需要扩展一下,希望找到一个随机策略π,每个动作action选择K个items,去最大化预期累积收益。这里只需要改造一下原来的目标函数

但是这样的话有一个问题是动作空间会呈指数级增长,当候选集是百万甚至千万级别的时候更是大的可怕。为了解决这个问题,我们假定一组不重复items的预期奖励等于每个item预期奖励的总和。这样的话就可以简单修改下原有的梯度方程式得到新的梯度更新逻辑:

经过推导发现,Top-K的Off-Policy矫正方案的更新梯度只是在原有Top-1的更新梯度上增加了一个额外的乘数。可以定性地理解一下这个额外的乘数:

  • 随着π -> 0,lambda -> K,相比于标准的off-policy correction,Top-K的Off-Policy correction的梯度更新会增大K倍;

  • 随着π -> 1,lambda -> 0,额外的乘数则会是策略梯度更新趋向于0;

也就是说,当候选项目在主策略π中具有较小概率时,Top-K的Off-Policy矫正比标准矫正更快地更新修正。一旦候选项目在主策略中已经占了一定概率后,则Top-K的Off-Policy矫正会将梯度趋向于零。这反过来允许其他有可能感兴趣的候选item得到一定的选中机会。正如本文在模拟和线上实验中展示的那样,当标准的Off-Policy矫正收敛于固定选择某个项目的最优策略时,Top-K的Off-Policy矫正会产生更好的Top-K推荐。

Variance Reduction技巧

前文在推导策略梯度时使用了一阶近似来减少梯度估计的方差。但是当importance weight较大时,策略梯度仍然会有较大的方差。importance weight较大意味着新策略与旧的行为策略偏差较大,尤其发生在旧行为策略探索比较少的候选集。

我们实验了多种在conterfactual learning和RL文献中提出的集中技术来控制梯度估计的方差,这些技术大部分情况下都可以降低方差,但是代价就是会在梯度估计中引入一些偏差。譬如Wieght Capping、NIS、TRPO等。

Exploration

众所周知,训练数据的分布会非常严重地影响是否能够学习到一个好的策略。探索旧的行为策略很少采取的action的探索策略已经被广泛应用。在实际系统中,暴力探索譬如 ϵ-greedy,在Youtube推荐中是不合适的,因为在大概率情况下会带来非常糟糕的用户体验。

我们使用了Boltzmann探索在不影响用户体验的前提下,得到探索数据的收益。我们考虑采用随机策略,也就是并非推荐概率最高的K个items而是从主策略π中采样而来。考虑到主策略计算完整的softmax开销太大,因此我们使用最近邻方案来寻找top M个(M >> K)候选集再在此基础上进行采样。这样既限制了推荐影响体验的候选集的风险,同时又保证了计算效率,而且还可以获得EE带来的收益。

模拟实验

本文首先设计模拟实验,以便在可控的环境下阐明off-policy correction的收益。为了简化,我们假设问题是无状态的,换句话说,奖励R独立于用户状态,并且动作也不会改变用户状态。因此,可以独立地选择轨迹上的每个动作。

Off-Policy Correction

第一个模拟实验中,我们假设有10个items,选中每一个item的收益就是他的index。当我们选择Top one item时,最优策略就是一直选第十个,因为其奖励最大。这里有一个明显缺点,当行为策略越多地选择次优item,那么学习到的新策略也就越偏向于选择次优的item。
下图比较了当行为策略β倾向于选择奖励最少的item时,是否有Off-Policy修正下的主策略π的分布情况。也就是最坏情况下,行为策略一直选择奖励最少的,发现我们也会学到一个类似行为策略一样不好的策略(如下图左所示)。而在应用Off-Policy修正让我们学到了一个最优策略π,不论收集到的行为策略的数据如何(如下图右所示)。

Top-K Off-Policy Correction

为了理解标准Off-Policy correction和Top-K Off-Policy Correction的区别,本文设计了推荐多个items的实验。同样假设有10个items,r(a1) = 10,r(a2) = 9,剩下的奖励都是1。我们专注于推荐Top 2的实验。同时设定行为策略β为均匀分布,每个item都有同等的机会。

从行为策略β中采样得到action-reward的pairs,标准的Off-Policy矫正有着如下的更新梯度:

而Top-K的Off-Policy矫正则有着另外一种梯度更新形式:

对比二者的梯度更新形式就可以发现,在Top-K的Off-Policy的梯度下,当π(a_i)很小时,lambda接近于K,那么迭代更新则会激进地增加选中a_i的可能性;当π(a_i)到一个足够大的值时,lambda接近于0。这时候即便π(a_i)仍然小于1,但是迭代更新时也不会进一步增加选中a_i的可能性。这样反而可以使获得第二高reward的item在主策略中得到一定的概率。下图左、右分别展示了标准方式和Top-K矫正方式学到的策略π。可以看到标准的Off-Policy矫正几乎全部集中于Top 1 item,也就是说策略基本没有学到次优项

线上实验

作者宣称这是Youtube近两年以来单词上线取得的最大收益

我们在Youtube推荐的RNN召回模型上做了一些列AB实验。这个模型是众多候选生成模型中的一个,在曝光给用户前会有一个独立的rank model去进行打分排序。模型根据上述RL算法来训练,实时奖励反应着用户的行为,推荐的视频没被点击的奖励为0。每个实验中实验组和对照组使用相同的reward函数。实验运行了很多天,模型在线上持续训练,新事件会在24小时内训练。实验期间,我们关注了各种线上指标,不过这里我们主要关注用户观看视频时长ViewTime。

本文在线上的实验描述了多个连续的改进,最新的推荐系统为下一个实验提供训练数据,这导致一旦生产系统采用新方法,后续实验就不能与早期系统进行比较。因此,以下每个实验会作为组件单独分析。

探索

本文想衡量是否要像之前描述的采样softmax模型下使用随机策略,要比一直根据softmax推荐概率最高的K个item的模型要好。

我们首先将平台用户分为了3个buckets,90%,5%,5%。前两个buckets基于确定性模型使用确定性策略,最后一个bucket用基于带探索性数据训练模型的stochastic policy。确定性模型用前两个buckets训练,随机模型用第一个和第三个bucket训练。这样两个模型训练使用的数据量是相等的,但随机模型会因为探索数据更容易观察到一些罕见的state,action pair。

按此实验流程,我们观察到测试群体中的ViewTime统计学显著性地增加了0.07%。虽然改进不大,但它来自相对少量的勘探数据(只有5%的用户在用随机政策)。随着随机政策的全面启动,我们预计会有更高的收益。

Off-Policy Correction

如下图所示绘制了由系统中的召回根据对照人群中的视频等级在对照和实验中选择的视频的CDF。当忽略数据收集与处理的bias会产生 强者恒强的现象。因此视频被推荐,可能仅仅是因为他在behavior policy里曾大量被推荐,而Off-Policy Correction可以帮忙解决这个问题。

有趣的是,在线上实验中,我们并没有观察到control与test群体之间的 ViewTime 发生统计显著性变化。然而,我们看到视频数量增加了0.53%,这在统计学上是显著的,这表明用户确实得到了更多的享受。

Top-K Off-Policy Correction

在本次实验中,我们让前面方程式中的超参K = 16 和上限c=e^3。鉴于我们可以推荐多个项目,Top-K Off-Policy让我们向用户提供比标准Off-Policy Correction更好的整体体验。特别是,我们发现测试流量中ViewTime增加了0.85%,观看的视频数量略微减少了0.16%

实验超参比较

最后,我们直接比较不同的超参数的选择如何影响Top-K Off-Policy Correction对平台上的用户体验。
首先测了下Top-K中的K。本文用K ∈ {1, 2, 16, 32}训练了结构相同的模型。当K = 1时, Top-K就是标准的off-policy correction。与基线K = 16相比 K = 1 导致ViewTime掉了0.66%。K = 2 也不好,不过差距变小了,ViewTime下降了0.35%,K = 32的效果类似基线。我们后续的实验显示K = 8 在ViewTime上有一定的正向(+0.15% statistically significant)。

其次,本文继续探讨了Variance Reduction Technique对学到的推荐系统的最终效果的影响。我们没有观察到NIS,或者TRPO对指标的提升。我们搞了个回归测试研究weight capping的影响,比较了c = e^3和c = e^5。当我们取消对importance weight的限制时,学到的策略πθπθ可能会过度适应一些意外获得高回报的logged actions。在线上实验中,当the cap on importance weight被增大时,我们观察到ViewTime显着下降了0.52%


喜欢本文的小伙伴,强烈建议加入卖萌屋的推荐系统讨论群,不仅可以认识众多志同道合的优秀小伙伴,而且还有若干卖萌屋美丽小姐姐(划掉)、顶会审稿人、大厂研究员、知乎大V等你来撩哦。

如果提示已满或过期,或希望加入领域大群(自然语言处理、搜索技术、推荐系统、算法岗求职等)或其他垂类讨论群,请在后台回复关键词【入群】获取入口哦。

记得扫描下方二维码关注并星标置顶,我才能来到你面前哦。

夕小瑶的卖萌屋

_

关注&星标小夕,带你解锁AI秘籍

订阅号主页下方「撩一下」有惊喜哦

参考文献

[1] Top-K Off-Policy Correction for a REINFORCE Recommender System

[2] https://www.youtube.com/watch?v=HEqQ2_1XRTs

[3] http://wd1900.github.io/2019/06/23/Top-K-Off-Policy-Correction-for-a-REINFORCE-Recommender-System-on-Youtube/

Google | 创造Youtube单次上线最高收益!解决推荐中的信息茧房困境相关推荐

  1. 导航抽屉(Google+与YouTube)

    本文翻译自:Navigation Drawer (Google+ vs. YouTube) Does anyone know how to implement a sliding menu like ...

  2. 搜狗号正式上线广告收益功能!

    上线两年,最近搜狗号后正式推送上线广告收益功能通知,以后通过搜狗号发文也能获得收益. 之前,搜狗号虽然作为搜狗用来抢占自媒体市场的新媒体业务,但是跟百家号和头条号一直大力补助创作者收益的模式不同,搜狗 ...

  3. Google收购YouTube,百度将收购谁?

    近日来,google收购youtube在业内又引起了一番波澜.两个不满30岁的人再一次成为了人们的焦点,吸引全世界的眼球. IT业收购之风又起. 最近美国新闻集团收购了MySpace网站. 思科系统公 ...

  4. 深度神经网络在Youtube推荐中的应用--开篇作之一--含部分实用技巧

    Deep Neural Networks for YouTube Recommendations Paul Covington, Jay Adams, Emre Sargin Google https ...

  5. Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue

    Vue 单文件组件 传统组件的问题和解决方案 1. 问题 1. 全局定义的组件必须保证组件的名称不重复 2. 字符串模板缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 3. 不支持 CS ...

  6. 高通宣布停止向俄罗斯公司销售产品;微信、抖音上线一键关闭 “个性化推荐 ”;Android 13官宣:5月11日见|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 一分钟速览新闻点! 微信.抖音.淘宝.微博等头部App已允许 ...

  7. c语言链表交换,求单链表的数据交换解决思路

    当前位置:我的异常网» C语言 » 求单链表的数据交换解决思路 求单链表的数据交换解决思路 www.myexceptions.net  网友分享于:2013-11-04  浏览:14次 求单链表的数据 ...

  8. php数据结构课程---2、链表(php中 是如何实现单链表的(也就是php中如何实现对象引用的))...

    php数据结构课程---2.链表(php中 是如何实现单链表的(也就是php中如何实现对象引用的)) 一.总结 一句话总结: php是弱类型语言,变量即可表示数值,也可表示对象:链表节点的数据域的值就 ...

  9. 【FBA】SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用...

    //http://www.cnblogs.com/OceanEyes/p/custom-provider-in-sharepoint-2013-fba-authentication.html 由于项目 ...

最新文章

  1. Androidx CoordinatorLayout 和 AppBarLayout 实现折叠效果(通俗的说是粘性头效果)
  2. 记一次MySQL字符集冲突导致的报错
  3. Windows内核驱动中操作文件
  4. 根据html页面模板动态生成html页面(c#类)
  5. iOS web与JS交互
  6. 超级实用sap table
  7. python 类继承和组合_python3--类与继承和组合
  8. AspNet MVC2 学习笔记
  9. php想做一个无刷新弹窗,php+ajax实现无刷新的新闻留言系统
  10. TARA-威胁建模方案3
  11. numpy.median
  12. 【Openbravo开发】Openbravo windows开发环境搭建
  13. SSD,eMMC,UFS的区别
  14. Unity3D疫情传播模拟器完整代码
  15. Mac必备神器之Go2Shell
  16. C语言,函数没有return,返回类型就是void的么?
  17. 如何简单快速的制作简历?
  18. Java日期格式化字母含义
  19. PEP最新提案推出,Python将上线重大更新,带来了哪些新功能?
  20. android跌倒检测,基于Android手机的老人跌倒检测方法的研究与设计

热门文章

  1. 产品设计 产品经理 喜欢的网站
  2. 求二维数组的转置矩阵
  3. WINCE应用的UI实现方案
  4. HDFS的读/写流程
  5. 父母悄悄给自己买房,我很生气,要怎么调整心态?
  6. Linux-C编程 / 多线程 / 如何终止某个线程?
  7. 你见过出道即巅峰吗?
  8. tablestore列式存储原理_10分钟搞透:技术人必会的MySQL体系结构与存储引擎!
  9. 自己动手写java虚拟机_自己动手写操作系统(要了解的知识点)
  10. form 窗体增加边框_C#控件美化之路(13):美化Form窗口(上)