算法模型---【David Silver强化学习公开课】

中文来源英文来源

1、强化学习入门

1.1、强化学习是什么

强化学习是多学科多领域交叉的一个产物,它的本质就是解决“decision making”问题,即学会自动进行决策。在computer science领域体现为机器学习算法。在Engineering领域体现在决定the sequence of actions来得到最好的结果。在Neuroscience领域体现在理解人类大脑如何做出决策,主要的研究是reward system。在Psychology领域,研究动物如何做出决策,动物的行为是由什么导致的。在Economics领域体现在博弈论的研究。这所有的问题最终都归结为一个问题,人为什么能够并且如何做出最优决策。
强化学习是一个Sequential Decision Making问题,它需要连续选择一些行为,从而这些行为完成后得到最大的收益、最好的结果。它在没有任何label告诉算法应该怎么做的情况下,通过先尝试做出一些行为得到一个结果,通过判断这个结果是对还是错来对之前的行为进行反馈,然后由这个反馈来调整之前的行为,通过不断的调整,算法能够学习到在什么样的情况下选择什么样的行为可以得到最好的结果。
强化学习与监督学习有着不少区别,首先监督学习是有一个label的,这个label告诉算法什么样的输入对应着什么样的输出,而强化学习没有label告诉它在某种情况下应该做出什么样的行为,只有一个做出一系列行为后最终反馈回来的reward signal,这个signal能判断当前选择的行为是好是坏。其次强化学习的结果反馈有延时,有时候可能需要走了很多步以后才知道以前的某一步的选择是好还是坏,而监督学习做了比较坏的选择会立刻反馈给算法。强化学习面对的输入总是在变化,输入不像监督学习是独立同分布的。而每当算法做出一个行为,它影响了下一次决策的输入。

1.2、强化学习组成

1

强化学习决策流程见上图。需要构造出一个agent(图中的大脑部分),agent能够执行某个action,例如决定机器人超哪个方向走,围棋棋子下在哪个位置。agent能够接收当前环境的一个observation,例如当前机器人的摄像头拍摄到场景。agent还能接收当它执行某个action后的reward,即在第t步agent的工作流程是执行一个动作 A t ,获得该动作之后的环境观测状况 O t ,以及获得这个动作的反馈奖赏 R t 。而环境environment则是agent交互的对象,它是一个行为不可控制的对象,agent一开始不知道环境会对不同action做出什么样的反应,而环境会通过observation告诉agent当前的环境状态,同时环境能够根据可能的最终结果反馈给agent一个reward,例如围棋棋面就是一个environment,它可以根据当前的棋面状况估计一下黑白双方输赢的比例。因而在第t步,environment的工作流程是接收一个 A t ,对这个动作做出反应之后传递环境状况和评估的reward给agent。
reward奖赏 R t ,是一个反馈标量值,它表明了在第t步agent做出的决策有多好或者有多不好,整个强化学习优化的目标就是最大化累积reward。例如在射击游戏中,击中敌方的一架飞机,最后的得分会增加,那么这一步的reward就是正值。

1.3、一些变量

history是所有动作、状态、奖赏的序列, H t = A 1 , O 1 , R 1 , , A t , O t , R t
environment state, S t e ,环境当前的状态,它反应了环境发生什么改变。这里需要明白的一点是环境自身的状态和环境反馈给agent的状态并不一定是相同的,例如机器人在走路时,当前的environment状态是一个确定的位置,但是它的camera只能拍到周围的景象,无法告诉agent具体的位置,而拍摄到的照片可以认为是对环境的一个observation,也就是说agent并不是总能知道环境是如何发生改变的,只能看到改变后的一个结果展示。
agent state, S t a ,是agent的现在所处状态的表示,它可以是history的任何函数。
information(Markov) state,它包含了history的所有有用信息。一个状态 S t 有马尔可夫性质是指下一个时刻的状态仅由当前状态决定,与过去状态无关。这里定义可以看出environment state是有马尔可夫性质的(这个概念不明白可以暂时不管)。
如果说environment是Fully Observable的,那么就是说agent能够直接看到环境当前的状态,在这种情况下agent state与environment state是相等的。而如果说environment是Partially Observable Environments,那么就是上面机器人的那个例子,agent能获取到的不是直接的环境状态。

1.4、Agent的组成

一个agent由三部分组成Policy、Value function、Model,但这三部分不是必须同时存在的。
Policy,它根据当前看到的observation来决定action,是从state到action的映射。有两种表达形式,一种是Deterministic policy即 a = π ( s ) ,在某种状态s下,一定会执行某个动作a。一种是Stochastic policy即 π ( a | s ) = p [ A t = a | S t = s ] ,它是在某种状态下执行某个动作的概率。
Value function,它预测了当前状态下未来可能获得的reward的期望。 V π ( s ) = E π [ R t + 1 + r R t + 2 + | S t = s ] 。用于衡量当前状态的好坏。
Model,预测environment下一步会做出什么样的改变,从而预测agent接收到的状态或者reward是什么。因而有两种类型的model,一种是预测下一个state的transition model即 P s s a = p [ S t + 1 = s | S t = s , A t = a ] ,一种是预测下一次reward的reward model即 R s a = E [ R t + 1 | S t = s , A t = a ]

