22|强化学习:让推荐系统像智能机器人一样自主学习
22|强化学习:让推荐系统像智能机器人一样自主学习
讲述:王喆
时长15:16大小13.95M
强化学习的基本概念
强化学习推荐系统框架
深度强化学习推荐模型 DRN
DRN 的学习过程
DRN 的在线学习方法:竞争梯度下降算法
小结
课后思考
赞 10
提建议
精选留言(18)
- LUO FAN2021-02-19一直没想明白DBGD工程上是如何实现的。 按照论文,首先对原网络进行随机扰动,那么需要保存随机扰动之后的模型W',然后用W和W'产生的结果进行交织,根据结果选取好的保留。因为这里最后推荐是一个列表。要评估整个列表的推荐结果,至少需要等到用户手动刷新推荐或者离开推荐页。这个过程,按照我的现有知识,整个过程从生成推荐列表到获取列表反馈,完成下来可能需要几分钟。请问一次更新真的一般都是这么长时间吗?是否业界有其他办法? 如果真的像我所想,那么DBGD的弊端就是在这几分钟内网络权重只能迭代一次,而且探索方向只有一个。 如果增加要增加网络更新频率,可以用反向传播计算梯度,在线更新模型,这就和一般的神经训练一样,只是根据实时样本流训练。 增加探索方向可以使用Evolution Strategy。从当前网络权重为中心按照高斯分布采样,根据每个子网络的用户反馈计算梯度,用梯度上升更新网络。展开
作者回复: 好问题,一看就是资深工程师的“老成谋国”之言,哈哈。 我其实完全赞同你的观点,我觉得它不可能完成秒级别的更新,应该是以分钟为级别,而且应该是收集少量的mini batch数据之后进行一次梯度更新。 因为像你说的,列表展示、用户反应和交互最好需要几十秒到几分钟的时间,更别提整个数据流的延迟了。 我觉得这篇论文其实已经做了大量的工程妥协,我们也主要理解思路即可,不用太多纠结于具体的思路。
16 - 张弛 Conor2020-11-30思考题:我认为这个算法相比于随机梯度下降算法的弊端是:每个参数的更新方向是随机的,而不是像随机下降算法一样,是沿着梯度更新的。随机更新可能导致的结果就是:1.收敛是缓慢的。2.很难收敛到全局最优值。 课后问题: 1.请问老师,竞争梯度下降算法需要比较探索网络和当前网络的推荐效果,但是在模型结构图中,微更新的参考只有上阶段的推荐反馈,这里的推荐反馈只有一个,那么如何去更新竞争梯度下降算法呢?探索网络和当前网络的推荐效果是在图示的哪个阶段进行实现的呢? 2.请问老师,主更新的训练策略使用的也是竞争梯度下降算法吗?老师在文中提到,使用历史数据重新训练,这里指的是从零训练,还是说从离线阶段输出的模型进行fine-tune呢?展开
作者回复: 思考很好,赞。 问题1. 在实际实现中肯定不是只用一个效果就更新网络,而是做一小段实践的数据收集,再根据这个batch的效果进行探索网络和当前网络的选择。这部分在实际的工程中一般是在flink等流计算平台上实现的。 问题2. 主更新不使用梯度下降算法。实际工程中可视为一次正常的模型更新,使用的是全量历史样本,当然这其中包括了最近收集到的样本。
共 2 条评论13 - 对方正在输入2021-02-03老师您好!我曾经修读过《强化学习》系列课程,但是在阅读本节内容后有所疑惑: 1.首先我想请问的是这里的drn与进行序列决策的强化学习联系在哪?进行序列决策的dqn一般使用最小化TD error的方式更新,进行序列决策的policy network一般使用policy gradient公式更新,而这里的drn貌似是借用了dqn的概念而采用了完全不同的更新方式,这么做的优势何在? 2.这里ΔW的更新公式看起来像是随机的,似乎是一种gradient free的更新方式,现有的强化学习方法中,gradient free的方法是采样效率最低的,用这种方式更新drn是否会导致收敛速度过慢的问题? 3.目前强化学习领域的sota算法包括ppo、ddpg、sac、a3c等,这些算法是否有在推荐系统领域的应用? 谢谢老师!展开
作者回复: 这三个问题都非常非常好。但我觉得可以用一个简单的回答来尝试解决你的疑问。 我个人觉得DRN其实是为了工程上线做了大量的妥协。比如为什么用随机的方式尝试更新网络,因为不用online learning,减少了大量学习训练,模型上线的过程。 其他类似问题也可以从这个角度思考。总的来说,DRN是从传统模型更新方式转向强化学习的一个过渡工作。
10 - 旗开得胜2021-01-31微更新部分主要是学习用户的实时反馈,直接使用梯度下降也可以学习到,为什么要采用竞争梯度下降呢?
作者回复: 说的非常好,基于SGD的online learning确实可以做实时学习。但它的整个工程难度比竞争梯度下降难非常多,你可以从整个框架的角度去思考这个问题,为什么落地难度大非常多。
8 - 浣熊当家2020-11-30请问老师,非强化学习的模型,在业界一般模型参数多久更新一次呢?
作者回复: 一般的公司天更新的居多,算力强的公司也有一小时级别更新的。
7 - 那时刻2020-12-01“微更新”实时地学习用户的奖励反馈,更新推荐模型,再利用阶段性的“主更新”学习全量样本,更新模型。此时主更新更新的模型,会把微更新调优的模型完全覆盖么?如此的话,会不会把微更新调优的模型参数给抹掉了,从而导致模型参数变坏呢?
作者回复: 理论上主更新会使用包含最近样本及历史样本的全量数据进行更新,主更新的作用其实恰好是对微更新的参数进行一定程度的纠偏。因为实践中往往有一些延迟反馈、数据噪声等问题。 微更新的主要作用是获取实时反馈,提高模型实时性,二者是互补的。
6 - 孙晓波2020-11-30老师你好 增加实时性上采用FTRL进行在线学习和强化学习在最终结果上有什么区别,如何判断选择
作者回复: online learning其实可以看作强化学习的一个子集,或者说是子类。所以FTRL做在线学习本质上就是强化学习的一种。
5 - Abigail2021-05-05DRN 的微更新用到了竞争梯度下降算法,理解上可以近似我们的遗传算法/进化刷法。小的扰动可以理解为“网络offspring的变异”,然后根据反馈选择优秀的“子代”模型替代“上一代模型”。 另外一个思路就是,可以考虑集成学习的策略(Ensemble Learning)。建立合适的模型群,设计增加或者减少模型的策略,例如基于contribution scores 或者添加基于时间的权重等。 因为线上推荐系统的数据流是变化的,所以不存在一个“当前vs所有”或者历史意义上的最优模型, 只要用户对推荐效果的反馈不发生大幅度变差,就可以算是成功了!展开
作者回复: 我觉得这个理解非常好,确实是类似于遗传算法的模式去寻找最优参数。
4 - Geek_0d974b2021-02-26请教一个新闻推荐的问题,相对于商品的推荐问题,新闻更加有时效性,就是说每次候选集都是“新”的商品。是不是意味着每条新闻都要面临embedding 冷启动?除了你在专栏里提过的冷启动方法,业界还有没有别的针对新闻推荐的技巧呢?
作者回复: 是我在知乎专栏上详细介绍了一些embedding冷启动方法https://zhuanlan.zhihu.com/p/351390011 另外针对新闻推荐,我不是主要做这块的,但跟一些相关同行交流,有一个特点是新闻推荐其实在主模型之后掺杂着大量reranking的策略。比如会单独判断一些新的重大的news然后基于规则插入。这应该是新闻推荐的一个特点。
4 - 浣熊当家2020-12-02想继续请教老师,如果非强化学习模型参数的更新速度一般可以达到一天甚至一个小时一次,那么我可以理解为,强化学习的核心在于t1到t3这部分的微调整吗,我觉得强化学习本质采取了multi-bandit的探索&利用的模式,但是区别是,multi-bandit是划分人群,而强化学习是采用全部人群,随机排序不同模型的结果,并且把模型评估和模型训练融合在一个快速迭代的过程成,本质优势是降低了机会成本。
作者回复: 其实宽泛的意义上,mutli-bandit,online learning都属于强化学习的范畴。 但确实像你说的,典型的强化学习的最大功夫就在于如何进行这里的微调,一般来说mutli-bandit中的exploration策略会粗放一些,偏global的调整,但RL一般会通过进行新样本的学习,调整智能体也就是这里的模型来实现不断的学习。
4 - Leo Zhao2020-12-01我觉得 在线更新不是区别强化学习DRN的核心。DRN 的核心在于 DQN 把 状态 和 行动建立起评分联系。Q是Q learning 的意思,即 在这个状态下 可能的行动的评分预计。这个DQN的学习 才应该是核心,是区别传统的监督学习 输入输出pair 的关键。毕竟评分标准 不是直接的label.
作者回复: 其实理论上DQN也没有非常大的创新,因为所谓的状态就是用户所处的当前特征集合,所谓行动就是物品的特征。但是像你说的,这个思想是重要的,我们要建立强化学习中状态的和行动的概念和思想,看看能否应用到推荐系统之中。
4 - 抱小星2021-07-21DRN的微更新,弊端是随机更新收敛太慢,没有方向性。可以参考double DQN,用target net和action net结果之间的差值作为loss,然后隔一段时间将action net 赋值给target net,直至两者完全一致,收敛。而action net的更新采用了experience replay的技术,随机选取历史数据再训练,同时有小概率采用随机方向的探索,也许这样比DBGD更有方向性。
作者回复: 非常好,完全赞同
3 - 骚动2021-01-17老师您好,我想问下: 1. 微更新选择的模型参数是怎么选的? 2. 我们能否采用局部强化学习的方式来应用强化学习?比如说将重要特征处理部分该为强化学习,智能体就是这个重要特征处理网络,把推荐系统的其它部分纳入环境部分,行动就是推荐结果。
作者回复: 1. 微更新一般来说选择比较重要的参数,比如一些重要特征的权重参数等,而不是神经网络中大量的神经元相关参数。 2.可以的,非常好的应有思路。
3 - Alan2021-03-28答:更新计算效率缓慢,优化方向是否可以向Adam优化器一样,有个划分几个动态区间的范围,自适应调整,比对后得到最适合W。 问题1:DRN反复的推送接受过程,对于在线存储数据库设计有什么性能上的要求或注意地方吗? 问题2:在激励方面,是可以有长短有效回报激励机制,例如:可以在用户点击视频的t0-t2短期激励权重为0.3,t0-t5长期激励权重为0.7 问题3:DRN模型或强化学习是否可以应用的个性化推荐呢? 答:针对问题3的个人见解,目前觉得可以,针对相似用户群。通过对DRN模型精髓发现,对于硬件设备与资源计算消耗是巨大的,目前的感觉强化学习的推荐系统针对是应该是用户群更合适一些,所以我觉在先在用户数据特征工程上,选择相似度相近用户群数据会很符合强化学习的推荐系统的概念。至于,真正的工业化强化学习个性化专属推荐系统,是否落地,还有待观察吧!展开1
- Geek_7325222022-11-10 来自北京在基础的DQN网络中,Q网络作为前向传播网络计算得到t时刻状态s下执行动作a后得到的Q值,Q~网络计算t+1时刻状态s'下执行所有动作中能够让Q值最大的动作a',然后让Q(s,a)+α[R+ΥmaxQ~(s',a')-Q(s,a)]的结果不断接近Q(s,a)。这里的微更新更像是利用了DQN网络的Fixed Q-target的思想,在一定时间段对Q~网络进行固定,目的就是防止Q~网络经常变化,让上面公式的结果更好的收敛。
- happiless2021-05-18老师, 您的深度学习推荐系统的书上的内容有相关的代码实现吗, 还是这个DRN有实现的代码吗
作者回复: 这个模型没有代码实现
- 坐看云起2021-03-21请问老师,drn用历史数据进行线下训练是什么思路,我有两种想法,第一就是线下训练的是q网络,主要是输入状态和动作,输出是否推荐的01变量,这样线下训练的时候就是抛开了强化学习,就是一个分类问题,第二就是将用户的历史序列强行扩充为s,a,r,s' 的experience replay,然后在利用q(s,a) = r+q(s'.a)的方式训练,还是说这两种思路都不对,是别的办法
作者回复: 从DRN的文章来看,第一种的可能性大,基本是做定期的fully update结合mini batch的update这样的更新思路。 第二种其实工程实现难度会大一些,但也是基本可行的。
- 粪进2021-01-17请问老师,在t2时间点利用t1到t2阶段收集的点击数据对模型进行微更新,可是在DRN的三步学习过程中体现在哪一步呢?谢谢。
作者回复: 就是应用在模型的微更新过程中,调整模型参数的过程。
共 2 条评论