深度强化学习cs294 Lecture3&Lecture4: Introduction to Reinforcement Learning


今天的课程内容是关于强化学习。强化学习问题是一个优化问题,但首先需要定义需要优化的是什么,也就是强化学习的定义。所以今天的课程目标就是讲解强化学习,让大家理解强化学习的优化目标。大致总结一下不同种类的强化学习算法以及给一些例子。当然这些算法在后面的章节都会详细讲解。

1. Definition of a Markov decision process

在之前的模仿学习里面我们已经知道了序列决策的问题。也就是不断地根据当前时间的观察 o t o_{t} 来作出决策 a t a_{t} ,求出对于给定观察得到动作的分布的那个策略函数 π ( a t o t ) \pi_(a_{t}|o_{t})
在这里插入图片描述
大致上讲,强化学习算法就是通过学习参数来得到一个策略函数 π \pi 的过程。策略可以是依赖于当前的观察 o t o_{t} 也可以是根据完全的状态 s t s_{t} 。在这个基础上我们讲过状态的转移具有马尔可夫性,也就是 s 3 s_{3} 只与 s 2 s_{2} 有关而与 s 1 s_{1} 没有关系。

抛开模仿学习,假设我们目前没有那些人类专家的经验数据,那么我们将如何来得到最终想要的策略呢。我们要做的是定义一个reward函数,这个reward函数用来说明对应的动作是好是坏。不过最重要的事情是我们想要得到的目标不是选择一个动作来最大化当前能够得到的reward,而是计划能够选择出一个动作使得我们以后得到的reward期望最大。
在这里插入图片描述
比如对于开车这件事情而言,开的比较快那么当前的reward就比较大,而如果发生车祸那么reward就比较小。有时候有一些自身的reward不小但是最终会导致发生车祸这种较小reward的事情发生。所以可能宁愿选择降低开车的速度来避免以后发生车祸而不是提高速度得到当前的高reward。目前我们所说的所有的状态 s t s_{t} ,动作 a t a_{t} ,reward函数 r ( s t , a t ) r(s_{t},a_{t}) 和状态之间的转移概率 p ( s t + 1 s t ) p(s_{t+1}|s_{t}) 构成了我们所要说的马尔科夫决策过程。

在讲马尔科夫决策过程之前先说一下马尔科夫链。马尔科夫链有两个部分组成,一个是状态空间,另一个是状态转移的操作符号。为什么会表示成一个 操作符号呢?因为这样可以把状态转移表示成一个矩阵的形式,当做是一种映射过程。如果把状态也写成一个向量,那么就能够直接与其进行矩阵乘法的运算。马尔科夫链的性质就是我们之前所说的,后一个状态只与当前状态有关系,而与当前状态之前的所有状态都没有关联。
在这里插入图片描述
下面说道马尔科夫决策过程。与马尔科夫链相比,原来的状态空间与转移函数还在。但是新添了两个部分,分别是动作空间与reward函数。而且原先是一个二维矩阵形式的状态转移操作符现在变为张量的形式。它们几个变量之间的关系如图所示:
在这里插入图片描述
下一个状态不仅与当前的状态有关,还取决于当前时刻采取的动作 a t a_{t} 。而reward函数是定义在状态空间与动作空间的联合之上的,加入了reward函数之后就是一个完整的马尔科夫决策过程。
在这里插入图片描述
除此之外还有一个过程叫做部分可见马尔科夫决策过程(POMDP)。马尔科夫决策过程是建立在当前状态能够完全可见的假设之上的,但有时候并不是这样,策略只能建立在当前观察信息的基础上。与马尔科夫决策过程相比POMDP又增加了两个部分,一个是观察空间,另一个是状态到观察的映射概率分布。
在这里插入图片描述

2. Definition of reinforcement learning problem

所以强化学习就是在马尔科夫决策过程的基础上,有当前状态 s s ,通过一个策略函数 π θ ( a s ) \pi_{\theta}(a|s) 来做出一个动作 a a ,环境知道了当前的动作与状态之后会给出一个反应,得到一个新的状态 s s' ,同时返回一个当前的reward。然后不断循环这个过程。这样一个过程存在一个整个序列的概率值,利用马尔科夫决策过程的性质能够写出这个序列发生概率的表达式:
在这里插入图片描述
而强化学习的目标是找到一个参数 θ \theta ,是它能够得到一个在轨迹 τ \tau 的分布上得到最大的整个轨迹reward之和的期望。虽然有时候我们在强化学习里无法完美的得到这个目标值的求解,但是后面会讲到一些对于这个目标的估计方法。
在这里插入图片描述
其中如果把 π θ ( a t s t ) p ( s t + 1 s t , a t ) \pi_{\theta}(a_{t}|s_{t})p(s_{t+1}|s_{t},a_{t}) 看做一体,那么就可以当成是状态 s s 到状态 s s' 之间的状态转移概率,也就是让这个过程相当于是一个在(s,a)基础上的马尔科夫链。