因而根据是否选取这三个部分agent可分为下图中红色字体标出来的五种类型(这里有一个迷宫的例子很好,建议看原视频1:08:10起)。Model Free是指不需要去猜测environment的工作方式,而Model based则是需要学习environment的工作方式。
1

1.5、探索和利用

强化学习是一种试错(trial-and-error)的学习方式,一开始不清楚environment的工作方式,不清楚执行什么样的行为是对的,什么样是错的。因而agent需要从不断尝试的经验中发现一个好的policy,从而在这个过程中获取更多的reward。
在这样的学习过程中,就会有一个在Exploration和Exploitation之间的权衡,前者是说会放弃一些已知的reward信息,而去尝试一些新的选择,即在某种状态下,算法也许已经学习到选择什么action让reward比较大,但是并不能每次都做出同样的选择,也许另外一个没有尝试过的选择会让reward更大,即Exploration希望能够探索更多关于environment的信息。而后者是指根据已知的信息最大化reward。例如,在选择一个餐馆时,Exploitation会选择你最喜欢的餐馆,而Exploration会尝试选择一个新的餐馆。

2、马尔可夫决策过程MDP

2.1、基础概念

状态集合S: 有限状态state集合,s表示某个特定状态
动作集合A: 有限动作action集合,a表示某个特定动作
状态转移矩阵P: 矩阵每一项是从S中一个状态s转移到另一个状态 { s } 的概率 P s s = P [ S t + 1 = s | S t = s ]
以及执行动作a后从一个状态转移到另一个概率为 P s s a = P [ S t + 1 = s | S t = s , A t = a ] 。这里的状态转移矩阵决定了马尔可夫性质,即未来状态只与当前状态有关而与过去状态无关。矩阵一行之和为1。
策略π: 状态s下执行动作a的概率, π ( a | s ) = P [ A t = a | S t = s ]
reward函数ER: 这个函数是immediate reward的期望,即在时刻t的时候,agent执行某个action后下一个时刻立即能得到的reward R t + 1 的期望,它由当前的状态决定。状态s下immediate reward期望为 E R s = E [ R t + 1 | S t = s ] ,状态s下执行动作a后immediate reward期望为 E R s a = E [ R t + 1 | S t = s , A t = a ]
Return G t 与discount γ : G t 是t时刻之后未来执行一组action能够获得的reward,即 t + 1 t + 2 t + 3 未来所有时刻reward之和,是未来时刻reward在当前时刻的体现,但是越往后的时刻它能反馈回来的reward需要乘以一个discount系数,系数 γ [ 0 , 1 ] 会产生一个打折的效果,这是因为并没有一个完美的模型能拟合出未来会发生什么,未来具有不确定性,同时这样计算会方便,避免了产生状态的无限循环,在某些情况下,即时产生的reward即 R t + 1 会比未来时刻更值得关注,符合人的直觉。因此 G t = R t + 1 + γ R t + 2 + = k = 0 γ k R t + k + 1
状态 值函数v(s): 即基于t时刻的状态s能获得的return的期望, v ( s ) = E [ G t | S t = s ] ,这里是仅按照状态转移矩阵选择执行何种动作,如果加入动作选择策略,那么函数就变成了 v π ( s ) = E π [ G t | S t = s ]
动作 值函数 q π ( s , a ) : 基于t时刻的状态s,选择特定的一个action后能获得的return期望,这里的选择过程就隐含加入了策略。 q π ( s , a ) = E π [ G t | S t = s , A t = a ]

2.2、MDP与实例分析

马尔可夫链/过程(Markov Chain/Process),是具有markov性质的随机状态 s 1 , s 2 , 序列。由[S,P]组成。如下图1圆圈内是状态,箭头上的值是状态之间的转移概率。class是指上第几堂课,facebook指看facebook网页,pub指去酒吧,pass指通过考试,sleep指睡觉。例如处于class1有0.5的概率转移到class2,或者0.5的概率转移到facebook。
1
从而可以产生非常多的随机序列,例如 C 1   C 2   C 3   P a s s   S l e e p 或者 C 1   F B   F B   C 1   C 2   C 3   P u b   C 1   F B   F B   F B   C 1   C 2   C 3   P u b   C 2   S l e e p 等。这些随机状态的序列就是马尔可夫过程。这里可以看到有一些状态发生了循环。
马尔可夫奖赏过程(Markov Reward Process),即马尔可夫过程加上value judgement,value judegment即判断一个像上面一个特定的随机序列有多少累积reward,也就是计算出 v ( s ) 。它由 [ S , P , R , γ ] 组成,示意图如下。
1
可以看出比图1多了红色部分即R,但是R的取值只决定了immediate reward,在实际过程中肯定是需要考虑到后面步骤的reward才能确定当前的选择是否正确。而实际上 v ( s ) 由两部分组成,一个是immediate reward,一个是后续状态产生的discounted reward,推导如下(这里我觉得视频里似乎把 E R s R t + 1 的取值当成一样的了),推导出来的这个式子称为 B e l l m a n 方程。

v ( s ) = E [ G t | S t = s ] = E [ R t + 1 + γ ( R t + 2 + γ R t + 3 + ) | S t = s ] = E [ R t + 1 + γ G t + 1 | S t = s ] = E R s + γ s S P s s v ( s )                                 ( 1 )

