今天的课算是关于如何优化奖励函数的强化学习算法的第一课。在接下来的几周中会讲到更多关于某个算法的细节,而今天就做一些数学推导。目的是对强化学习中一些一般的定义和不同种类的算法,有一个基本的认识。对典型的强化学习算法的原理有一个高层次的认识,所以今天的东西可能会有一点点高阶。如果看起来有点吃力,不用担心后面几周会讲到更多细节,而且会讲到这些方法的推导过程和实现过程中的难点。

今天会先讲一下马尔科夫决策过程的定义,这是很多强化学习算法中最核心、最基础的数学概念。还会讲到强化学习问题的定义,强化学习问题本质上来说是一个优化问题,但是需要定义你的优化目标是什么?自变量是什么?然后会介绍典型的强化学习算法的内部结构,实际上后面我们讲到的所有强化学习算法,他们都能分解成三个部分。会将一下那三个部分分别是什么,然后会给一些例子说明对于不同的方法这些部分如何变化。然后会大概介绍一下这门课要讲到的不同种类的算法。所以今天课程的目的就是理解定义和符号,从而理解强化学习算法的根本目标,也就是强化学习算法到底在优化什么。对于今天讲到的这些算法有一个总结性的认识。当然在后面的课程中会讲到更多关于这些算法的细节。

那么我们从定义开始。

我们已经知道关于顺序决策问题的几个组成部分,在模仿学习的那一节课中讲到一个顺序决策问题是怎么由observations、actions、policy组成的,其中policy是给定observations的actions的分布,最终要得到的也就是policy,policy是以某种方式参数化的。在模仿学习那节课中,讲到一个由参数向量θ参数化policy是对给定observations的关于actions的条件分布的建模,其中θ是神经网络的参数。后面会看到,在有些强化学习算法中,不是直接学习一个policy,而是学得一些其他的函数,比如价值函数或者是Q函数,从而推导出一个policy,所以要知道并不总是要像这样直接得到一个policy,只是有时候会这样。实际上下周开始讲的强化学习算法就是这样的,通过策略梯度的方法直接得到一个这样形式的policy,但这并不是一般的情况。
强化学习更一般的情况是你的策略,也就是给定observations的actions的条件分布,可以有一个完全观察的情况。也就是你的策略是给定states的actions的条件分布。关于states和observations的区别,上次讲过了。states是满足马尔可夫随机过程性质的,意思是说这里的states_3和states_1,在给定states_2的条件下是独立的。但是observations是不满足马尔可夫随机过程性质的。关于完全观察和部分观察的区别,对于某些算法来说是非常重要的。有些算法是假定在完全观察的基础上的,有些算法对部分观察的情况也很适用,所以这是一个需要知道的很重要的区别。

所以在模仿学习中有这样一个例子,准确的说是,假设你在驾驶,你可以收集大量关于人类专家的数据,这些数据由专家在每个时间节点作出的actions以及对应的他们看到的observations,将所有这些observation和action的组合收集成训练集,然后就能用一些常用的监督学习的算法训练一个网络,将这些observations映射到actions,更一般的可以用dagger来解决一些上述这种行为克隆方法的缺点。

现在先把模仿学习放一边,来讨论在没有专家数据的时候,如何学习到有效的策略。在变异学习那一讲的最后会讲到在这种情况下,你应该怎么重新定义,你想要你的策略做的事情。因为你没有数据在学习了,这个时候奖励函数就应运而生,所以奖励函数就是用来找出什么action更好或者更坏。一般来说,奖励函数是states和actions的函数,他告诉我们什么states和actions组合更好的,但问题是我们不是要通过选取最佳的action,从而获得当前的最大奖励,而是要最大化整个过程的奖励。这意味着,当前我们选择的action可能奖励不是最大的,但时基于这样的选择,我们可以在后面的某个时刻达到一个更大奖励的状态。
所以对于这个开车的例子,假设我们在路上正常行驶的时候得到的奖励很高,当和其他车辆发生车祸的时候,得到的奖励很低,但是肯定有这么一个事件组合会导致到达这样的低奖励状态,即使这些事件本身的奖励是不低的,所以很可能,当你开的很快的时候或者在道路中间开车的时候,你得到的奖励很高。但是这样的话,你就很可能发生车祸,从而导致总的奖励变低,所以你可能要避免在路中间行驶。因为你知道这样会导致你到达一个总奖励更低的状态,比如出车祸,所以在强化学习中,一个很重要的事情,同时也是很大的挑战,就是你要最大化整个过程的奖励。这意味着,在当前奖励低的选择能够在后面得到更高的奖励。所以所有我们刚刚介绍的这些东西state、action、reward、transition,所有这些定义了什么是马尔可夫决策过程,所以马尔可夫决策过程定义了强化学习的基本世界观,他有states、actions、rewards、transitions。

