第4章 动态规划-策略迭代和价值迭代

参考书籍: Reinforcement Learning An introduction
第二版 作者:Richard S. Sutton and Andrew G. Barto
以及此书的中文版《强化学习》

第4章 动态规划

上一章:第3章:有限马尔可夫决策过程
下一章:第5章: Monte Carlo蒙特卡洛方法

1.介绍

动态规划在强化学习中的使用受到限制。主要因为两个原因:
1.动态规划要求一个正确的模型假设。
2.动态规划计算开销大。
但是,动态规划是理解其它强化学习方法的基础。其它不使用动态规划的强化学习方法所做的事情,仅仅是为了在不知道模型和减小计算开销的条件下,达到和动态规划一样的效果。
虽然动态规划也可以应用到连续的动作和状态空间中,但是可以只在某些案例中能得到正确结果。动态规划在解决连续动作和状态空间问题时,一个通用的求近似解的方法是量化动作和状态空间,然后利用有限状态的动态规划方法。这个方法之后讨论。
DP和增强学习思想的核心通常说来是用价值函数去组织构建一种搜索从而找到好的策略。 本章展示DP怎么被用来计算上一章(上一章链接)中定义的价值函数。 在上一章中讨论过的,一旦我们找到最优价值函数 v∗ 或者 q∗,我们就可以很容易的获得最优策略,这符合贝尔曼最优方程:
在这里插入图片描述
或者在这里插入图片描述

2.策略评估(预测)

上一章介绍了以下式子:
记住下面这个式子是Vπ的等式。下一个公式会用到这个结论。
在这里插入图片描述
在这里 π(a|s) 是在状态 s 时使用策略 π 采取动作 a 的概率, 期望下标 π 用来表明是在策略 π 的条件下只要 γ<1 或者所有的状态在策略 π(a|s) 下都能达到最终状态, 就能保证 vπ 存在且唯一。解释一下上面这句话。因为Vπ表示的未来长期的收益,如果是上一章说的持续型任务,那么γ<1,可以保证最终回报G不会无限制的增加,而是会收敛到一个值,也就保证 vπ 存在且唯一。此外,如果对所有状态策略都能到达终止状态,即回合型任务,那么G肯定是一个定值,也就能保证 vπ 存在且唯一。

为了求解最优解,可以考虑迭代。Vk+1可以看做下一次迭代的值,等式右边涉及到Vk即上一轮迭代的值。因此每一轮迭代的新的V值由上一轮决定,那么什么时候终止呢?显然但新的V值和上一轮的V值相等的时候,那么迭代就没有意义了。我们假设Vk等于Vπ(这一小节开头要求记住的Vπ式子),那么下面式子Vk+1的右边可以变成Vπ的,于是右边可以直接用Vπ替换掉。即Vk+1=Vπ。故Vk+1=Vk=Vπ,表示可以迭代停止了。Vπ到底是多少我们不需要知道。我们只需要知道存在这样的Vπ可以使得迭代到一定时刻,Vk+1会等于Vπ就行了。这就是我们需要求解的Vπ。
在这里插入图片描述
在迭代得时候,我们不可能把Vk+1=Vk来当作迭代停止的条件,因为对于持续性任务,V是收敛到某一个值,而不会等于某一个值,这意味着我们得迭代停止条件是Vk+1和Vk的差值小于一个非常小的数的时候就停止。
在这里插入图片描述

3.策略提升

我们计算某个策略价值函数的目的是找到一个更好的策略。假设我们已经确定了一个任意确定性的策略 π 价值函数 vπ。 对于某些状态 s 我们想知道是否应该改变策略来明确的选择一个动作 a≠π(s)。 我们知道在当前状态 s 遵从当前的策略有多好——也就是 vπ(s)——但是改变为一个新的状态会更好还是坏呢? 一种解决这个问题的方法是考虑从状态 s 下选择动作 a,然后遵从现有的策略 π。
上一节策略评估讲的是下图标号为1的红色圈起来的内容。使得V在当前策略下收敛。而这小节策略提升是指在策略评估完成一次后,如何提升该策略,即下图中的圈起来的标号2的部分。注意没圈起来的这些策略实际上是不会执行的。作者列出来是为了发现这个方法存在的问题是策略很快就收敛了而不需要等到策略评估收敛,为价值迭代做一个铺垫。
在这里插入图片描述
接下来就是看圈起来的2部分怎么由最初的随机策略进行一次策略提升得到的。
下面的公式之前已经讲过。是在状态s下采取a动作的时候,带来的总收益的期望。
在这里插入图片描述
我们在策略π下评估了每一个状态的价值。那么 在状态 s 选择执行一次动作 a 然后遵从策略 π 是否会比一直遵从策略 π 好——然后我们当然愿意每次到达状态 s 选择动作 a 都会比较好。 那么新的策略事实上总体来说也会比较好。
这种方法是正确的,只是 策略提升理论 的一种特殊情况。π 和 π′ 是任意一对确定性的策略, 这样一来,对于所有的 s∈S,
在这里插入图片描述
那么策略 π′ 必须与策略 π 同样好或者比策略 π 更好。 也就是说,必须从所有的状态 s∈S 取得更好或者相等的期望回报:
在这里插入图片描述

