强化学习二、MDP

        前面已经讲解了什么是强化学习,也以Maze游戏为例形象的介绍了强化学习涉及到的主要概念:S、A、P、R、γ,但并未涉及到数学公式。想了解强化学习的朋友可以参考链接https://blog.csdn.net/wshzd/article/details/103372419。本文将以马尔科夫决策过程MDP(Markov decision processes)为例详细介绍这些概念之间的关系,其实整个强化学习算法都是围绕这五个概念展开的,因此理解这些概念非常重要。

       这五个概念在MDP中分别是有限状态空间、有限动作空间、状态转移概率、回报函数、折扣因子,特别注意SA都是有限的,这是MDP解决问题的前提。在介绍MDP之前,我们先来复习一下基础知识:

       1、马尔可夫性

        什么是马尔科夫性?系统的下一个状态st+1只与当前状态st有关,而与以前的状态无关,使用数学表达式就是

                                        

        从定义可以看出,当前状态st其实是蕴含了所有相关的历史信息,一旦当前状态已知,历史信息就会被抛弃。

        2、马尔科夫过程

        马尔科夫过程是一个二元组(S,P),S是有限状态空间,P是状态转移概率矩阵。

                                                                     

       矩阵P的每一行之和为1,每一列之和也为1,其中每一个值代表状态转移的概率,比如代表从状态到状态的概率值。

       在了解了马尔科夫性和马尔科夫过程,我们再来看一下马尔科夫链,以学生为例介绍马尔科夫链,状态S为{Facebook,Class1,Class2,Class3,Pass,Sleep,Pub}七个状态

对应的状态转移矩阵为

比如行为C1,列为C2,那么0.5代表学生上完Class1后继续上Class2的概率是0.5

假设以C1为开始位置,那么可以有很多的决策链,比如:

C1 C2 C3 Pass Sleep
C1 FB FB C1 C2 Sleep
C1 C2 C3 Pub C2 C3 Pass Sleep
C1 FB FB C1 C2 C3 Pub C1 FB FB FB C1 C2 C3 Pub C2 Sleep

       既然可以有这么的链,如果我们想找出哪条最优的链,该如何找呢?很直观的想法是给每个状态指定一个值作为回报reward,下图R表示立即回报:

       那么某个状态的价值就是当前时刻之后的所有经过的状态的值之和

公式是,                                                                                                                             (1)

       其中折扣因子γ∈[0,1]表示未来回报对当前回报的影响程度,指的是当前回报只依赖下一时刻的回报,指的是未来不管距离现在有多远,对当前状态的回报是同等重要的。其实在实际使用中一般都不选择1,理由是:其一、从数学上很难保证公式(1)收敛;其二、未来的行为是不确定的,所以通常来说,未来越远,对现在的影响应该越小。

       其实公式(1)形式比较直观,但是通常情况下马尔科夫链有很多,甚至是无穷多,每个状态的值波动比较大,那每个状态的值还能评估吗?有什么解决方案呢?既然通过每个马尔科夫链计算的状态值波动比较大,那么它的期望值如何呢?,这就引出了值函数的概念。

数学公式如下所示:v(s) = E [Gt |St = s]                                      (2)

       我们以之前提到的C1为开始状态的马尔科夫链为例,说明C1状态的值函数计算过程,假设,那么根据公式(1),可以分别计算每条马尔科夫链的C1值函数

       由此看出,其实值函数可以分成两部分来计算,其一就是当前状态的立刻回报,其二是折扣因子*下一个状态的值函数γv(St+1),这就是贝尔曼方程,公式的推导过程如下:

       从贝尔曼方程看出,如果我们知道当前立刻回报和下一个状态的值函数,那么就可以计算当前状态的值函数,这似乎是人抬人,我们通常会先给每个状态赋一个初始值,然后使用贝尔曼方程进行迭代计算,直到收敛为止。话说回来,每个状态的下一个状态是一个概率问题,因此需要对可能转移的所有状态进行概率求和计算,公式如下:

      了解HMM的朋友很容易理解上面的公式,为了让尽可能多的人领略其中的深意(有点夸张哈),我以计算Class3为例来说明计算过程,它的立刻回报是-2,可以转移到pass和pub两个状态,并且转移概率分别是0.6和0.4,如果已知这两个状态的值分别为10和0.8,那么Class3的状态值就是  -2 + 0.6 * 10 + 0.4 * 0.8 = 4.3,具体细节如下图所示:

       至此,我们比较详细的介绍了贝尔曼方程的计算逻辑,毫不夸张的说,整个强化学习算法都是围绕这个公式展开的,形成了一系列的算法,因此我们必须清晰的理解这个公式背后的含义。下面我们从矩阵的角度来理解一下这个公式:

       我们把贝尔曼方程抽象为v = R + γPv,很明显可以写成矩阵形式,如下:

通过数学的基本运算,移项合并同类项,我们可以得到,公式推导如下图:

       从公式可以看出,只要的逆矩阵存在,就可以计算状态的值。它的时间复杂度为为状态空间的大小。如果状态空间比较小,可以直接求解,但是在现实中,状态空间往往很大,甚至是无穷大,据听说星际争霸的状态空间数比宇宙的原子数还多,因此通常使用其他方法来求解,比如动态规划、蒙特卡洛、时间差分等等,这些方法都形式了对应的算法体系,后面的章节会逐步分享,望读者敬请期待。

       上面比较详细的介绍了MRP,也就是基于回报的马尔科夫链,它在状态转移之间不考虑如何转移,这种情况不能区分不同状态转移之间的差别,于是我们在状态转移过程加入一个动作参数来表示不同动作对状态的影响程度,引入MDP,接下来我们看一下什么是MDP马尔科夫决策过程,从名称上就可以看出,与MRP相比,主要多了决策这个概念,决策就是如何选择动作的过程,其实就是对状态值函数的评价多了动作这个维度。

       在这里,我们再回顾一下强化学习涉及到的五个基本概念:S、A、P、R、γ。S就是有限个状态的集合;A是有限个动作空间;P是状态转移矩阵;比如,表示的是在当前状态下,采取动作后,转移到状态的概率是;R就回报函数,比如,表示的是当前状态为,采取动作后的回报期望。是一个折扣因子,

       在MDP中,我们对第一个图作了一些调整,把状态修改为动作了,如下图:

       其实这里的动作Study、Pub、Sleep、Quit、Facebook就是MDP中的策略π,我们给出严格的数据公式,由此看出策略表示在状态下采取动作的概率,在实际中策略应该依赖之前的所有状态,但是在MDP中我们简化为只依赖当前状态,而无历史状态无关。

       在MDP中,我们重新给出状态值函数的定义:

       由于策略的原因,我们需要引出动作值函数的概念,表示在状态下采取动作所获得的期望回报,公式如下:,比如下图,在状态Class1的时候,采取不同的动作Facebook和Study得到的回报是不同的。

其实状态值函数和动作值函数是存在某种联系的,看下图:

       其中空心圆圈表示状态,实心圆圈表示状态-行为对。

       状态值函数可以看作是在当前状态下采取不同动作得到的动作值函数值和采取相应动作的概率乘积之和,其中表示采取动作的概率。

       同样的道理,也可以把动作值函数表示成状态值函数的函数关系,如下图:

      从数学角度考虑,我们把上面两个公式合并进行消元得到如下两个迭代公式

      我们可以根据上面两个递推公式来求解任意一个状态的值函数了,如下图:

       在MDP中,我们的目的是通过调整不同的策略使得状态值函数和动作值函数值最大,也就是,以学生为例,得到最优的状态值函数、动作值函数和最优策略结果(红色):

       那这个最优的状态值函数和动作值函数是如何选择的呢?

由于策略π是随机的,因此累计回报也是随机的,根据贝尔曼公式,那么最优的状态值函数和动作值函数分别为:

下面给出一个比较详细的例子来说明最优状态值函数的计算过程,如下图:

       到目前为止,我们介绍了MRP,然后有引出MDP以及MDP中很重要的公式是贝尔曼公式,最后通过贝尔曼公式推导出状态值函数和动作值函数的迭代公式,由于强化学习是找出最优的策略,那么需要对策略的结果进行评估,评估的方法就是使得状态值函数和动作值函数最大

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wshzd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值