你们很多人可能之前已经听过马尔可夫决策过程,可能会想到底这个叫马尔可夫的人是何方神圣,为什么用他的名字命名?他叫Andrey Markov,他没有发明马尔可夫决策过程,但是他在马尔可夫随机过程领域做了很多工作,因马尔可夫链而闻名,但是这个马尔可夫决策过程是有区别的,所以马尔可夫链是一个非常简单的模型。用来建模一个时间性的过程,不是一个控制时间性的过程。就是一个只包含states的时间过程,所以在马尔可夫链中,就需要定义一个状态空间和转移概率,所以S就是状态空间,是一个离散或者连续的状态集合,取决于你的需要。
T是一个转移算子。转移算子定义了给定你现在所处的状态,进入到某个特定状态的概率,所以实际上就是一个条件概率分布,至于为什么我们有时候叫他转移算子,是因为在离散状态空间中,你可以用矩阵表示这个T,然后他可以作用在一个概率向量上。用更正式的符号定义就是uti表示在当前时间节点,状态是i的概率,然后我们能创建一个ut向量,向量的每一个元素表示在时刻t处在对应状态的概率。如果我们有五个状态,那么ut就是一个有五个元素的向量。他们的和加起来是1,而不是每个数都大于0,这就是状态的概率分布。那么如果我创建一个矩阵元素Tij表示当我目前在状态j下一个状态会转移变到状态i的概率,然后我就可以用一个简单的线性方程来模拟我的马尔可夫链的变化过程,也就是PPT中公式所示。因为当我用这个矩阵这个向量的时候,实际上做的操作就是给定上一个时刻的状态概率向量得到的是现在这个时刻我处在各个状态的概率,所以如果状态空间是离散的时候,我想模拟马尔可夫链的变化过程的话,我只需要用转移算子乘以当前的概率向量就能得到新的概率向量(下一时刻),然后可以推测在连续状态空间的情况。其实也差不多,只不过现在我的向量是无限维的,所以要用电脑计算的话有点困难,但是基本的理论还是一样的。
可以用图表示马尔可夫链就非常简单,在马尔可夫链中,唯一的变量就是状态states,唯一的条件概率分布就是给定当前状态的下一个状态的概率分布,所以关于马尔可夫链的所有问题都是比较简单和直接的。当然马尔可夫链中的状态要满足一个性质就是,下一个状态和之前的状态在给定当前的状态的条件概率是条件独立的,可以理解成下一个状态只与当前状态有关,所以现在马尔可夫链就告一段落。

下面通过引入一些关于actions、rewards的概念,转入马尔可夫决策过程的介绍。所有这些类似的概念都是源自Richard bellman的动态规划的书和上世纪50年代的公司,所以在马尔可夫决策过程中我们添加了两个额外的概念,还保留了状态和转移算子,现在要添加一个行动空间和一个奖励函数。状态空间也是一个由离散或者连续的状态组成的集合。行动空间是离散或者连续的集合。和状态空间不同,用图表示模型就是这样。添加了actions,这些actions不依赖于其他的变量,但是他们和状态一起决定了下一个状态。转移算子现在是一个张量,因为转移算子需要表示给定(上一个)状态和行动的(当前)状态的概率,所以ut还是表示在某个时刻T处于特定状态的概率,你也可以用另一个向量表示。在时刻T的时候,采取某个特定的行动的概率。现在转移算子就是一个三维张量,所以T、i、j、k就是给定上一个状态是j以及你采取的行动是k,然后现在的状态是i的概率。那么就可以像之前一样模拟这个过程,随时间的变化通过一个线性算子。线性算子是action的分布,状态的分布和转移算子的乘积,所以实际上就等于对所有j、k将这样的算子求和,所以到目前为止,问题还是相当直接的,那么现在把奖励函数加上。

之前提到过,奖励函数就是一个标量函数。定义域是状态和行动空间的叉积,所以对于所有的状态和行动,所有状态和行动的组合,都有一个对应的标量,这就是奖励函数的定义。现在就能完整的定义马尔可夫决策过程了。