证明如下
在这里插入图片描述
目前为止我们看到当给定一个策略和它的价值函数后,我们可以很容易地对在某个状态的动作改变进行评估。 很自然就会扩展到考虑所有状态和所有可能的动作,根据 qπ(s,a) 选择在每个状态最好的动作。 换句话说,考虑新的 贪婪 策略 π′,如下
在这里插入图片描述

假定新的贪婪策略 π′,与旧的策略 π 一样好。那么 Vπ=Vπ′, 根据 (4.9) 对于所有的 s∈S:
在这里插入图片描述
但是这与贝尔曼最优方程 (4.1) 一致(这和“2.策略评估”黑体是一样的原理),所以,Vπ′ 必须是 V∗, π 和 π′ 必须都是最优策略。因此策略提升一定会得到一个更好的策略除非初始的策略就是最优的。
目前为止在这一章节中我们我们考虑了确定策略的特殊情况。普遍情况下,一个随机策略 π 通过在每一个状态 s 采取每一个动作 a 来指定概率 π(a|s)。 我们不会讨论细节,但是实际上,这一章节的所有的方法都可以很容易的扩展到随机策略。 特别的,策略提升理论贯穿如前所述的随机策略例子。另外,如果策略提升步骤比如 (4.9) 之间 有联系——也就是说,如果有几个动作都能得到最大值——那么在随机策略的例子中我们不需要从中选择一个单独的动作。 取而代之的是,每一个取得最大值的动作在新的贪婪策略中有一定的概率被选择。只要非最大动作的概率为零,任何分摊的方案都可以。

4.策略迭代

上面已经介绍了策略评估和策略提升。策略迭代就是交替的进行策略评估和策略提升。原理是一旦策略 π,已经用 Vπ 提升为更好的策略 π′, 我们可以计算 Vπ′ 再次提升策略得到更好的策略 π′′。 我们可以得到一系列单调提升的策略和价值函数:
在这里插入图片描述
需要注意的是,“3.策略提升”的第一张图这个例子,恰好在执行了圈1的策略评估,然后进行圈2的策略提升后,策略直接从最开始的随即策略变成了最优策略。但是一般情况下,很难这样迭代一次就直接提升到最优策略。因此策略迭代通常需要迭代多次才能得到最优策略。
在这里插入图片描述

5.价值迭代

回顾:策略迭代是在策略评估时,让V收敛后,再进行策略提升。再用提升的策略进行策略评估。。。一直训练到策略提升收敛位置。
上述策略迭代是很难实现的,因为每一轮迭代都需要让V收敛才提升一次策略。V收敛实际上是需要大量计算开销的。价值迭代实际上是更新一次V就进行策略提升,而不等到V收敛才策略提升。由于策略提升就是去最大动作的q,因此只需要在V迭代的时候,取max就是策略提升后计算的V了,如下形式
在这里插入图片描述
对应代码如下
在这里插入图片描述

6.异步动态规划

对于价值迭代而言,虽然不需要等待V收敛,而是每一次就更新V就更新策略。但是每一次更新V需要遍历所有的状态s,更新每个状态s的V(s)。异步动态规划是指,每一次V更新不需要遍历所有状态,而是只更新部分V(s)。
即异步 DP算法是就地迭代DP算法,并没有按照规则的状态集更新步骤进行组织。 这些算法以任何顺序更新状态值,使用恰好可用的其他状态值。某些状态的值可能会在其他状态的值更新一次之前被更新多次。 为了收敛到准确值,异步算法需要持续的回溯所有的状态值:在一定量的计算之后不能忽视任何状态。 异步DP算法在选择回溯更新状态时有极大的灵活性。

重点:事实上,在状态空间非常大的环境中,必须使用异步动态规划。例如,五子棋有多于 1020 个状态。 即使我们能够一秒钟执行一百万个状态的价值迭代更新,也会花费一千年才能完成一次更新。
未来学习的DQN,DDPG,TD3等算法,一般通过经验池数据来保证一些状态的值被更新,同时也会和环境直接交互,交互得到一部分数据状态更新取状态的值。都是属于异步的形式。

7.广义策略迭代

