1 状态值(state value)的定义及计算
引入西湖大学赵世钰老师《强化学习的数学原理》中一个贯穿全书的例子A grid world example来解释何为状态值、如何具体计算状态值以及为什么状态值是强化学习中非常重要的一环。
1.1 返回值(return)
假设有如下三种policy都以s1为起点,最终都到达target,我们需要计算各个policy得到的return是多少。
我们把位置s1、s2、s3、s4看作状态(state);将上、下、左、右、静止记为a1、a2、a3、a4、a5,看作动作(action)。 赵老师的书中考虑的情况是无限长轨迹(infinity trajectory),即到达target后依旧计算下一个时间步,故需要引入discounted return,即在每个时间步取得的回报(reward)需要乘以一个衰减率(discount rate),通过调节可以用来调整对近期或远期奖励的重视程度。每种policy的return计算如下,当n趋于无穷大时,有:
比较三个policy的return值,可以看出,最左侧的policy得到的return值最大,中间的policy得到的return值最小,这与我们直观上的感受是一样的,因为中间的policy经过了fobidden area。return值计算的是依循某种policy所得到的累计回报,return值越大,说明该policy越优,故return值可以用于评估策略(evaluate policy)。
接下来的第二个例子,可以列出更为简洁的返回值计算公式,同样来自于赵老师的书中。
假设v1,v2,v3,v4是从s1,s2,s3,s4出发时所获得的返回值return,则可以计算如下:
我们基于bootstrapping的思想来使上述计算return的式子更加简洁,其实从直观的感受我们就可以得出要计算从某个state出发最终得到总的return其实是由两部分组成的,分别是:①在当前state采取某一action所能够获得的reward,我们称为immediate rewards。②到达下一状态后,以该状态出发所得到的总的rewards,我们称为future rewards。于是我们可以将上述的四个式子整理为下面新的四个式子:
我们可以从上述四个方程中发现一个有趣的现象,每一个return的值依赖于其他的 return,这就是bootstrapping的思想。在我们已知r1、r2、r3、r4以及的情况下,四个方程可以解出四个未知数,我们可以用线性矩阵来表示这四个方程,这样的方式会更为直观一些。
用矩阵向量的形式可以简单地写成如下式子:
自此,我们可以清楚地了解到v、r之间的内部联系,通过求解这个矩阵方程就可以解得v。同时我们证明了Bellman方程的核心思想:从一个state开始获得的return取决于从其他状态开始时获得的return。
1.2状态值(State value)
我们可以用上面提到的返回值return来评估一个policy的优劣,然而,它并不适用于随机系统,因为从一个state开始可能会导致不同的return,所以我们需要引入状态值(state value)的概念。在一系列的时间步长t=0,1,2……下,对象(agent)处于状态(state),并且按照策略(policy)采取的动作(action)为,下一个状态为,并且获得的实时奖励(reward)为,这个过程可以简洁地表示为
其中,,,都是随机变量,从t开始,我们可以获得一个state-action-reward的trajectory:
根据我们前文的定义,该trajectory的discounted return应该是
我们注意到也应该是一个随机变量,既然是一个随机变量,那么我们就可以计算它的数学期望如下:
这里的我们称它为状态值函数(state-value function),或是s的状态值(state value),这里有一些值得注意的地方:
1.与s有关。当s取不同的state时,获得的数学期望自然不同。
2.与策略有关,因为策略的不同,获得的trajectory也不同,所以状态值也不同。
3.与时间t无关,当策略给定时,状态值就已经确定。
当策略和系统模型都是确定的时候,从一个state开始总是会导致相同的trajectory,此时该trajectory所获得的return值即为state value,两者是等价的;当策略或者系统模型是随机的时候,从同一个state开始可能会产生不同的trajectory,在这种情况下,不同的trajectory生成的return值是不同的,而此时state value是这些return值的平均值,即数学期望。所以用state value来衡量一个policy的好坏相对与用return值更具有一般性。
2 贝尔曼公式(Bellman equation)
2.1 贝尔曼公式的推导
我们现在来推导贝尔曼公式,它是一组描述所有状态值之间关系的线性方程。在前文介绍return时我们已经可以将写成如下形式:
这个式子阐明了这一时刻的返回值与下一时刻的返回值之间的关系。接下来,由于状态值为返回值的数学期望,借助概率论的知识,我们将状态值写成如下形式:
从上式中我们可以清晰地看到一个状态值是由两部分组成的,我们现在来分析这两部分的具体含义以及如何计算。
第一项是即时回报(immediate rewards),用概率论的知识我们将其写成如下形式:
这里A与R是可能的动作(action)和回报(reward)集合,由于在不同的state所可能采取的action集合不同,故A应该是状态s的函数,即应该记为A(s)。同理,回报集合R应该是(s,a)的函数。这个式子的第一项是在state处于s的情况下采取动作a的条件概率,第二项是在state处于s,动作选择a的情况下得到的回报为r的条件概率,第三项为即时回报r,将各种情况求和我们就可以计算出即时回报的数学期望。
第二项是未来回报(future rewards),我们可以用以下的式子来计算它:
上述推导中使用了Markov的无记忆性,即未来的奖励近取决于当前状态而不是以前的状态。
将上述两项整合在一起,我们就得到了贝尔曼公式的一般形式:
这个式子表征了各个状态值的内在联系,是设计和分析强化学习的基本工具。乍一看这个式子的形式非常复杂,实际上它存在一个非常清晰的结构。看似我们需要通过一个未知的状态值去计算另一个未知的状态值,但实际上,贝尔曼方程指的是所有状态的一组线性方程,而不是单一的方程,所以我们可以将多个线性方程联立,这样就可以解得各个状态值。是给定的策略(policy),和表征的是系统模型。
2.2 贝尔曼公式的矩阵-向量形式
为了更为直观简洁地看懂贝尔曼公式的本质,我们可以将上文的一般形式写为矩阵-向量形式,我们首先可以将贝尔曼公式进行重写如下
为即时奖励的平均值,是在策略下从s过渡到s'的概率。由此式我们可以写出贝尔曼公式的矩阵-向量形式如下:
其中的为状态值向量,为即时奖励向量,为状态转移矩阵。至此,我们将复杂的贝尔曼公式的一般形式化简为了如上式一目了然的矩阵-向量形式,也可以体会到贝尔曼公式的本质就是基于bootstrapping思想构成的一系列线性方程。
2.3 贝尔曼公式的求解
计算给定策略的状态值式强化学习中的一个基本问题。这个问题通常被称为策略评估(policy evaluation),赵老师的书中列出了两种计算状态值的方法。
第一种方法通过线性代数的方可以直接得到状态值的精确解,即
这种方法在状态空间很大的时候计算矩阵的逆复杂度很高,故在实战中我们一般使用第二种方法,即迭代法。
该算法生成一个值序列,其中是的初始猜测,经过多次迭代,我们可以认为
具体证明见书中过程如下:
大体的证明思路是令为与之间的误差,证明当k趋向于无穷大时,趋向于0。
3 学习心得及体会
强化学习相对于机器学习实际上是一个完全不同的领域,学习强化学习最重要的是把握强化学习中的状态(state)、 动作(action)、回报(reward)以及策略(policy)这四元组。西湖大学赵世钰老师的《强化学习的数学原理》中以一个贯穿全文的A grid world example来为我们缓缓揭开强化学习的面纱,在b站听了一遍赵老师的课后又通读了这本著作,书中的例子以及推导都十分地详尽,非常适合强化学习的初学者入门,更让我感叹赵老师扎实的基础知识以及渊博的学问,贝尔曼公式是强化学习中用于策略评估的基础,故我整整花了三天的时间进行笔记的整理和理解,希望能对一起学习强化学习的初学者有帮助,共勉。