现在我们没有讲到observations(观察)。之前提到过一般情况下的强化学习,你的策略要么是直接在这些观察的基础上作出反应,而不需要知道潜在的状态,这种情况就是通常所说的部分观察马尔可夫决策过程,这是马尔可夫决策过程的泛化。它给了我们关于强化学习的最一般形式,我们并不总是和这种一般形式打交道。实际上,在后面的课程中要推导的很多算法都是处理的常规MDP的情况。但是最一般的情况还是POMDP,所以在POMDPs中还需要添加一个观察空间和一个输出概率(给定states的observations的条件概率),这是要添加的两个东西,所以最后由一个状态空间,离散的或连续的,我们有一个行动空间,也是离散的或连续的,我们有一个观察空间,也是离散的或连续的。状态空间是你的车子的位置和动量,行动空间是是否踩刹车或者是否打方向盘,观察空间就是摄像机拍摄的图片,所以如果我们用图表示这个模型就像这个样子的,所以要做的事情是添加了这些。由状态决定的观察、转移算子和之前一样,所以转移算子和观察是没关系的,但是还有一个输出概率,这个输出概率就是给定状态的观察的条件概率,可以表示成一个矩阵。奖励函数的定义还是和之前一样,是一个关于状态和行动的标量函数。

那么目前我们已经定义了POMDPs和MDPs,实际上可以给强化学习定义一个目标函数,用一个等式表示想要强化学习算法做什么,所以对于策略,可以用一个神经网络显式表示或者用类似于价值函数的方式隐式表示。具体是什么方式并不需要太担心,只需要记住的是POMDPs的情况后面会讲到。这里是MDPs的情况,只需要记住的是不管用什么方法表示策略,都会有参数向量。如果使用神经网络表示的,那么参数就是网络的权重。但是一般情况下是一些参数向量,所以实际上这个才是你要学习的。通过输入状态,输出行动。这样的状态和行动组合会影响环境,从而到达下一个状态。所以在给定当前状态,有这样一个转移算子决定了下一个状态的分布,但是这是你事先不知道的,所以这就是,所以这就是用图表示的MDPs的过程。这个过程可以引出元组序列轨迹的概率分布,所以一个轨迹是一组状态和行动的序列。这里写的是有限长度T的轨迹,也可以有无限长度的轨迹。
但是现在先看下有限长度的轨迹。因为这样目标函数好写一些。基于已经定义的所有这些概念,实际上可以写处一个关于观测到一个特定轨迹s1、s2…知道st、at的等式,简写成(参考PPT)表示在给定特定的参数出现一组特定的状态和行动的组合序列的概率。可以通过链式规则,也就是s1的概率,这是初始状态,也就是你从一个特定的状态开始的概率乘以一个乘积项,这个乘积项的组成是(参考PPT)。st、at转换概率加上给定的st,这是通过链式规则得出来的,给出了轨迹的概率分布。现在要用这个分布来得到目标,目标是找到这么一组参数能够使所有轨迹的激励总和的期望值最大,所以你要把他写成期望的形式。因为一般情况下,在给定参数向量下,状态和行动仍然是随机变量,所以要对这些随机变量分布的激励和求期望,其中的参数就是θ,这个参数决定了模型中间的这个条件概率(参考PPT),所以这是强化学习算法的目标。在很多强化学习的问题中,我们可能不知道转移概率,所以可以在纸上写下这个目标公式,但是并不是总能在电脑上得到结果。后面还会谈到,通过不同的方法做估计,所以现在把公式重新分解下,然后得出无限时间的目标公式。如果把这个概率分布看成是一个马尔可夫链,但是状态看空间不同,所以如果我们创建一个新状态,由原来的状态和行动组成,这样一来仍然可以看成是一个简单的马尔可夫链。
通常一个MDP用图表示是这样的,由状态和行动,还有一个转移概率,即给定st、at的st+1的概率,还有给定st的at的概率。
所以能等价的把这个转化成另一个马尔可夫链,其中st和at是一起的。概率转移就是从st、at开始的概率(参考PPT公式),只是at加1通过乘法一起给出规定的转移概率,这么做看起来好像有点蠢,但是有时候很有用。我们知道如何分析马尔可夫链知道怎么找到他们的稳态分布等等,所以我们用在分析马尔可夫链的概念,同样也可以用在分析马尔可夫决策过程中。
现在我们再回顾一下,刚才讲过的有限时间的情况。这是上一张PPT提到的目标,可以对这个目标做一些变换,比如可以把它写成状态和行动的边缘分布的期望和,所以我们可以把求和放在期望的外面,从而简化了一点点,所以要记住,这是一个马尔可夫链。转移概率由MDP中的转移概率和策略相乘,使用期望的线性性质,所以可以把求和放到求期望的外面,那么现在在求和符号里面的就是基于每个时刻的状态和行动所获得的激励之和,那么就可以把它简化成st、at的期望或者概率之和,这是边缘分布。所以要通过所有在那个时刻没有出现的状态和行动得到,所以在马尔可夫链中可以计算出这些边缘分布,然后转化成很直接的形式,然后就可以很简单的去模拟这个过程。如果不知道转义算子,问题就会变得更复杂。这个后面会详细讲,但是我们可以定义或者重定义这个目标为这样(参考PPT公式),看上去会简单一些。现在是将每个时刻的期望按照时间求和,所以这叫做状态-行动边缘分布。