策略迭代包含两个同时进行的交互过程,一个使得价值函数与当前策略一致(策略评估),另一个使得策略在当前价值函数下变得贪婪(策略提升)。 在策略迭代过程中,这两个过程相互交替,一个完成了另一个才开始,但是这并不是必须的。 在价值迭代过程中,例如,在每两次策略提升的过程中只进行一次策略评估的迭代。 异步DP方法中,评估和提升过程以一种更加精细的方式交替。在某些例子中一个状态在转移到其他状态之前就在一个过程中更新。 只要两个过程持续更新所有的状态,最终的结果就会一致,即收敛到最优价值函数和最优策略
在这里插入图片描述

我们用术语 广义策略迭代 (GPI)这个词来指代策略评估和策略提升相互交互的一般概念,而不依赖于两个过程的粒度和其他细节。 几乎所有的强化学习方法都可以被描述为GPI。也就是说,都有可识别的策略和价值函数, 策略总是被价值函数进行更新,价值函数用来计算出相应策略下的价值函数,如上图所示。 很容易看到,如果评估过程和提升过程都稳定了,也就是说,不会再有变化,那么价值函数和策略一定是最优的。 价值函数仅在与当前策略一致时才稳定,并且策略仅在相对于当前价值函数贪婪时才稳定。 因此,只有当一个策略在它自己的评估函数下保持贪婪时,两个过程才能都稳定下来。 这预示着贝尔曼最优方程(4.1)成立,因此这个策略和价值函数是最优的。
在这里插入图片描述

GPI中的评估和提升的过程可以认为是既存在竞争又存在合作。在竞争这个意义上他们走向相反的方向。 使价值函数的策略贪婪通常会使更改的策略的价值函数不正确,使价值函数与策略一致通常会导致该策略不再贪婪。 然而,从长远来看,这两个过程相互作用以找到单一的联合解:最优价值函数和最优策略。
我们可能还会考虑GPI中评估和提升过程的约束和目标的交互,例如,如上图所示两维空间中的两条线。 虽然实际的几何比这更加复杂,这个图表明了实际情况中会发生的情况。 每一个过程驱使价值函数或者策略朝向一条代表这两个目标的一个解的线前进。 目标会交互是因为两条线并不互相垂直。直接驱使向一个目标发展会导致偏离另一个目标。 然而,不可避免地,联合的过程越来越趋近整体的最优目标。 图中的箭头对应于策略迭代的行为过程,每个箭头都使系统完全达到两个目标中的一个。 在GPI过程中可以采取更小不完全的步骤去达到每个目标。 任一种情况,这两个过程一起会达到整体的最优目标,即使每一个单独都不能达到最优。

上一章:第3章:有限马尔可夫决策过程
下一章:第5章: Monte Carlo蒙特卡洛方法

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
强化学习中,值迭代策略迭代都是解决马尔可夫决策过程(MDP)的经典算法。值迭代策略迭代是两种不同的方法,它们的收敛速度受到许多因素的影响,如状态空间的大小、奖励函数的稀疏性等等。下面分别介绍一下这两种算法的具体实现和收敛速度。 值迭代算法: 值迭代是一种基于值函数的迭代算法,它的目标是通过迭代更新值函数来得到最优策略。具体算法如下: 1. 初始化值函数V(s)为任意值; 2. 对于每个状态s,迭代计算V(s)的值,更新公式为:V(s) = max_aΣ_s' P(s,a,s')[R(s,a,s') + γV(s')],其中a是动作,s'是下一个状态,P是状态转移概率,R是奖励函数,γ是折扣因子; 3. 重复执行第2步,直到值函数V(s)收敛。 值迭代算法的收敛速度比较快,因为每次迭代都会更新所有状态的值函数,所以收敛速度较快,但是在状态空间比较大的情况下,值迭代的计算量会较大。 策略迭代算法: 策略迭代是一种基于策略迭代算法,它的目标是通过迭代更新策略函数来得到最优策略。具体算法如下: 1. 初始化策略函数π(s)为任意策略; 2. 对于每个状态s,迭代计算策略函数π(s)的值,更新公式为:π(s) = argmax_aΣ_s' P(s,a,s')[R(s,a,s') + γV(s')],其中a是动作,s'是下一个状态,P是状态转移概率,R是奖励函数,γ是折扣因子,V(s')是下一个状态的值函数; 3. 重复执行第2步,直到策略函数π(s)收敛。 策略迭代算法的收敛速度比值迭代慢一些,因为每次迭代只更新当前策略下的值函数,然后再根据新的值函数求出新的策略函数,所以需要多次迭代才能得到最优策略,但是在状态空间比较大的情况下,策略迭代的计算量会较小。 综上所述,值迭代策略迭代的收敛速度都受到很多因素的影响,具体哪个算法更快取决于具体的问题和环境。一般来说,在状态空间较小的情况下,值迭代收敛速度会更快;在状态空间较大的情况下,策略迭代的计算量会较小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值