正是因为能够把它看做是一个马尔科夫链,所以我们才能够使用分析马尔科夫链的方法来分析马尔科夫决策过程。首先来看有限步骤下的马尔尔科夫决策过程:
在这里插入图片描述
可以看到对于目标函数的写法做出了一些改变。首先把一条轨迹的reward和在轨迹分布上的期望写为了在当前 ( s t , a t ) (s_{t},a_{t}) 的边缘概率分布下期望的和。这么写是因为马尔科夫决策过程可以看作是在 ( s , a ) (s,a) 上的马尔科夫链,而转移函数如图所示,且利用了期望和的线性性质。因此如果我们能够得到这样的状态转移概率分布,那么就能够直接得到整个目标函数的结果。但是显然我们没法知道这个边缘概率。不过写为当前状态动作的reward的期望和的形式显然已经简单了很多。

下面看无限步的情形。无限步里面可能不太好计算无限个当前状态动作反馈的期望和。但是这确实是可以计算的。因为在马尔科夫链中,如果我们最终进行了无数次的转移,最终能够得到一个关于状态的稳定分布。而MDP是可以看做 ( s t , a t ) (s_{t},a_{t}) 的马尔科夫链的。如果 s t , a t ) s_{t},a_{t}) 也存在这么一个稳定分布,就意味着状态转移之后得到的概率分布是相同的,即 μ = T μ \mu = \Tau \mu 。这是说状态的分布是固定的,不是说转以后的状态不变。我们发现这样的 μ \mu 是存在的,就是对应着 T \Tau 矩阵特征值为1时候的特征向量,而这个特征向量在某些情形下是一定存在的。这也就意味着在无限步的情形下存在着一个关于 ( s , a ) (s,a) 的稳定分布,这个性质叫做ergocicity(虽然真实世界的例子中这个性质可能不存在)。有了这么一个分布存在,那么我们就能够计算无限步的reward期望的和,不过要加个平均。最终等价于是每一步对应的reward期望。这个稳定状态的收敛速度可以用reward的设计来使其加速达到。
在这里插入图片描述
无论是有限步还是无限步下,目标函数都是一个期望,而我们想要得到的是一个目标函数最大时的参数向量。这个参数向量能够影响这个期望所在的分布。在强化学习问题里,优化这个reward函数的期望是很自然的,因为很多时候reward本身是一个离散形式,而加上了期望就能够使其平滑或者可微。比如,如果还是开车,在路上正常形式reward是+1,如果是冲出路边就是-1。这样的reward没法优化,但是求了期望之后就很自然的加入了参数 θ \theta 从而是个平滑可优化的函数。
在这里插入图片描述

3. Anatomy of a RL algorithm

强化学习算法能够分解为三个部分,如下图所示:
在这里插入图片描述
举一个简单的例子。比如有个通过trial和error来进行学习的算法。先产生了一些rollout,得到轨迹数据。对应橘色方框。然后会使用评估函数来对这些产生的轨迹数据进行评估,会得到对应rollout是否是一个好的情况或是坏的情况。比如计算整个轨迹的reward和,这对应着绿色方框。目标肯定是让比较好的情况发生概率更大,让坏的情况发生概率更小。于是可能会使用梯度下降法来更新参数,这样就会对应着蓝色的方框。
在这里插入图片描述
还有另一个复杂一点的例子。如果想要做的不仅仅是通过trial和error来进行学习,而是通过学习一个仿真的模型来预测下一个状态。这样的方法叫做model-based方法。对应绿色方框里,有一个评估模型,通过一个BP网络来进行学习。依然是先产生数据,然后通过模型进行评估,然后在蓝色方框的部分会进行后向传播来改进模型以及策略。
在这里插入图片描述
这个例子里的模型和策略都是确定性的,不会学习到符合随机情形的策略。不过对于确定性的过程依然可用。重要的是这样一个算法依然符合之前所分析的三个部分,只不过可能每个部分稍微有一些不同。