但是用状态-行动边缘分布来重新定义,目前来说并不是那么有用。但是在无限时间的情况用它来推导强化学习算法的目标公式的时候就显得很有用,所以在无限时间的情况,如何得到类似这样的公式,看起来好像有点复杂,因为要对无限项求和。当T等于无穷大的时候,但是不能得到一个明确的定义,因为在假设条件不是很强的时候,可以推导出马尔可夫链的稳态分布。但如果无限变化,到最后到达一个特定的分布。
我们要怎么做?这是之前讲过的等式,在解释为什么T的作用相当于一个转移算子,所以如果你有T,可以得到st+1、at+1,只需要将当前的st乘以T,这是state-action转换算子。而且要记住,这是通过把MDP中的转换算子和策略相乘得到的。所以一般情况下,如果想要模拟k次的变化,你只需要将现在的st、at和转换算子的k次方相乘。实际上是做了k次这样的变换。如果你想做无限次数的变换就乘以T的无限次方。所以我们现在问这样一个问题,这样会到达一个稳态分布吗?也就是说当k足够大的时候,变换前后得到的是一样的值。可以推导一下,如果有的话,这样一个稳态分布是怎样的。稳态分布的意思是把概率向量和转换算子相乘,得到的概率向量和之前一样。因为稳态意味着你的分布不变了,但是不是说状态不变了,而是说状态可能发生变化。但是总的来说,概率分布保持不变,所以能做的就是利用这个性质求解这个等式,转换前后的分布都是一样的,那么就可以将等式变换成左边的u等于右边的转移矩阵T乘以u,T减I乘以u等于0。可以把这个看成是特征向量的问题,所以u就是T的特征向量,特征值为1。
现在你会问,什么时候T有一个特征值为1的特征向量呢?答案是总是有的。准确的说是,在温和的规范化条件下总是可以的,一个条件是可逆性。意思是你总是可以回到你出发点的地方,所以在MDP中有终止状态。这个条件并不总是成立,如果你的MDP分为两部分,而你永远不能从一部分到另一部分。但是通常情况下,如果你能回到最初的地方的话,你就有这个性质,那么稳态分布也就存在,那么就有一个特征值为1的特征向量。这也就意味着你可以定义一个稳态分布,如果我变换足够多次,最终我会陷入一个分布,而且一直保持这个分布,所以我们把这个分布表示成(见PPT),没有放上T的下标,意思就是说这是通过变换足够多次得到的。现在就可以定义无限时间情况下的目标了。我们不希望对无限时间求和,所以我们要在这里做一点变化。
(学生提问)现实世界里各种情况都会发生。如果要控制一个机器人,有可能机器人突然坏掉了,而且是永远修不好的那种,这确实是一个问题。所以这是很多关于MDPs的研究,特别是在无限时间的情况下,都会假设稳态存在,但是在现实生活中并不总是这样。因为会有这样一些奇怪的事情发生,但是你在推导的时候,还是可以这么假设,大家也都是这么做的,但是这确实是个好问题。但是实际情况是很多时候这个假设都不成立。所以如果想要定义无限时域的目标的话,首先注意到,对于T项求和,当T趋近于无穷大的时候,因为每项激励都是正数,那么总的激励也会趋近于无穷大。
而在前面乘以一个1/T。也就是除以一个常数不会影响求argmax的值,所以放一个1/T是没问题的,但是这样就会给你一个有限的数字,有时候这也叫做平均激励目标。也有其他的方式得到定义明确的目标,而且不是无限的,但是这是一个非常简单的方法。现在让我们看看,当T趋近于无穷大的时候,那么求和里面的项就会变成稳态分布时的值,所以如果这个期望也就是在稳态条件下,求激励的期望。假设说我们对这个过程做一百万次变换,最初的一千次可能有点奇怪,但是在一百万次后就会陷入一个稳态分布。如果一百万次不可以,再来一百万次,以此类推,总有一个时刻会收敛到这样的结果。在无限次数之类,所以在无限时域的情况,目标就是在马尔可夫链的稳态分布条件下的激励的期望值,这个马尔可夫链是通过把MDP中的state和action组合成新的state得来的。
(学生提问)那取决于你,问题是:看上去我们是在做某种优化,从而得到某个状态,但是我们并不考虑我们要多久才能到达那个状态,这取决于你对激励函数的选择。举个例子帮助你理解。比如说我们的MDP由二维世界的很多位置组成,更具体一点的说,假如我现在在这栋楼里,我想尽快去上课的教室,我可以做的是,定义这样一个奖励函数,只要不在上课的教室,任何其他的位置对应的奖励都是-1,而在上课的教室就是+1000,那么我不仅想要到这个教室,而且想要快点到。因为我多走错一个地方,总的奖励就会加上一个,所以基于你的奖励函数的选择,即使是在无限时域的情况,仍然能够到达这个状态(只是到达的快慢不同),只要时间T足够长。
有一点要说明的是,这两个目标虽然从含义上来看很好理解,但是直接看上去并不是那么直观,这需要一些优化方面的知识才能更好的理解。不管是有限时域,还是无限时域,目标都是某个函数的期望,而你要优化的就是找到一组参数使得在这组参数决定的分布下的期望值最大。对于强化学习算法来说,优化奖励函数是非常简单的,这些函数不是可微分的也不是平滑的。因为你取得的这些奖励函数在一些分布下的期望。
直接给出一个例子,假设你正在驾驶这辆汽车,当你在这个路上的时候你得到了一个+1的奖励,当你掉下悬崖的时候得到一个-1的奖励。现在如果你尝试去设置一个优化问题,在其中你直接根据奖励函数优化转向指令,而不需要担心分布和期望之类的问题,你可能会说这是一个十分糟糕的优化问题。因为它让你连续的从+1到-1,并且这是一个巨大的悬崖。所有的我们知道的基于评价的东西在这都不会工作,但是在强化学习中你是一直在期望下优化这个,当你取得的期望即使是非常光滑的函数,在实际上也可以在这个得到优化操作之后得到光滑的函数,所以我们说这实际上不是一个MDP,而是一个虚构的例子。假设你只有一些直接控制,你掉下去的可能性参数,所以要么你掉落或者没掉落,你知道的就是掉落或没掉落,并且选择θ,θ代表掉落的可能性。你可以说只要把θ设置为0就好了,这是很好的。但是让我们假设会使用一些基于梯度的优化方法,需要比较好的平滑函数停止点,所以掉落的可能性是θ。获得的奖励是不平滑的,它就像如果你没掉落就+1,并且如果你掉落就-1一样,所以直接针对掉落进行优化是非常糟糕的,但是如果你想要针对掉落的概率对它进行优化,这实际上非常简单。因为在这个概率分布下的期望在θ上是平滑的。期望有两项,加上1乘以概率,这一项变为0,减去1乘以概率变成1,并且对于θ它实际是平滑的。因为实际上是线性的,所以这里我想做的唯一一点就是有一个目标奖励函数,这个函数不是平滑的、不连续的,这是非常讨厌的,它不意味着强化学习问题的结果是不平滑的,因为强化学习几乎一直关心期望和非平滑连续函数的期望。在好的行为概率分布下可以实际是平滑的,并且通常都是,所以这就是为什么我们可以在强化学校中用像基于梯度方法来进行优化,即使是实际上我们有特别复杂的非可微函数也一样。在下一周会见到一个叫做策略梯度的强化学习算法的例子,它做的是基于梯度的E优化,基于优化并且可以应用在奖励函数公告上。
让我们开始讲一点关于算法的东西。
对于我将要在这门课程中介绍的几乎所有算法,它都可以广义的被分解为三部分。所以第一部分它要做的就是产生样本,所以和现实进行交互收集数据。我们在dagger2中有这个功能,所以在dagger你要和现实世界交互来收集数据,他们可能有真实的标签,所以强化学习算法中,会有一个像这样的步骤(产生样本),然后要做这个绿色框中的步骤,这是要去拟合一个模型或者估计回报,所以这个绿色步骤实际上不是以某种方式尝试去让你的策略更好,它是尝试去分析你收集到的数据来学习一些关于发生的事情的东西,然后你要去有一个策略提升的步骤,在这个步骤中你会使用任何你可以在这里做的事情,去得到一个更好的策略,然后重复这个过程,所以几乎每一个算法都会有这个过程,即使在一些情况下,这些步骤中的一个可能不会非常简单,所以让我们来看一些例子,这些例子将会是非常高水平的例子,所以不要过于担心课程的细节,我还没详细解释这些算法,所以这里会有一点模糊,但是我们希望能够了解这三个步骤是怎样工作的。
让我们看一个简单的算法例子。这个算法从尝试和错误中学习,实际上就是我们下周会提到的完全的策略梯度算法,所以我们不要特别关心这个算法的细节,只要关系它在示意图中是如何工作的。这个算法是通过执行策略来产生一些新的东西,所以这个橘黄色的框,就只意味着你在现实世界或者在你的模拟器或者其他任何事物中运行你的策略,并直接观察它在做什么,它什么做的很好以及产生的轨迹,所以在这里我运行了三次这个模拟器我得到了三条轨迹,所以这就是这个橘黄色框,所以这些轨迹有不同的奖励,一些是好的,一些事不好的,所以我的算法要做的是去计算每一个轨迹的奖励,然后会尝试直接让好的轨迹更具可能性,并且坏的方向有更少的可能性。在算法的形式化中就是迭代的尝试和试错,所以如果这是你的轨迹的分布,这就是为什么你得到的这三个,因为这三个不是很可能的。如果这个绿色钩是一个非常好的,在这个红色×是一个特别差的轨迹。你想做的就是提升好的那条轨迹,尽可能降低坏的那条轨迹,所以这是一个尝试和试错类型的算法。
有一种我们可以做的方法,会在下周讲解细节,你可以说绿色框是尝试去分析我生成的样本的时候发生了什么,它要做的一切事情就是去估计我的目标,也就是我期望的奖励,所以他会通过对时间求和,来计算每条轨迹的奖励,将给我一个目标J(θ)。这个蓝色方框中的就是改善策略的方法,将会计算目标的梯度,所以这是一个绿色方框的简单例子,它只基本的做一个求和,并且所有的行为都发生在蓝色方框中,所以这被称为绿色策略。我们会在下周详细推导,在这只想举例说明它是怎么和这个原理图相符合的,你可以想象不同的算法的这些步骤,实际都是符合这个原理图的。
可以想象不同的算法的这些步骤,实际上都是符合这个原理图的。现在这个绿色的步骤会更加复杂,所以接下来让我告诉你一些关于基于模型的强化学习的例子,所以可能现在不是尝试去反复的实验,我不想实际指出实例是怎么工作的,我想去学习一个叫做fΦ的函数,这个函数尝试去预测下一个状态,并且如果我可以学习去预测下一个状态,可能我可以使用这个去提升我的策略,所以这些有时候被叫做基于模型的强化学习,所以这里将要学习到一个完全独立的模型,这个模型需要状态和行为来预测下一个状态,这就是我在这个绿色的方框中要做的,所以我仍然要生成一些样例,然后不是用这些样例来尝试去多次实验和错误学习,我会实际用这些样本去拟合fΦ使得这个函数可以在预测下一个状态的工作中表现得更好,然后再这个蓝色框中可以做的是实际通过反向传播,通过奖励去更新策略。在这个简单得例子中这个策略实际是确定得,并且这个f是最终得tx,但是这个在随机环境中是表现不好的。如果我有一个确定的环境,并且我指定我的的奖励,然后可以拟合我的fΦ使我可以使用这个过程,所以就这些算法的细节而言,它是一个非常不同的过程,但是这些算法也一样需要生成一些样例,因为我需要一些数据拟合各种模型,这些模型可能只是计算奖励或者其它可能和估计这些动态一样复杂,然后在这个蓝色框中,会通过这些模型来得到一个更好的策略,可能只是直接使用我的奖励的收益或者我在这里是通过像通过时间、通过f和通过r的反向传播来得到一个更好的策略,但是高层的结构是一样的,所以在这个课程之后会有一节课是讲这个的。如果你知道这个f然后就不需要实际去生成任何样本,可以直接通过f优化策略,这基本上在优化控制领域通常关注的东西。会在课程后面实际讨论一些优化控制和结构优化算法的一些内容。与这门课相关的强化学习要做的事情,基本就是蓝色框上,所以在一个强化学习算法中,如果之前不知道f,可以收集一些样本拟合f,然后你在这个蓝色框中使用你最喜欢的控制或者结构优化或者规划算法,我们会讨论一些关于这些算法的内容,但是他们通常被认为是一个基于模型的强化学习程序的一个组成部分于你的假设,所以当我们之后讲到基于模型的强化学习时,我们会实际讨论在一些情况中你该怎么做,你可能假设你知道奖励函数,但是在某些情况中,你不会这么假设,如果你不知道这个,然后你也要去学习它。