那么每一个状态下能得到的状态值函数取值或者说累积reward如下所示,即原来写着class、sleep状态的地方替换成了数字(这里假设 γ = 1 )。可以从sleep状态出发,推导出每个状态的状态值函数取值,如右上角红色公式所示。最左的-23与-13,列出二元一次方程组即可求出。
1
将Bellman方程表达成矩阵形式,变成了 v = E R + γ P v ,是个线性等式,直接求解得到 v = ( I γ P ) 1 E R 。而这样求解的话计算复杂度是 O ( n 3 ) ,所以一般通过动态规划、蒙特卡洛估计与Temporal-Difference learning这些迭代的方式求解。
马尔可夫决策过程(Markov Decision Process),它是拥有决策能力的马尔可夫奖赏过程,个人理解是MRP是将所有情况都遍历,而MDP则是选择性的遍历某些情况。它由 [ S , A , P , R s a , γ , π ( a | s ) ] 组成,并且拥有两个值函数 v π ( s ) q π ( s , a ) 。根据这两个值函数的定义,它们之间的关系表示为 v π ( s ) = a A π ( a | s ) q π ( s , a ) 以及 q π ( s , a ) = R s a + γ s S P s s a v π ( s ) 。第二个式子是说当选择一个action之后,转移到不同状态下之后获取的reward之和是多少。将两个式子互相代入,可以得到如下的Bellman期望方程。
v π ( s ) = a A π ( a | s ) ( R s a + γ s S P s s a v π ( s ) )                                 ( 2 ) q π ( s , a ) = R s a + γ s S P s s a a A π ( a | s ) q π ( s , a )                                 ( 3 )

下图是一个MDP的例子,箭头上的单词表示action,与MRP不同的是,这里给出的immediate reward是同时在某个状态s和某个动作a条件下,所以图中R不是只取决于s,而是取决于s和a。右上角的等式表达出了这一个状态的状态值函数求解过程(只进行到两步)。
1
由于策略 π ( a | s ) 是可以改变的,因此两个值函数的取值不像MRP一样是固定的,那么就能从不同的取值中找到一个最大值即最优值函数(这节课没有讲如何求解)。例如下面两个图就是上面的例子能找到的最优状态值函数 v ( s ) 与最优动作值函数 q ( s , a ) 。如果知道了 q ( s , a ) ,那么也就知道了在每一步选择过程中应该选择什么样的动作。也就是说MDP需要解决的问题并不是每一步到底会获得多少累积reward,而是找到一个最优的解决方案。这两个最优值函数同样存在着一定关系, v ( s ) = m a x a q ( s , a ) ,从而可以推出 q ( s , a ) = R s a + γ s S P s s a m a x a q ( s , a ) ,这个等式称为Bellman优化方程,它不是一个线性等式,没有闭式解。通常通过值迭代、策略迭代、Q-learning、Sarsa等方法求解。
v ( s ) = m a x a q ( s , a )                                 ( 4 ) q ( s , a ) = R s a + γ s S P s s a m a x a q ( s , a )                                 ( 5 )

1
1
实际上一定存在这样的一个最优策略 π 。可以通过最大化 q ( s , a ) 获得。针对任意的MDP问题,总是存在一个最优的deterministic policy。
以上是第二课的主要内容,从MP开始到MRP再到MDP,了解值函数的具体概念与reward有什么联系,重点是介绍MDP面对的问题,暂时没有提到如何解决。结合课程的例子对各个概念有比较直观的了解。但是这一课有个概念是“MDP描述了强化学习的environment,且是fully Observable的”,这个意思我暂时没明白。如果MDP是environment,那么它为什么有policy,为什么需要最大化policy,个人觉得MDP应该是fully Observable的强化学习,也就是说MDP本身描述的就是一个强化学习问题,它的状态转移矩阵和reward function就是environment,它的目标就是找到最优的动作值函数或者最优Policy。

3、动态规划解决MDP的Planning问题

本文是David Silver强化学习公开课第三课的总结笔记。主要谈到了动态规划能够解决MDP的什么问题,能通过Policy Iteration和Value Iteration来解决,这两者指的是什么,出于什么样的考虑提出这两种思路,具体解决步骤是什么。

3.1、内容回顾

前两节课我忽略了一些内容,这节课用到了,所以先回顾一下。首先是Planning的概念,在第一节课提到过强化学习是一种Sequential Decision Making问题,它是一种试错(trial-and-error)的学习方式,一开始不清楚environment的工作方式,不清楚执行什么样的行为是对的,什么样是错的,因而agent需要从不断尝试的经验中发现一个好的policy。而Planning也属于Sequential Decision Making问题,不同的是它的environment是已知的,例如游戏的规则是已知的,所以agent不需要通过与environment的交互来获取下一个状态,而是知道自己执行某个action之后状态是什么,再优化自己的policy。因此这两者之间是有联系的,假如强化学习学习出来environment的模型,知道了environment是如何work的,强化学习要解决的问题就是Planning了。
在第二课中,推导出了几个Bellman方程,回顾一下。

Bellman方程 形式
Bellman Expectation Equation v π ( s ) = a A π ( a | s ) q π ( s , a ) = a A π ( a | s ) ( R s a + γ s S P s s a v π ( s ) )
Bellman Expectation Equation q π ( s , a ) = R s a + γ s S P s s a v π ( s ) = R s a + γ s S P s s a a A π ( a | s ) q π ( s , a )
Bellman Optimality Equation v ( s ) = m a x a q ( s , a ) = m a x a [ R s a + γ s S P s s a v ( s ) ]
Bellman Optimality Equation q ( s , a ) = R s a + γ s S P s s a v ( s ) = R s a + γ s S P s s a m a x a q ( s , a )

