强化学习的数学原理笔记1:状态值及贝尔曼公式的推导

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)\gamma \in \left[ 0,1 \right],通过调节\gamma可以用来调整对近期或远期奖励的重视程度。每种policy的return计算如下,当n趋于无穷大时,有:

                               return_1=0+\gamma 1+\gamma ^21+\cdots =\frac{\gamma}{1-\gamma}

                               return_2=-1+\gamma 1+\gamma ^21+\cdots =-1+\frac{\gamma}{1-\gamma}

                              return_3=0.5\left( 0+\frac{\gamma}{1-\gamma} \right) +0.5\left( -1+\frac{\gamma}{1-\gamma} \right) =-0.5+\frac{\gamma}{1-\gamma}

        比较三个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,则可以计算如下:

v_1=r_1+\gamma r_2+\gamma ^2r_3+\cdots

v_2=r_2+\gamma r_3+\gamma ^2r_4+\cdots

v_3=r_3+\gamma r_4+\gamma ^2r_1+\cdots

v_4=r_4+\gamma r_1+\gamma ^2r_2+\cdots

       我们基于bootstrapping的思想来使上述计算return的式子更加简洁,其实从直观的感受我们就可以得出要计算从某个state出发最终得到总的return其实是由两部分组成的,分别是:①在当前state采取某一action所能够获得的reward,我们称为immediate rewards。②到达下一状态后,以该状态出发所得到的总的rewards,我们称为future rewards。于是我们可以将上述的四个式子整理为下面新的四个式子:

v_1=r_1+\gamma \left( r_2+\gamma r_3+\cdots \right) =r_1+\gamma v_2

v_2=r_2+\gamma \left( r_3+\gamma r_4+\cdots \right) =r_2+\gamma v_3

v_3=r_3+\gamma \left( r_4+\gamma r_1+\cdots \right) =r_3+\gamma v_4

v_4=r_4+\gamma \left( r_1+\gamma r_2+\cdots \right) =r_4+\gamma v_1

       我们可以从上述四个方程中发现一个有趣的现象,每一个return的值依赖于其他的 return,这就是bootstrapping的思想。在我们已知r1、r2、r3、r4以及\gamma的情况下,四个方程可以解出四个未知数,我们可以用线性矩阵来表示这四个方程,这样的方式会更为直观一些。

     \left[ \begin{array}{c} v_1\\ v_2\\ v_3\\ v_4\\ \end{array} \right] =\left[ \begin{array}{c} r_1\\ r_2\\ r_3\\ r_4\\ \end{array} \right] +\gamma \left[ \begin{matrix} 0& 1& 0& 0\\ 0& 0& 1& 0\\ 0& 0& 0& 1\\ 1& 0& 0& 0\\ \end{matrix} \right] \left[ \begin{array}{c} v_1\\ v_2\\ v_3\\ v_4\\ \end{array} \right]

        用矩阵向量的形式可以简单地写成如下式子:

       v=r+\gamma Pv

       自此,我们可以清楚地了解到v、r之间的内部联系,通过求解这个矩阵方程就可以解得v。同时我们证明了Bellman方程的核心思想:从一个state开始获得的return取决于从其他状态开始时获得的return

1.2状态值(State value)

       我们可以用上面提到的返回值return来评估一个policy的优劣,然而,它并不适用于随机系统,因为从一个state开始可能会导致不同的return,所以我们需要引入状态值(state value)的概念。在一系列的时间步长t=0,1,2……下,对象(agent)处于状态(state)S_t,并且按照策略(policy)\pi采取的动作(action)为A_t,下一个状态为S_{t+1},并且获得的实时奖励(reward)为R_{t+1},这个过程可以简洁地表示为

S_t\xrightarrow{A_t}S_{t+1},R_{t+1}

       其中S_tS_{t+1}A_tR_{t+1}都是随机变量,从t开始,我们可以获得一个state-action-reward的trajectory:

S_t\xrightarrow{A_t}S_{t+1},R_{t+1}\xrightarrow{A_{t+1}}S_{t+2},R_{t+2}\xrightarrow{A_{t+2}}S_{t+3},R_{t+3}\cdots

        根据我们前文的定义,该trajectory的discounted return应该是

      G_t=R_{t+1}+\gamma R_{t+2}+\gamma ^2R_{t+3}+\cdots

       我们注意到G_t也应该是一个随机变量,既然是一个随机变量,那么我们就可以计算它的数学期望如下:

v_{\pi}\left( s \right) =E\left[ G_t\left| S_t=s \right. \right]

       这里的v_{\pi}\left( s \right)我们称它为状态值函数(state-value function),或是s的状态值(state value),这里有一些值得注意的地方:

      1.v_{\pi}\left( s \right)与s有关。当s取不同的state时,获得的数学期望自然不同。

      2.v_{\pi}\left( s \right)与策略\pi有关,因为策略\pi的不同,获得的trajectory也不同,所以状态值也不同。

      3.v_{\pi}\left( s \right)与时间t无关,当策略给定时,状态值v_{\pi}\left( s \right)就已经确定。    

      当策略和系统模型都是确定的时候,从一个state开始总是会导致相同的trajectory,此时该trajectory所获得的return值即为state value,两者是等价的;当策略或者系统模型是随机的时候,从同一个state开始可能会产生不同的trajectory,在这种情况下,不同的trajectory生成的return值是不同的,而此时state value是这些return值的平均值,即数学期望。所以用state value来衡量一个policy的好坏相对与用return值更具有一般性。

2 贝尔曼公式(Bellman equation)

2.1 贝尔曼公式的推导

       我们现在来推导贝尔曼公式,它是一组描述所有状态值之间关系的线性方程。在前文介绍return时我们已经可以将G_t写成如下形式:

G_t=R_{t+1}+\gamma R_{t+2}+\gamma ^2R_{t+3}+\cdots \\ \,\, =R_{t+1}+\gamma \left( R_{t+2}+\gamma R_{t+3}+\cdots \right) \\ \,\, =R_{t+1}+\gamma G_{t+1}

       这个式子阐明了这一时刻的返回值G_t与下一时刻的返回值G_{t+1}之间的关系。接下来,由于状态值为返回值的数学期望,借助概率论的知识,我们将状态值写成如下形式:

                                            v_{\pi}\left( s \right) =E\left[ G_t\left| S_t=s \right. \right]

                                                        =E\left[ R_{t+1}+\gamma G_{t+1}\left| S_t=s \right. \right]

                                                        =E\left[ R_{t+1}\left| S_t=s \right. \right] +\gamma E\left[ G_{t+1}\left| S_t=s \right. \right]

       从上式中我们可以清晰地看到一个状态值是由两部分组成的,我们现在来分析这两部分的具体含义以及如何计算。

       第一项E\left[ R_{t+1}\left| S_t=s \right. \right]是即时回报(immediate rewards),用概率论的知识我们将其写成如下形式:

                                  E\left[ R_{t+1}\left| S_t=s \right. \right] =\sum_{a\in A}{\pi \left( a\left| s \right. \right)}E\left[ R_{t+1}\left| S_t=s,A_t=a \right. \right]

                                                                 =\sum_{a\in A}{\pi \left( a\left| s \right. \right)}\sum_{r\in R}{p\left( r\left| s,a \right. \right) r}

       这里AR是可能的动作(action)和回报(reward)集合,由于在不同的state所可能采取的action集合不同,故A应该是状态s的函数,即应该记为A(s)。同理,回报集合R应该是(s,a)的函数。这个式子的第一项是在state处于s的情况下采取动作a的条件概率,第二项是在state处于s,动作选择a的情况下得到的回报为r的条件概率,第三项为即时回报r,将各种情况求和我们就可以计算出即时回报的数学期望。

      第二项E\left[ G_{t+1}\left| S_t=s \right. \right]是未来回报(future rewards),我们可以用以下的式子来计算它:

                              E\left[ G_{t+1}\left| S_t=s \right. \right] =\sum_{s\in S}{E\left[ G_{t+1}\left| S_t=s \right. ,S_{t+1}=s^{\prime} \right]}p\left( s^{\prime}\left| s \right. \right)

                                                             =\sum_{s\in S}{E\left[ G_{t+1}\left| S_{t+1}=s^{'} \right. \right]}p\left( s^{'}\left| s \right. \right)

                                                             =\sum_{s\in S}{v_{\pi}\left( s^{'} \right)}p\left( s^{'}\left| s \right. \right)

                                                             =\sum_{s\in S}{v_{\pi}\left( s^{'} \right)}\sum_{a\in A}{p\left( s^{'}\left| s \right. \right)}\pi \left( a\left| s \right. \right)

       上述推导中使用了Markov的无记忆性,即未来的奖励近取决于当前状态而不是以前的状态。

       将上述两项整合在一起,我们就得到了贝尔曼公式的一般形式:

       v_{\pi}\left( s \right) =E\left[ G_t\left| S_t=s \right. \right]+\gamma E\left[ G_{t+1}\left| S_t=s \right. \right]

                 =\sum_{a\in A}{\pi \left( a\left| s \right. \right)}\sum_{r\in R}{p\left( r\left| s,a \right. \right) r}+\gamma \sum_{a\in A}{\pi \left( a\left| s \right. \right) \sum_{s\in S}{p\left( s^{'}\left| s,a \right. \right)}}v_{\pi}\left( s^{'} \right)

                 =\sum_{a\in A}{\pi \left( a\left| s \right. \right) \left[ \sum_{r\in R}{p\left( r\left| s,a \right. \right) r}+\gamma \sum_{s\in S}{p\left( s^{'}\left| s,a \right. \right) v_{\pi}\left( s^{'} \right)} \right]}

       这个式子表征了各个状态值的内在联系,是设计和分析强化学习的基本工具。乍一看这个式子的形式非常复杂,实际上它存在一个非常清晰的结构。看似我们需要通过一个未知的状态值去计算另一个未知的状态值,但实际上,贝尔曼方程指的是所有状态的一组线性方程,而不是单一的方程,所以我们可以将多个线性方程联立,这样就可以解得各个状态值。\pi \left( a\left| s \right. \right)是给定的策略(policy),p\left( r\left| s,a \right. \right)p\left( s^{'}\left| s,a \right. \right)表征的是系统模型。

2.2 贝尔曼公式的矩阵-向量形式

       为了更为直观简洁地看懂贝尔曼公式的本质,我们可以将上文的一般形式写为矩阵-向量形式,我们首先可以将贝尔曼公式进行重写如下

v_{\pi}\left( s \right) =r_{\pi}\left( s \right) +\gamma \sum_{s^{\prime }\in S}{p_{\pi}\left( s^{'}\left| s \right. \right) v_{\pi}\left( s^{'} \right)}

       r_{\pi}\left( s \right)为即时奖励的平均值,p_{\pi}\left( s^{'}\left| s \right. \right)是在策略\pi下从s过渡到s'的概率。由此式我们可以写出贝尔曼公式的矩阵-向量形式如下:

   v_{\pi}=r_{\pi}+\gamma P_{\pi}v_{\pi}

       其中的v_{\pi}为状态值向量,r_{\pi}为即时奖励向量,P_{\pi}为状态转移矩阵。至此,我们将复杂的贝尔曼公式的一般形式化简为了如上式一目了然的矩阵-向量形式,也可以体会到贝尔曼公式的本质就是基于bootstrapping思想构成的一系列线性方程。

2.3 贝尔曼公式的求解

      计算给定策略的状态值式强化学习中的一个基本问题。这个问题通常被称为策略评估(policy evaluation),赵老师的书中列出了两种计算状态值的方法。

       第一种方法通过线性代数的方可以直接得到状态值的精确解,即

v_{\pi}=\left( I-\gamma P_{\pi} \right) ^{-1}r_{\pi}

       这种方法在状态空间很大的时候计算矩阵的逆复杂度很高,故在实战中我们一般使用第二种方法,即迭代法。

v_{k+1}=r_{\pi}+\gamma P_{\pi}v_k

     该算法生成一个值序列\left\{ v_0,v_1,v_2,\cdots \right\},其中v_0v_{\pi}的初始猜测,经过多次迭代,我们可以认为

v_k\rightarrow v_{\pi}=\left( I-\gamma P_{\pi} \right) ^{-1}r_{\pi}

     具体证明见书中过程如下:

    大体的证明思路是令\delta _kv_kv_{\pi}之间的误差,证明当k趋向于无穷大时,\delta _k趋向于0。

3 学习心得及体会

       强化学习相对于机器学习实际上是一个完全不同的领域,学习强化学习最重要的是把握强化学习中的状态(state)、 动作(action)、回报(reward)以及策略(policy)这四元组。西湖大学赵世钰老师的《强化学习的数学原理》中以一个贯穿全文的A grid world example来为我们缓缓揭开强化学习的面纱,在b站听了一遍赵老师的课后又通读了这本著作,书中的例子以及推导都十分地详尽,非常适合强化学习的初学者入门,更让我感叹赵老师扎实的基础知识以及渊博的学问,贝尔曼公式是强化学习中用于策略评估的基础,故我整整花了三天的时间进行笔记的整理和理解,希望能对一起学习强化学习的初学者有帮助,共勉。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值