让我们把这个反向传播的强化学习例子更加清晰。这实际上并不是一个非常好的算法,可能永远不会实际用到它,会在之后讨论为什么这么说。但我想去解释它,因为它只是一个十分简单,你们当中熟悉递归神经网络和通过时间序列的反向传播的,你可能会想到这将会发生什么,所以它只是一个用来解释原理的一个非常简单的方法。只是这里发生了什么的图解说明。


F是一个神经网络,接受s和a,给定s+1,然后+1。如果想要去提升π,要接受一个S和给出我们一个a。

所以如果某些原因想要实际的实现这个算法,这是这个算法对应的计算图,所以你有这个区块,这个区块是你尝试去学习的,这个区块是在上一幅图你已经拟合的,然后你拥有奖励。让我们假设你的奖励是在短时间内已知的,但是你也能够学习到这个奖励。对π的优化是和反向传播相关联的,这个梯度会最大化这些节点,所以这是通过序列反向传播的,就像在递归神经网络中那样工作的,在这里优化的是尝试去使得这个数字尽可能的大。
回到这三个方块,收集数据是这个橙色方块;更新模型f这些是由他们自己训练的而没有通过时间的反向传播,是这个绿色块做的;然后通过反向传播去对整个过程更新策略,是这个蓝色方块做的工作。所以不在我们的算法中,我们实际会经常用到这个,但是仍然适合这个框架,并且我们可以在强化学习的基础上得到基于模型的更好版本,稍后我们将讨论这个问题。