3.2、动态规划与Planning

动态规划是这样一种方法,它将一个复杂的问题切分成一系列相互联系的简单子问题,一旦解决了这些简单的子问题,再将这些子问题的解结合起来变成复杂问题的解,同时将它们的解保存起来,如果下一次遇到了相同的子问题那么就不用再重新计算子问题的解[1]。其中“动态”是指某个问题是由序列化状态组成,状态step-by-step的改变,从而可以step-by-step的来解这个问题,“规划”即优化子问题。而MDP有Bellman方程能够被递归的切分成子问题,同时它有值函数,保存了每一个子问题的解,因此它能通过动态规划来求解。针对MDP,切分成的子问题就是在每个状态下应该选择的action是什么,MDP的子问题是以一种递归的方式存在,这一时刻的子问题取决于上一时刻的子问题选择了哪个action。
MDP需要解决的问题有两种,第一种是prediction,它已知MDP的 S , A , P , R , γ 以及policy,目标是算出在每个状态下的value function,即处于每个状态下能够获得的reward是多少。而第二种是control,它已知MDP的 S , A , P , R , γ 但是policy未知,因此它的目标不仅是计算出最优的value function而且要给出最优的Policy。
当已知MDP的状态转移矩阵时,environment的模型就已知了,此时可以看成Planning问题,动态规划则是用来解决MDP的Planning问题,主要解决途径有两种,Policy Iteration和Value Iteration

3.3、Policy Iteration

这个解决途径主要分为两步,示意图见图1:

  • Policy Evaluation:基于当前的Policy计算出每个状态的value function
  • Policy Improvment:基于当前的value function,采用贪心算法来找到当前最优的Policy
    1

这里的Policy Evaluation要求的v(s)是通过计算第一个Bellman Expectation Equation得到的。下图是一个叫Small Gridworld的例子,左上角和右下角是终点, γ = 1 ,移动一步reward减少1,起始的random policy是朝每个能走的方向概率相同,先单独看左边一列,它表示在第k次迭代每个state上value function的值,这一列始终采用了random policy,这里的value function就是通过Bellman Expectation Equation得到的,考虑 k = 2 的情况, 1.7 = 1.0 + 2 ( 1 / 3.0 ) ( 1 ) 2.0 = 1.0 + 4 ( 1 / 4.0 ) ( 1 ) 。而右边一列就是在当前的value function情况下通过greedy算法找到当前朝哪个方向走更好。
Policy Iteration会一直迭代到收敛,具体证明过程可以去看视频(46:09起)。
1

3.4、Value Iteration

最优化原理:当且仅当任何从s能达到的s′能在当前policy下获取最优的value即 v π ( s ) = v ( s ) ,那么状态s也能在当前policy下获得最优value v π ( s ) = v ( s )
从上面原理出发,如果已知子问题的最优值 v s ,那么就能通过第一个Bellman Optimality Equation将 v ( s ) 也推出来。因此从终点开始向起点推就能把全部状态最优值推出来。Value Iteration通过迭代的方法,通过这一步的 v k ( s ) 更新下一步的 v k + 1 ( s ) 不断迭代,最终收敛到最优的 v ,需要注意的是中间生成的value function的值不对应着任何policy
考虑下面这个Shortest Path例子,左上角是终点,要求的是剩下每一个格子距离终点的最短距离,每走一步,reward减少1,根据Value Iteration计算Bellman Optimality Equation就能得到后面的每一个正方形格子取值。
1

1
上图中打五角星标记的表示已经得到 v
因此,针对MDP要解决的两个问题,有如下几种方式来解决。针对prediction,因为它的目标是在已知的Policy下得到收敛的value function,因此针对问题不断迭代计算Bellman Expectation Equation就够了,但是control则需要同时获得最优的policy,那么在Iterative Policy Evaluation的基础上加入一个选择Policy的过程就行了,也就是上面的Policy Iteration,另外Value Iteration虽然在迭代的过程中没有显式计算出policy,但是在得到最优的value function之后就能推导出最优的policy,因此也能用做解决control问题。

问题 使用到的Bellman Equation 解决算法
Prediction Bellman Expectation Equation Iterative Policy Evaluation
Control Bellman Expectation Equation + Greedy Policy Improvement Policy Iteration
control Bellman Optimality Equation Value Iteration

以上是本课主要内容,后面还提了一下异步动态规划,并且提到了以上动态规划的解法适合状态个数百万级别的问题。总之,这节课需要搞懂的问题是动态规划能解决什么样的MDP问题以及具体怎样通过Policy Iteration和Value Iteration做到的。
[1] Dynamic programming

[2] Planning by Dynamic Programming

4、Model-Free Learning(解决未知Environment下的Prediction问题)

本文是David Silver强化学习公开课第四课的总结笔记。这一课主要讲了解决在未知environment的情况下强化学习的prediction问题的两种方法,分别是Monte-Carlo Reinforcement Learning和Temporal Difference。

4.1、内容回顾