那么这三个部分哪一个部分是比较费力的呢?对于实际的机器人或是自动驾驶等等,第一步产生数据的部分就非常困难。但是如果使用的是仿真环境比如MuJoCo,那么产生数据就相对简单很多。而对于第二部分评估例子,如果是简单的对奖励值进行叠加,那么就很简单。但是如果是需要使用model-based的方法来预测下一个状态从而进行评估,那这一步就很费力。最后一步如果是简单的梯度下降就也很简单,如果是后向传播就相对复杂一些。所以究竟哪一步更费力依赖于算法本身。
在这里插入图片描述
不过之前讲的那个例子为什么是不够用的呢?因为本身的一些设定决定了它只能处理某些简单情形而不能更广泛地使用。
在这里插入图片描述

对于随机的动态过程而言如何来找到解决方案呢?首先可以来计算一下目标函数,我们发现目标函数能够在条件期望下写为嵌套递推的形式。而基于不同的条件能够分别得到两个不同的值函数。第一个依赖于 ( s t , a t ) (s_{t},a_{t}) 的值函数叫做Q函数,而如果知道了Q函数,那么我们就能够非常简单地去改进对应时间步时候的策略从而得到更大的Q值。
在这里插入图片描述
类似的如果基于 s t s_{t} 作为条件,也能得到一个类似的奖励值期望函数V。它们都是策略 π \pi 的函数,而且 E s 1 p ( s 1 ) [ V ( s 1 ) ] E_{ s_{1} \sim p(s_{1}) } [ V(s_{1}) ] 就是整个强化学习问题的目标函数。
在这里插入图片描述
有了这两种表示,就能够对其使用从而改进策略。比如当我们知道某一步的Q值的时候,就能很简单的把那一步的策略改为最大化Q值即可。或者如果知道当前步骤中某个 Q π ( s , a ) > V π ( s ) Q^{\pi}(s,a) > V^{\pi}(s) ,那么可以增大对应动作的概率从而改进策略。
在这里插入图片描述
目前为止基本介绍完了强化学习里比较基本的概念,大致如下:
在这里插入图片描述

4. Brief overview of RL algorithm types

下面介绍一些强化学习的不同类型。对于强化学习而言目标都是一样的,那就是找出能够最大化轨迹奖励和的期望的策略。不同类别的算法达成这一目标的方式不太一样:
在这里插入图片描述
对于基于模型的强化学习算法而言,不仅是在绿色方框的部分需要应用和学习一个概率分布的模型,而且在蓝色方框改进策略的部分也有不同的选择方式:
在这里插入图片描述
具体的选择如下:
在这里插入图片描述
这些算法在后面的课程中都会详细讲解和实现。还有其它几种算法,都分别有各自不同的侧重点:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Why so many RL algorithms?

这些不同的算法都有不同的侧重点。主要有如下几个方面:
在这里插入图片描述
比如其中比较重要的一点是对于样本利用的效率。sample efficiency代表着到底需要多少样例算法才能够得到一个比较好的策略。其中比较重要的因素是算法是否是off-policy的。off-policy的算法能够利用与当前策略产生的轨迹不同的数据,这样就不需要一直产生新的样本。但是on-policy的算法不同,必须利用与当前策略产生的轨迹相同的数据才可以,也就是说如果on-policy的算法里策略一旦修改,那么就需要重新产生数据。
在这里插入图片描述
对于不同形式的算法来说,sample efficiency可以化成一个坐标轴。
在这里插入图片描述
那么就有一个问题,一般来说肯定是需要样本越少的算法越好,那为啥还要选择呢?实际上是因为拥有不同sample efficiency的算法一般情况下实现起来的难度或者运行所消耗的时间也是不同的。一般情况下需要更少样本的算法需要等待的时间会更长。因为需要比较多样本的算法一般比较容易并行实现,有可能能够更快运行结束。这是一种tradeoff。另外还有一个需要担心的地方,那就是算法的收敛性。

算法的收敛性是一个很大的问题。在强化学习里需要知道算法是否收敛?收敛到何处?是否每次都能收敛?在监督学习里就不会有这样的问题,因为监督学习里的梯度下降方法能够保证收敛到local optima。但是强化学习里往往用的不是梯度下降方法,有时候不能保证收敛。
在这里插入图片描述
对于不同形式的强化学习算法而言,稳定性与易用性之间也有一定的冲突。
在这里插入图片描述
在value function fitting里,算法的目标是去逼近期望反馈。可能能够得到一个足够好的值函数的估计,但是这与找到一个好的策略是不等同的。虽然如果这个error足够小你会得到一个好的策略,但是如果error不为0,那么这些错误不会等同与得到稍差一点的策略。最坏的情况下甚至完全学不到好的策略。其它的算法有时候会面临类似的情况。

而且算法有一些不同的假设条件,有三个比较常用的假设如下:
在这里插入图片描述
最终是这些对应的算法举例,本门课后面会慢慢学习这些算法。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_25037903/article/details/84388092