CategoryResourceRepost/极客时间专栏/深度学习推荐系统实战/推荐模型篇/22|强化学习:让推荐系统像智能机器人一样自主学习.md
louzefeng d3828a7aee mod
2024-07-11 05:50:32 +00:00

133 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<audio id="audio" title="22强化学习让推荐系统像智能机器人一样自主学习" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/9a/63/9aac277df3d25b66870664f5df053063.mp3"></audio>
你好我是王喆。这节课我们继续来讲深度推荐模型发展的前沿趋势来学习强化学习Reinforcement Learning与深度推荐模型的结合。
强化学习也被称为增强学习它在模型实时更新、用户行为快速反馈等方向上拥有巨大的优势。自从2018年开始它就被大量应用在了推荐系统中短短几年时间内[微软](http://www.personal.psu.edu/~gjz5038/paper/www2018_reinforceRec/www2018_reinforceRec.pdf)、[美团](https://tech.meituan.com/2018/11/15/reinforcement-learning-in-mt-recommend-system.html)、[阿里](https://arxiv.org/abs/1803.00710)等多家一线公司都已经有了强化学习的成功应用案例。
虽然,强化学习在推荐系统中的应用是一个很复杂的工程问题,我们自己很难在单机环境下模拟,但理解它在推荐系统中的应用方法,是我们进一步改进推荐系统的关键点之一,也是推荐系统发展的趋势之一。
所以这节课我会带你重点学习这三点内容一是强化学习的基本概念二是我会以微软的DRN模型为例帮你厘清强化学习在推荐系统的应用细节三是帮助你搞清楚深度学习和强化学习的结合点究竟在哪。
## 强化学习的基本概念
强化学习的基本原理,简单来说,就是**一个智能体通过与环境进行交互,不断学习强化自己的智力,来指导自己的下一步行动,以取得最大化的预期利益**。
事实上,任何一个有智力的个体,它的学习过程都遵循强化学习所描述的原理。比如说,婴儿学走路就是通过与环境交互,不断从失败中学习,来改进自己的下一步的动作才最终成功的。再比如说,在机器人领域,一个智能机器人控制机械臂来完成一个指定的任务,或者协调全身的动作来学习跑步,本质上都符合强化学习的过程。
为了把强化学习技术落地,只清楚它的基本原理显然是不够的,我们需要清晰地定义出强化学习中的每个关键变量,形成一套通用的技术框架。对于一个通用的强化学习框架来说,有这么六个元素是必须要有的:
- **智能体Agent**:强化学习的主体也就是作出决定的“大脑”;
- **环境Environment**:智能体所在的环境,智能体交互的对象;
- **行动Action**:由智能体做出的行动;
- **奖励Reward**:智能体作出行动后,该行动带来的奖励;
- **状态State**:智能体自身当前所处的状态;
- **目标Objective**:指智能体希望达成的目标。
为了方便记忆,我们可以用一段话把强化学习的六大要素串起来:一个**智能体**身处在不断变化的**环境**之中,为了达成某个**目标**,它需要不断作出**行动**,行动会带来好或者不好的**奖励**,智能体收集起这些奖励反馈进行自我学习,改变自己所处的**状态**,再进行下一步的行动,然后智能体会持续这个“**行动-奖励-更新状态**”的循环,不断优化自身,直到达成设定的目标。
这就是强化学习通用过程的描述那么对于推荐系统而言我们能不能创造这样一个会自我学习、自我调整的智能体为用户进行推荐呢事实上微软的DRN模型已经实现这个想法了。下面我就以DRN模型为例来给你讲一讲在推荐系统中强化学习的六大要素都是什么强化学习具体又是怎样应用在推荐系统中的。
## 强化学习推荐系统框架
强化学习推荐模型DRNDeep Reinforcement Learning Network深度强化学习网络是微软在2018年提出的它被应用在了新闻推荐的场景上下图1是DRN的框架图。事实上它不仅是微软DRN的框架图也是一个经典的强化学习推荐系统技术框图。
<img src="https://static001.geekbang.org/resource/image/2f/27/2ff55be8dea34e992bcb09e1f3c39a27.jpg" alt="" title="图1 深度强化学习推荐系统框架">
从这个技术框图中我们可以清楚地看到强化学习的六大要素。接下来我就以DRN模型的学习过程串联起所有要素来和你详细说说这六大要素在推荐系统场景下分别指的是什么以及每个要素的位置和作用。
在新闻的推荐系统场景下DRN模型的第一步是初始化推荐系统主要初始化的是推荐模型我们可以利用离线训练好的模型作为初始化模型其他的还包括我们之前讲过的特征存储、推荐服务器等等。
接下来推荐系统作为智能体会根据当前已收集的用户行为数据也就是当前的状态对新闻进行排序这样的行动并在新闻网站或者App这些环境中推送给用户。
用户收到新闻推荐列表之后,可能会产生点击或者忽略推荐结果的反馈。这些反馈都会作为正向或者负向奖励再反馈给推荐系统。
推荐系统收到奖励之后,会根据它改变、更新当前的状态,并进行模型训练来更新模型。接着,就是推荐系统不断重复“排序-推送-反馈”的步骤,直到达成提高新闻的整体点击率或者用户留存等目的为止。
为了方便你进行对比,我也把这六大要素在推荐系统场景下的定义整理在了下面,你可以看一看。
<img src="https://static001.geekbang.org/resource/image/ea/2b/eac0fea51d5033a35332cd81f653202b.jpeg" alt="">
到这里,你有没有发现强化学习推荐系统跟传统推荐系统相比,它的主要特点是什么?其实,就在于强化学习推荐系统始终在强调“持续学习”和“实时训练”。它不断利用新学到的知识更新自己,做出最及时的调整,这也正是将强化学习应用于推荐系统的收益所在。
我们现在已经熟悉了强化学习推荐系统的框架但其中最关键的部分“智能体”到底长什么样呢微软又是怎么实现“实时训练”的呢接下来就让我们深入DRN的细节中去看一看。
## 深度强化学习推荐模型DRN
智能体是强化学习框架的核心作为推荐系统这一智能体来说推荐模型就是推荐系统的“大脑”。在DRN框架中扮演“大脑”角色的是Deep Q-Network (深度Q网络DQN)。其中Q是Quality的简称指通过对行动进行质量评估得到行动的效用得分来进行行动决策。
<img src="https://static001.geekbang.org/resource/image/75/8a/75d38d425b1a72350ce85e8b676d928a.jpg" alt="" title="图2 DQN的模型架构图">
DQN的网络结构如图2所示它就是一个典型的双塔结构。其中用户塔的输入特征是用户特征和场景特征物品塔的输入向量是所有的用户、环境、用户-新闻交叉特征和新闻特征。
在强化学习的框架下,用户塔特征向量因为代表了用户当前所处的状态,所以也可被视为**状态向量**。物品塔特征向量则代表了系统下一步要选择的新闻,我们刚才说了,这个选择新闻的过程就是智能体的“行动”,所以物品塔特征向量也被称为**行动向量**。
双塔模型通过对状态向量和行动向量分别进行MLP处理再用互操作层生成了最终的行动质量得分Q(s,a),智能体正是通过这一得分的高低,来选择到底做出哪些行动,也就是推荐哪些新闻给用户的。
其实到这里为止我们并没有看到强化学习的优势貌似就是套用了强化学习的概念把深度推荐模型又解释了一遍。别着急下面我要讲的DRN学习过程才是强化学习的精髓。
### DRN的学习过程
DRN的学习过程是整个强化学习推荐系统框架的重点正是因为可以在线更新才使得强化学习模型相比其他“静态”深度学习模型有了更多实时性上的优势。下面我们就按照下图中从左至右的时间轴来描绘一下DRN学习过程中的重要步骤。
<img src="https://static001.geekbang.org/resource/image/96/2a/96509410e50e019e5077f6a2a909292a.jpg" alt="" title="图3 DRN的学习过程">
我们先来看离线部分。DRN根据历史数据训练好DQN模型作为智能体的初始化模型。
而在线部分根据模型更新的间隔分成n个时间段这里以t1到t5时间段为例。首先在t1到t2阶段DRN利用初始化模型进行一段时间的推送服务积累反馈数据。接着是在t2时间点DRN利用t1到t2阶段积累的用户点击数据进行模型微更新Minor update
最后在t4时间点DRN利用t1到t4阶段的用户点击数据及用户活跃度数据进行模型的主更新Major update。时间线不断延长我们就不断重复t1到t4这3个阶段的操作。
这其中我要重点强调两个操作一个是在t4的时间点出现的模型主更新操作我们可以理解为利用历史数据的重新训练用训练好的模型来替代现有模型。另一个是t2、t3时间点提到的模型微更新操作想要搞清楚它到底是怎么回事还真不容易必须要牵扯到DRN使用的一种新的在线训练方法Dueling Bandit Gradient Descent algorithm竞争梯度下降算法
### DRN的在线学习方法竞争梯度下降算法
我先把竞争梯度下降算法的流程图放在了下面。接下来,我就结合这个流程图,来给你详细讲讲它的过程和它会涉及的模型微更新操作。
<img src="https://static001.geekbang.org/resource/image/c9/14/c94b7122f71d8b7845ffca3fd239e314.jpg" alt="" title="图4 DRN的在线学习过程">
DRN的在线学习过程主要包括三步我带你一起来看一下。
第一步对于已经训练好的当前网络Q对其模型参数**W**添加一个较小的随机扰动得到一个新的模型参数这里我们称对应的网络为探索网络Q~。
在这一步中由当前网络Q生成探索网络 产生随机扰动的公式1如下
$$<br>
\Delta \mathrm{W}=\alpha \cdot \operatorname{rand}(-1,1) \cdot W<br>
$$
其中,$\alpha$是一个探索因子决定探索力度的大小。rand(-1,1)产生的是一个[-1,1]之间的随机数。
第二步对于当前网络Q和探索网络 Q~分别生成推荐列表L和 L~再将两个推荐列表用间隔穿插Interleaving的方式融合组合成一个推荐列表后推送给用户。
最后一步是实时收集用户反馈。如果探索网络Q生成内容的效果好于当前网络Q我们就用探索网络代替当前网络进入下一轮迭代。反之我们就保留当前网络。
总的来说DRN的在线学习过程利用了“探索”的思想其调整模型的粒度可以精细到每次获得反馈之后这一点很像随机梯度下降的思路虽然一次样本的结果可能产生随机扰动但只要总的下降趋势是正确的我们就能够通过海量的尝试最终达到最优点。DRN正是通过这种方式让模型时刻与最“新鲜”的数据保持同步实时地把最新的奖励信息融合进模型中。模型的每次“探索”和更新也就是我们之前提到的模型“微更新”。
到这里我们就讲完了微软的深度强化学习模型DRN。我们可以想这样一个问题这个模型本质上到底改进了什么从我的角度来说它最大的改进就是把模型推断、模型更新、推荐系统工程整个一体化了让整个模型学习的过程变得更高效能根据用户的实时奖励学到新知识做出最实时的反馈。但同时也正是因为工程和模型紧紧地耦合在一起让强化学习在推荐系统中的落地并不容易。
既然,说到了强化学习的落地,这里我还想再多说几句。因为涉及到了模型训练、线上服务、数据收集、实时模型更新等几乎推荐系统的所有工程环节,所以强化学习整个落地过程的工程量非常大。这不像我们之前学过的深度学习模型,只要重新训练一下它,我们就可以改进一个模型结构,强化学习模型需要工程和研究部门通力合作才能实现。
在这个过程中,能不能有一个架构师一样的角色来通盘协调,就成为了整个落地过程的关键点。有一个环节出错,比如说模型在做完实时训练后,模型参数更新得不及时,那整个强化学习的流程就被打乱了,整体的效果就会受到影响。
所以对我们个人来说,掌握强化学习模型的框架,也就多了一个发展的方向。那对于团队来说,如果强化学习能够成功落地,也一定证明了这个团队有着极强的合作能力,在工程和研究方向上都有着过硬的实践能力。
## 小结
强化学习是近来在学术界和业界都很火的话题,它起源于机器人领域。这节课,我们要重点掌握强化学习的通用过程,以及它在深度学习中的应用细节。
简单来说,强化学习的通用过程就是训练一个智能体,让它通过与环境进行交互,不断学习强化自己的智力,并指导自己的下一步行动,以取得最大化的预期利益。这也让强化学习在模型实时更新,用户行为快速反馈等方向上拥有巨大的优势。
但强化学习的落地并不容易整个落地过程的工程量非常大。现阶段我们只需要以微软的DRN模型作为参考重点掌握强化学习在推荐系统领域的应用细节就可以了。
一个是DRN构建了双塔模型作为深度推荐模型来得出“行动得分”。第二个是DRN的更新方式它利用“微更新”实时地学习用户的奖励反馈更新推荐模型再利用阶段性的“主更新”学习全量样本更新模型。第三个是微更新时的方法竞争梯度下降算法它通过比较原网络和探索网络的实时效果来更新模型的参数。
为了方便你复习,我们把这节课的重点知识总结在了下面的表格中,你可以看看。
<img src="https://static001.geekbang.org/resource/image/a6/15/a62dc5c0837f25bb8dd9bc2aa46e5c15.jpeg" alt="">
## 课后思考
DRN的微更新用到了竞争梯度下降算法你觉得这个算法有没有弊端你还知道哪些可以进行模型增量更新或者实时更新的方法吗
欢迎把你的思考和疑问写在留言区,如果你的朋友们也在关注强化学习在推荐系统上的发展,那不妨也把这节课转发给他们,我们下节课见!