上节课中通过动态规划能够解决已知environment的MDP问题,也就是已知 S , A , P , R , γ ,其中根据是否已知policy将问题又划分成了prediction和control问题,本质上来说这种known MDP问题已知environment即转移矩阵与reward函数,但是很多问题中environment是未知的,不清楚做出了某个action之后会变到哪一个state也不知道这个action好还是不好,也就是说不清楚environment体现的model是什么,在这种情况下需要解决的prediction和control问题就是Model-free prediction和Model-free control。显然这种新的问题只能从与environment的交互得到的experience中获取信息。
这节课要解决的问题是Model-free prediction,即未知environment的Policy evaluation,在给定的policy下,每个state的value function是多少。
将从某个起始状态开始执行到终止状态的一次遍历 S 1 , A 1 , R 2 , , S k 称为episode。已知很多的episodes。

4.2、Monte-Carlo Reinforcement Learning

蒙特卡洛强化学习是假设每个state的value function取值等于多个episodes的return G t 的平均值,它需要每个episode是完整的流程,即一定要执行到终止状态。由第二课中知道值函数的表达式为 v π ( s ) = E π [ G t | S t = s ] ,即每个state的value function是return的期望值,而在Monte-Carlo policy evaluation的假设下,值函数的取值从期望简化成了均值。
因此在本算法中,需要记录两个值,状态s被访问到的次数 N ( s ) = N ( s ) + 1 以及每次访问时return之和 S ( s ) = S ( s ) + G t ,遍历完所有的episodes之后,得到状态s下值函数取值为 V ( s ) = S ( s ) / N ( s ) 。而这里有两种访问次数的记录方式,一种是在一个episode中只记录第一次访问到的s,一种是一个episode中每次访问到s都记录下来。从而针对一次新的访问,先次数加1 N ( S t ) = N ( S t ) + 1 ,然后更新 V ( S t ) = V ( S t ) + 1 N ( S t ) ( G t V ( S t ) ) 。在一些方法中也会将 1 N ( S t ) 设置成一个常数α,不随着访问次数增加,即

V ( S t ) = V ( S t ) + α ( G t V ( S t ) )                   ( 1 )

4.3、Temporal-Difference Learning

时序差分学习则是基于Bootstrapping思想,即在中间状态中会估计当前可能获得的return,并且更新之前状态能获得的return。因此它不需要走完一个episode的全部流程才能获得return。在最简单的TD算法TD(0)中这个估计return为 R t + 1 + γ V ( S t + 1 ) 称之为TD target,代入上面公式2替代掉 G t 就能得到TD算法的value function更新公式。

V ( S t ) = V ( S t ) + α ( R t + 1 + γ V ( S t + 1 ) V ( S t ) )                   ( 2 )

δ t = R t + 1 + γ V ( S t + 1 ) V ( S t ) 称之为TD error。它代表了估计之前和估计之后的return差值。
TD(0)是指在某个状态s下执行某个动作后转移到下一个状态s′时,估计s′的return再更新s,假如s之后执行两次动作转移到s′′时再反回来更新s的值函数,那么就是另一种形式,从而根据step的长度n可以扩展TD到不同的形式,当step长度到达当前episode终点时就变成了MC。从而得到统一公式如下
G t ( n ) = R t + 1 + γ R t + 2 + + γ n 1 R t + n + γ n V ( S t + n )                   ( 3 )   V ( S t ) = V ( S t ) + α ( G t ( n ) V ( S t ) )                   ( 4 )

又如果将不同的n对应的return平均一下,这样能够获得更加robust的结果,而为了有效的将不同return合起来,对每个n的return都赋了一个权重 1 λ , ( 1 λ ) λ , , ( 1 λ ) λ n ,参数是 λ ,这样又能得到一组更新value function的公式。
G t λ = ( 1 λ ) n = 1 λ n 1 G t ( n )                   ( 5 ) V ( S t ) = V ( S t ) + α ( G t λ V ( S t ) )                   ( 6 )

下面左图是一个从办公室驾驶回家的路上花费时间的例子,第一列表示当前状态,例如下雨,离开高速等等,第二列表示当前花费时间,第三列表示估计还有多久能到家,第四列是前两列之和,表示估计要花费的总时间。要求的value function是当前状态下要到家的总时间,针对这个问题,MC和TD算法都给出了自己的解决结果,即右图中的虚线。可以明显看出来蒙特卡洛方法是根据整个流程走完了之后,根据最后的结果更新了前面每个state的value function都是43,而TD则是走完一步,发现当前花费总时间发生了变化,就更新上一个状态所需的时间,因此第一个状态的value function取值是40,第二个状态value function取值是35等等。
1

4.4、Monte-Carlo VS. Temporal Difference

在谈两种算法的优劣前,先谈谈Bias/Variance tradeoff的问题。平衡Bias/Variance是机器学习比较经典的一个问题,bias是指预测结果与真实结果的差值,variance是指训练集每次预测结果之间的差值,bias过大会导致欠拟合它衡量了模型是否准确,variance过大会导致过拟合衡量了模型是否稳定。如果 G t R t + 1 + γ v π ( S t + 1 ) 跟真实值一样,那么就是无偏差估计。因为在MC算法中,它是将最终获得的reward返回到了前面的状态,因此是真实值,但是它采样的episode并不能代表所有的情况,所以会导致比较大的variance。而TD的 R t + 1 + γ V ( S t + 1 ) 跟真实值是有偏差的,在计算的过程基于随机的状态、转移概率、reward等等,涵盖了一些随机的采样,因此variance比较小。
此外,MC方法中没有计算状态转移概率,也不考虑状态转移,它的目标是最小化均方误差,这样的行为实际上并不符合马尔可夫性质,而TD方法会找出拟合数据转移概率和reward函数,还是在解决MDP问题。