所以大多数方法都有这三部分,哪部分比较贵?我们需要注意这个地方,所以它依赖很多东西。在特定问题中,你要解决的是你要如何去设置它和你要选择使用的算法。例如这个橘色方框有时候代价会非常高,所以如果你在一个真实的机器人或者汽车或者电网或者其他现实物理世界的系统,这个橘色方块可能是实际是案例中关注的地方。因为你正在实时的收集数据。你会怎么想,除非我们发明了时空旅行或者其它的,否则你会收到宇宙速度的限制,如果你需要在橘色方框这收集很多数据,对你来说可能是代价非常大的。如果你是像使用MU joker模拟器,这样的模拟环境中训练,这些你在作业1中用到的,可能你不需要太担心这个部分。因为如果你的模拟器是非常快,你不需要在意它会在下次实时运行1000次,那么这个部分不值得你为它担心,你主要关注它两个部分,所以这是依赖于你具体面对的问题,可能在这个情景下(真实世界)它是一个大问题,但是在另一个情景下(模拟器场景)这就不是一个大问题了。在这个绿色框中你将会拟合一个模型或者估计返回值,如果我们做的是不断试错的学习,也就是我们之前讨论的实际称为策略梯度,这个绿色方框就会非常简单,只需要把数字加起来,它是如此的简单以至于在python中只需要一行实现。但是如果你是做基于模型的学习可能你需要训练一个神经网络来预测St+1,这个绿色方框。实际上非常重要并且代价很高,所以你可能需要努力去优化,确保算法收敛,且能够一直迭代计算,不要停止等。所以这个绿色方框同样也依赖于算法,强调在这个蓝色方框中对于一些人来说像试错学习,你需要去计算梯度并且应用梯度,这里有一点点是我们没有涉及的,但是仍然非常简单,对于基于模型的算法来说可能会更复杂,因为你必须要去做这个复杂的反向传播,所以依赖于具体的算法。