Monte-Carlo Temporal Difference
要等到episode结束才能获得return 每一步执行完都能获得一个return
只能使用完整的episode 可以使用不完整的episode
高variance,零bias 低variance,有bias
没有体现出马尔可夫性质 体现出了马尔可夫性质

1
上面的图是用Policy Evaluation解决强化学习问题的一些算法的区别与相关性,最左边的竖线表示如果考虑了所有的可能发生的情况那么就是动态规划,如果只考虑了部分采样那么就是时序差分。下面的横线表示如果考虑了一次episode中全部的动作就是Monte-Carlo,如果只考虑部分动作就是时序差分。如果又考虑全部情况又考虑每一种情况的全部动作就是穷举。

5、Model-Free Control(解决未知Environment下的Control问题)

本文是David Silver强化学习公开课第五课的总结笔记。这一课主要讲了解决在未知policy未知environment的情况下control问题的两种思路,即On-Policy和Off-Policy,在第四课的Monte-Carlo和Temporal Difference基础上进行改进。

5.1、内容回顾

上次课谈到了在给定policy的情况下求解未知environment的MDP问题,称之为Model-Free Prediction问题。本节则是解决未知policy情况下未知environment的MDP问题,也就是Model-Free Control问题,这个问题实际上是最常见的强化学习问题。由于这种问题中未知policy,那么就有两种思路来获得policy,一种称为on-policy learning,是基于某个policy做出一些action然后评估这个policy效果如何,一种称为off-policy learning,是从一些已知的policy中学习policy,比如机器人在学习走路时,可以从人控制机器人走路的sample中来学习,但不是完全的跟sample走的action完全一样,在sample中尝试去走不同的一步看是否有更好reward。

5.2、On-Policy Monte-Carlo

On-Policy Monte-Carlo由policy evaluation + ϵ−Greedy Policy Improvement组成。
在第三课的动态规划解决planning问题(已知environment)中提出的Policy iteration和value iteration,其中policy iteration由policy evaluation和policy improvement组成。第四课中未知environment的policy evaluation是通过蒙特卡洛方法求解,结合起来到本课可以得到第一个解决Model-Free control方法即先通过贪婪算法来确定当前的policy,再通过蒙特卡洛policy evaluation来评估当前的policy好不好,再更新policy。
如果在已知environment情况下policy improvement更新方式是 π ( s ) = a r g   m a x a A R s a + P s s a V ( s ) ,可以看出它的解决方案是通过状态转移矩阵把所有可能转移到的状态得到的值函数都计算出来,从中来选择最大的,但未知environment则没有状态转移矩阵,因此只能通过最大化动作值函数来更新policy即 π ( s ) = a r g   m a x a A Q ( s , a ) 。由于improvement的过程需要动作值函数,那么在policy evaluation的过程中针对给定的policy需要计算的 V ( s ) 也替换成 Q ( s , a )
但是greedy算法是存在一定的问题的,例如现在有两扇门,打开一扇门会有一定的奖励,经过一些开门试验后选择能够获得奖励最大的门。假设第一次打开左边的门获得的immdiate reward是0,那么左边门的return更新为 V ( l e f t ) = 0 ,第二次打开右边获得的immdiate reward是+1,右边门return更新 V ( r i g h t ) = 1 ,此时如果根据greedy算法,那么下一次肯定会选择右边的门,第三次选择右边门获得reward是+3,return更新为 V ( r i g h t ) = 2 (蒙特卡洛方法平均了一下),根据greedy算法第四次也会选择右边门。因此按照贪婪算法就会一直选择右边门,但是其实我们并不清楚左边门到底是什么情况,我们只尝试了一次。从这个例子可以看出,需要对执行每个action的结果都做比较充分的了解,才能说自己的policy是正确的。
因此提出改进算法在greedy基础上有一定概率选择一个随机action,即ϵ−Greedy Exploration,假设有m个action,那么有ϵ的概率随机选择一个action(包括greedy action),从而可以得到更新的policy为(17:48开始证明了改进算法算出的新policy比之前的好,此处略过)

π ( a | s ) = { ϵ m + 1 ϵ i f   a = a r g   m a x a A Q ( s , a ) ϵ m o t h e r w i s e                                 ( 1 )

如果每一个的episode都进行一次evaluation和improvement迭代,那么在第k次迭代时可以更新 ϵ = 1 k 。更新 ϵ 的算法称之为GLIE Monte-Carlo Control。

5.3、Sarsa Algorithm

由第四课Temporal-difference方法能解决MC问题,即通过TD方法来求 Q ( s , a ) ,之前TD的值函数更新公式为 V ( S t ) = V ( S t ) + α ( R t + 1 + γ V ( S t + 1 ) V ( S t ) ) ,那么动作值函数更新公式为 Q ( S , A ) = Q ( S , A ) + α ( R + γ Q ( S , A ) Q ( S , A ) )
基于TD的policy迭代是每走一个step执行一个action都会更新一次。具体的On-Policy Control流程如下:

  • 初始化 Q ( s , a )
  • for each episode:
  • ==初始化一个状态S
  • ==基于某个策略Q 和当前状态S选择一个动作A
  • ==for each step of one episode:
  • ====执行一个动作A,得到反馈的immdiate reward为R,和新的状态 S
  • ====基于当前策略Q和状态 S 选择一个新动作 A
  • ====更新策略: Q ( S , A ) = Q ( S , A ) + α [ R + γ Q ( S , A ) Q ( S , A ) ]
  • ====更新状态 S = S
  • ==直到S到达终止状态

同样的,上面是TD(0)的更新方式,扩展到step为n时更新动作值函数的公式如下:

q t ( n ) = R t + 1 + γ R t + 2 + + γ n 1 R t + n + γ n Q ( S t + n )               ( 2 ) Q ( S t , A t ) = Q ( S t , A t ) + α ( q t ( n ) Q ( S t , A t ) )               ( 3 )

5.4、Off-Policy Learning

之前说过Off-Policy Learning是在某个已知策略(behaviour policy) μ ( a | s ) 下来学习目标策略(target policy) π ( a | s ) ,这样就能够从人的控制或者其他表现的比较好的agent中来学习新的策略。如果把两个策略当成两种分布 P ( X ) , Q ( X ) ,并且假设reward函数为 f ( X ) ,两种分布中reward期望为: E X   P [ f ( X ) ] = E X   Q [ P ( X ) Q ( X ) f ( X ) ] 。因此可以从 μ 中来估计π获得的return,这个方法称为Importance Sampling。
Off-Policy Monte-Carlo是在第四课的Monte-Carlo Learning上的改进,即更新值函数的公式变为

G t π μ = π ( A t | S t ) μ ( A t | S t ) π ( A t + 1 | S t + 1 ) μ ( A t + 1 | S t + 1 ) π ( A T | S T ) μ ( A T | S T ) G t               ( 4 ) V ( S t ) = V ( S t ) + α ( G t π μ V ( S t ) )               ( 5 )

同样的Off-policy TD也是改变了更新值函数公式,改变的这一项相当于给TD target加权,这个权重值代表了目标策略和已知策略匹配程度,代表了是否能够信任目标policy提出的这个action。
V ( S t ) = V ( S t ) + α ( π ( A t | S t ) μ ( A t | S t ) ( R t + 1 + γ V ( S t + 1 ) ) V ( S t ) )               ( 6 )

5.5、Off-Policy Q-Learning

针对未知policy,即本课面临的问题,Off-policy的解决方案是Q-Learning,更新动作值函数。根据 μ ( | S t ) 下一个时刻选择的action是 A t + 1 ,根据 π ( | S t ) 下一个时刻action是 A ,更新公式为 Q ( S t , A t ) = Q ( S t , A t ) + α ( R t + 1 + γ Q ( S t + 1 , A ) Q ( S t , A t ) ,也就是说在某个已知策略下选择了下一个时刻的动作 A t + 1 ,以及下一个时刻的状态 S t + 1 和奖赏 R t + 1 ,将目标策略选择的动作 A 替换到更新公式中。与上面方法不同的是,可以同时更新π和μ,且π是greedy的方式,而μ是采用了ϵ-greedy方式。Q-Learning的target为 R t + 1 + γ Q ( S t + 1 , A ) = R t + 1 + γ Q ( S t + 1 , a r g   m a x a Q ( S t + 1 , a ) ) = R t + 1 + m a x a γ Q ( S t + 1 , a ) ,这里因为选择使Q最大的a′,所以后面的式子就是在求最大的Q。

小结:本课主要是在第四课基础上解决了未知policy未知environment的MDP问题,课程最后有对动态规划方法和Temporal Difference方法的对比。

6、求解近似值函数

这一课主要讲了由于现实问题中状态数过多导致无法直接求解出值函数,从而通过梯度下降的方式来求解真实值函数的近似函数形式。

6.1、内容回顾

前面的课大致上讲解了解决各种情况下的MDP问题,目的就是为了从某个状态开始选择最好的执行方法一直运行到终止状态,要么是求在某个状态S下的value function,要么是求在某个状态下S执行某个动作A的action-value function,但现实中有不少问题的状态S的取值和动作A非常多,例如围棋的361个点位,每个点位会出现黑白空三种情况,那么就有 3 361 10 170 种状态,如果算出每种状态下的真实value function既没有足够的内存也没有足够的计算能力,此外比较接近的状态它们的值函数取值应该是很相似的,这是一种泛化能力。
也就是说需要算法来求解近似的V(S)和Q(S,A),并且针对未知的状态有比较强的泛化能力。这种近似算法称之为function approximation,用 v ^ ( s , w ) 来近似真实值函数,用 q ^ ( s , a , w ) 来近似真实动作值函数,其中 ω 是近似函数的更新参数,例如神经网络的权重。近似的方法有特征线性组合、神经网络、决策树、最近邻等等。以神经网络为例,输入是状态S,那么输出就是 v ^ ( s , w ) ,即把近似值函数用神经网络实现出来。

6.2、随机梯度下降

假设近似值函数对 ω 是可微的,最简单的就是用梯度下降,假设输入状态用特征向量 x ( S ) = ( x 1 ( S ) , x 2 ( S ) , , x n ( S ) ) T ,例如机器人的行走状态,第一个特征是距离横向基准位置多远,第二个特征是距离纵向基准位置多远等等。目标函数是 J ( w ) = E π [ ( v π ( S ) v ^ ( S , w ) ) 2 ] 。从而随机梯度下降求得权重改变量为 Δ w = α ( v π ( S ) v ^ ( S , w ) ) w v ^ ( S , w ) = α ( v π ( S ) v ^ ( S , w ) ) x ( S )
但是在强化学习中, v π ( S ) 是未知的,无法用来当做监督信息,因此要用别的东西来代替,从而可以根据Monte-Carlo Learning和Temporal Difference Learning两种方法来考虑。
Monte-Carlo Learning中针对某个状态叠加每个episode中在这个状态上产生的return,因为每个episode是走到了终止状态的,所以可以向初始状态的方向将return传播回来。而实际上值函数就是return的期望,所以基于MC方法就是用 G t 代替 v π ( S )
Temporal Difference Learning中针对某个状态估计下一个时刻可能获得的return,由immdiate reward和上一次更新的值函数构成,也称为TD target,从而更新当前时刻的值函数,因此用 R t + 1 + γ v ^ ( S t + 1 , w ) 来替换 v π ( S ) 。替换后发现括号内的这一项就是TD error。同样的TD(λ)也是替换成第四课的公式即可。
而动作值函数也是差不多的,就是替换,这里就不提了,参考[1]。
在强化学习中,有个比较经典的例子就是汽车爬山[2],车会在凹的山谷中来回启动,不同的高度上汽车需要学会利用势能来到达对面的山顶,这个问题中的状态就是汽车所处的位置和当前的速度(个人觉得当前的速度应该是action,在不同的位置人控制不同的速度,但是David课中说action是选择加速还是不加速),曲面的起伏代表了value function。通过图中多执行多个episode得到了值函数的表达形式。
1

6.3、DQN

此处讲batch methods说”梯度下降的方法针对一个sample,只利用一次,更新一次梯度之后就不再使用了,并没有挖掘出这个sample所有信息,因此需要用batch methods来重复的利用sample并找到最佳拟合值函数,拟合所有看到过的sample” ,这个意思我觉得并不重要,如果用神经网络来学习参数必然会多次迭代sample,所以直接介绍DQN。
Deep Q-Networks,是DeepMind团队提出的一种深度强化学习方法,具体算法如下:

  • 根据ϵ−greedy policy选择一个动作 a t (这里没具体说policy是哪个,根据Q-Learning,这里应该是behaviour policy)。
  • 选择完 a t 后会产生下个时刻的状态和奖赏,将多个转移序列 ( s t , a t , r t + 1 , s t + 1 ) 保存在称为reply memory的集合D中
  • 从D中随机选择一些转移序列 ( s , a , r , s ) ,基于这些和固定参数 w 计算Q-Learning的target即 r + γ m a x a Q ( s , a ; w )
  • 通过随机梯度下降方法来优化Q-Leanring的target和近似函数 Q ( s , a ; w )
    的均方差。其中近似函数也称为Q-network。
    最后十分钟讲了一下如何结合最小二乘法与MC/TD,令导数等于0再推导,流程跟梯度下降一样,这里就不提了,经过这几课大致可以看出强化学习要求解的核心就是policy和值函数,这一课可以看出值函数的具体形式可以用神经网络表示出来,即把状态变换成一个特征向量当做输入,经过神经网络得到值函数输出。
    [1] http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching_files/FA.pdf
    [2] https://en.wikipedia.org/wiki/Mountain_Car

7、Policy Gradient

本文是David Silver强化学习公开课第七课的总结笔记。这一课主要讲了将policy看成某个参数θ的函数,即将policy形式变成状态和动作的概率分布函数,在policy函数可微的情况下能够通过对参数求导来优化policy。

7.1、内容回顾

在第一课的内容中,曾经提到过agent的分类,将value function、policy、model(environment)进行组合可以得到model-based、policy-based、model-free、value-based、actor critic五种类型。其中value-based是说已知policy情况下学习value function,就像第四课的内容。policy-based是指没有显式的值函数形式,而需要学习policy。actor critic则是需要同时学习学习值函数和policy的形式。
带有随机性的policy往往比确定性的policy效果要好,就如第一课中所说的确定性的policy通常会被过利用。Policy-based类型能学习到带有随机性的policy,并且对于高维的action更有效。后者是因为在用value-based的方法时,常常要最大化当前的值函数,会需要大量的计算。
在之前的课程中,policy都是基于greedy或者ϵ−greedy的方法直接从值函数中获得。本课主要内容是为policy引入参数,变成在某个状态和某组参数下选择某个动作的概率分布 π θ ( s , a ) = P [ a | s , θ ] ,直接求解策略,从已有的sample的experience中学习如何让policy变得更好。为什么要求解含参数的policy也是跟上节课一样的原因,现实问题中有大量的state和action,无法针对每个state每个action都有一个确定的policy,因此需要一定的泛化能力,面对没有见过的state或者action有一定的决策能力。
将Policy表达成参数θ的目标函数,有如下几种形式,start value是针对拥有起始状态的情况下求起始状态 s 1 获得的reward,average value针对不存在起始状态而且停止状态也不固定的情况,在这些可能的状态上计算平均获得的reward,或者只计算immdiate reward的期望。其中 d π θ ( s ) 指状态分布函数。
未完待续
http://chenrudan.github.io/blog/2016/08/03/reinforcementlearninglesssion7.html

猜你喜欢

转载自blog.csdn.net/qingqing7/article/details/79854441