就像用这个有趣的反向传播算法来结束,这里它是非常简单的,明确一点关于为什么它不够好的原因,它只处理像我画在这里一样的确定性系统;它只处理确定性策略,并且因为你在通过这个计算梯度;它只处理连续的状态和行为,因为你不能计算关于一个离散状态的梯度,并且它被证明是一个非常难以优化的问题。因为你做的是通过时间的反向传播,对于大量的时间步,你可能会遇到梯度爆炸或者梯度消失,所以我们会在之后讨论更多的。关于这些问题,当我们讨论到基于模型的强化学习时我想关注的问题是与确定性策略的确定性动态有关,所以我之前说的在强化学习中我们通常关注期望,如果我们考虑的是反向传播而不是期望,将会很难去处理,因为一切都是确定性的,所以我们需要介绍一些帮助我们解决优化问题的工具而不是设计期望。

所以我们怎么能在随机系统中工作呢?所以一件有效的事情是打破基于嵌套条件期望的强化学习目标,这将实际给我们产生叫做值函数和Q函数的东西,这些在我们的输出中是非常有效的,所以这是我之前讲到的一般的

待续…

2019年伯克利大学 CS294-112《深度强化学习》第4讲:强化学习简介(笔记)相关推荐

  1. 2019年伯克利大学 CS294-112《深度强化学习》第1讲:课程介绍和概览(笔记)

    这里是CS294-112深度强化学习课程,我的名字叫Sergey Levine是这门课的授课老师,材料会放在课程主页:http://rail.eecs.berkeley.edu/deeprlcours ...

  2. 2019年伯克利大学 CS294-112《深度强化学习》第2讲:监督学习和模仿学习(笔记)

    今天的课程中,我们将讨论模仿学习.我们首先来讲序列决策问题的定义.我们将从一般的监督学习讲到序列决策.我们将会讲解如何设定一个模仿学习问题?它本质上是对决策问题的监督学习.我们将会讨论直接模仿是否有效 ...

  3. 加州伯克利大学:自动驾驶中虚拟到现实的强化学习|厚势汽车

    来源:同济智能汽车研究所 UCB 提出了虚拟场景到真实场景的翻译网络,解决强化学习用于自动驾驶虚拟测试中与现实测试的差异. 强化学习需要大量的试错,而真实的自动驾驶车辆(AV)无法提供大量的试错 为此 ...

  4. 加州伯克利计算机科学录取,【哈鲁2019录取】恭喜哈鲁学员喜提加州伯克利大学计算机科学专业录取!...

    原标题:[哈鲁2019录取]恭喜哈鲁学员喜提加州伯克利大学计算机科学专业录取! 又一个别人家的孩子! 恭喜哈鲁学员B同学喜获 USNews世界大学排名第4 ARWU世界大学学术排名第5的牛校 加州大学 ...

  5. 124页,UC伯克利大学胡戎航博士论文公布:视觉与语言推理的结构化模型

    来源:机器之心 本文约1500字,建议阅读5分钟 UC 伯克利大学计算机科学博士胡戎航(Ronghang Hu)的博士论文新鲜出炉,内容涉及视觉与语言推理的结构化模型. 视觉 - 语言任务(如基于图像 ...

  6. 2019年最新十篇「深度学习领域综述」论文

    点击上方"深度学习技术前沿",选择"星标"公众号 资源干货,第一时间送达 了解当下,方能向前. 1.A guide to deep learning in he ...

  7. 812计算机专业排名,新鲜出炉2019年美国大学计算机工程专业排名榜单 麻省位居首位!...

    原标题:新鲜出炉2019年美国大学计算机工程专业排名榜单 麻省位居首位! 近些年,中国留美学生人数已经超过了60万人,其中就读工程学和计算机专业的人数占据了30%, 计算机工程专业作为计算机和工程的交 ...

  8. 美国大学计算机科学专业排名2019,2019年美国大学计算机专业排名

    推荐答案解决时间:2020-01-25 00:14 2019年USNews美国大学计算机专业排名1.麻省理工学院,在2019年美国大学计算机专业排名中位居第1,在世界大学排名中位居第1.在薪资上的美国 ...

  9. 2019年大学计算机排名,2019年USNews大学计算机专业排名!

    随着美国硕士留学对于STEM专业的重视和申请人数的增加,STEM专业之一的美国大学CS 专业即美国大学计算机科学专业已经成为了炙手可热的专业.托普仕留学小编准备的美国大学计算机科学专业排名可以提供参考 ...

  10. 深度学习之强化学习(1)强化学习案例

    深度学习之强化学习(1)强化学习案例 强化学习案例 1. 平衡杆游戏 2. 策略网络 3. 梯度更新 4. 平衡杆游戏实战 完整代码 人工智能=深度学习+强化学习--David Silver  强化学 ...

最新文章

  1. 对象序列化(六):应用实例-WPF对象的XAML序列化
  2. 【VS2005】error LNK2001: unresolved external symbol _main 正确解决办法
  3. 涨姿势时间:为什么飞机的往返时间会不一样?
  4. (课程学习笔记)玩转Linux:常用命令实例指南
  5. 对象实例化指针_JVM第三课:一文讲透对象的内存布局和访问方式
  6. 代码分享h5-sessionStorage,提示app下载代码块
  7. 德云斗笑社何九华为什么没参加_狗狗的身体卡在了门上,女主人低头一看忍不住笑了:这是膨胀了...
  8. java mime上传_JavaWeb中实现文件上传的方式有哪些?
  9. Clojure 学习入门(8)- 连接mongodb
  10. mysql导入sql文件命令_MySQL导入.sql文件及常用命令
  11. I盘显示无法访问数据错误(循环冗余检查),里面的资料怎么恢复
  12. 1193 Eason
  13. .ldb文件到底派什么用场得?
  14. 计算机毕业设计 SSM学校图书借阅管理系统 图书馆借阅管理系统 图书借阅系统Java
  15. 怎么把ide改成ahci_怎么将硬盘模式改成ide?如何查看硬盘模式?
  16. OA项目(MVC项目)
  17. macos 虚拟镜像文件_如何在macOS中使用虚拟文件测试网络或硬盘速度
  18. 文墨绘学21天习惯养成方法,学好就会优秀
  19. 【2020年牛客暑假第八场】E题 Enigmatic Partition
  20. Python黑客攻防(一)屏幕窃取

热门文章

  1. TI电量计--基本介绍及常见问题解答
  2. 《老路用得上的商学课26—30》经济模式
  3. 苹果的产品开发流程介绍:带你认识世界最好的设计公司
  4. html 手机端可以选择复制粘贴,js移动端实现网站内容复制粘贴功能
  5. python excel 填充颜色_pandas to_excel 添加颜色操作
  6. java 导出多个excel_Java导出Excel压缩包
  7. 3.3 三极管的的概念及其工作原理
  8. Configured.java
  9. 互联网人的Q2,被业务目标支配
  10. LightOj 1336(Sigma Function)