(四) 强化学习——动态规划(DP)

动态规划是一种优化方法,常用于解决具有最优解可分解为子问题最优解的问题。在马尔科夫决策过程中,动态规划通过贝尔曼方程进行预测和控制。策略迭代和价值迭代是动态规划在强化学习中的两种重要形式,分别用于策略评估和优化。然而,由于计算复杂性和环境模型的不完整性,实际的强化学习问题常采用近似方法,如异步动态规划,包括原位动态规划、优先级动态规划和实时动态编程。
摘要由CSDN通过智能技术生成

在开始之前,大家肯定会有个疑惑,什么是动态规划?动态规划和强化学习又有啥子关系。以前在学习动态规划的时候可没听说过强化学习,现在学习强化学习为什么要了解动态规划?

首先我们知道动态规划是一类优化方法。那我们遇到什么类型问题的时候用动态规划算法?动态规划算法把求解复杂问题分解为求解子问题,通过求解子问题进而得到整个问题的解。在解决子问题的时候,其结果通常需要存储起来被用来解决后续复杂问题。当问题具有下列两个性质时,通常可以考虑使用动态规划来求解:第一个性质是一个复杂问题的最优解由数个小问题的最优解构成,可以通过寻找子问题的最优解来得到复杂问题的最优解;第二个性质是子问题在复杂问题内重复出现,使得子问题的解可以被存储起来重复利用。我们会发现马尔科夫决策过程具有上述两个属性:贝尔曼方程把问题递归为求解子问题,价值函数相当于存储了一些子问题的解,可以复用。因此可以使用动态规划来求解马尔科夫决策过程。

到这里我们大概知道了他们的关系了。“规划”是在已知环境动力学(环境转移概率)的基础上进行评估和控制,具体来说就是在了解包括状态和行为空间、转移概率矩阵、奖励等信息的基础上判断一个给定策略的价值函数,或判断一个策略的优劣并最终找到最优的策略和最优价值函数。尽管多数强化学习问题并不会给出具体的环境动力学,并且多数复杂的强化学习问题无法通过动态规划算法来快速求解,但利用动态规划算法进行规划的同时将重点阐述一些非常重要的概念,例如预测和控制、策略迭代、价值迭代等非常重要。

简单总结一下,在给定一个用马尔科夫决策过程(MDP)描述的完备环境模型的情况下,其可以用DP的思想计算最优策略。但对于强化学习问题,传统的DP算法作用有限。其原因有二:一是完备的环境模型(环境转移概率是否可知)只是一个假设;二是他的计算复杂度极高。但是,它依然是一个非常重要的理论。DP提供了一个必要的基础。事实上,所有其他方法都是对DP的一种近似,只不过降低了复杂度以及减弱了对环境模型完备性的假设。

尽管DP的思想也可以用在具有连续状态和动作的问题上,但是只有在某些特殊情况下才会存在精确解。一种常见的近似方法是将连续的状态和动作量化为离散集合,然后再使用有限状态下的DP算法。在强化学习中,DP的核心思想是使用价值函数来结构化地组织对最优策略的搜索。通过将贝尔曼方程转化为近似逼近理想价值函数的递归更新公式,我们就得到了DP算法。

在介绍策略评估之前,我们先来了解预测和控制。预测和控制是规划的两个重要内容。预测是对给定策略的评估过程,控制是寻找一个最优策略的过程。对预测和控制的数学描述是这样:
预测 (prediction):已知一个马尔科夫决策过程 MDP ⟨S, A, P, R, γ⟩ 和一个策略 π,或者是给定一个马尔科夫奖励过程 MRP ⟨S, Pπ, Rπ, γ⟩,求解基于该策略的价值函数 vπ。
控制 (control):已知一个马尔科夫决策过程 MDP ⟨S, A, P, R, γ⟩,求解最优价值函数 v∗ 和最优策略 π∗。

策略评估

策略评估 (policy evaluation) 指计算给定策略下状态价值函数的过程。对策略评估,我们可以使用同步迭代联合动态规划的算法:从任意一个状态价值函数开始,依据给定的策略,结合贝尔曼期望方程、状态转移概率和奖励同步迭代更新状态价值函数,直至其收敛,得到该策略下最终的状态价值函数。
贝尔曼期望方程给出了如何根据状态转换关系中的后续状态 s′ 来计算当前状态 s 的价值,在同步迭代法中,我们使用上一个迭代周期 k 内的后续状态价值来计算更新当前迭代周期 k + 1内某状态 s 的价值:
在这里插入图片描述
我们来解读一下这个公式,有助于我们对于迭代过程的理解。对于状态s,我们有许多可执行的动作。π(a|s)表示每个动作执行的概率,是一个概率分布。R表示执行动作后的奖励,γ是折扣回报,我们在前边讲过,在执行某个动作后,后继状态也可能会有多过状态,P为状态转移概率。也是一个概率分布。我们可以对计算得到的新的状态价值函数再次进行迭代,直至状态函数收敛,也就是迭代计算得到每一个状态的新价值与原价值差别在一个很小的可接受范围内。
我们用一个小型方格例子来解释同步迭代法进行策略评估细节,如下图所示:
在这里插入图片描述
格子的每一格表示一个状态,一共有16个状态,其中0和15(图中黄色部分)为终止转态(不管任何动作下一个状态都是自己,且R=0)。在每一个状态都有上下左右四个动作,如果是在边缘部分。执行动作后要出界,执行该动作后,下一个状态仍在原位置不变。只有在终止状态执行任何动作R都是0,其余状态执行动作都会得到回报-1.为了计算方便,这里γ=1。采用均一概率的随机策略。下图为迭代k次数后的价值函数。
在这里插入图片描述
在k=0的时候。除了终止状态,其它状态价值都是0。k=1时,都是-1.我们可以通过上面提到的公式来计算。对于1这个位置的状态,有上下左右四个动作。采用的是均一策略,因此π(s|a)对于每个动作都是0.25,由于R=-,且下一个状态的价值都是0。所以状态价值函数为0.25*(-1)+0.25*(-1)+0.25*(-1)+0.25*(-1)=-1.同样,对于其他状态也是一样的分析。对于k=2。同样带入上面提到的公式。我们同样分析1状态这个位置。0.25*(-1)+0.25*(-1±1)+0.25*(-1±1)+0.25*(-1±1)=1.75.保留一位小数就是1.7.这里由于执行动作后下一个状态只有一个状态,故P=1。一直到价值函数收敛。

策略迭代

完成对一个策略的评估,将得到基于该策略下每一个状态的价值。很明显,不同状态对应的价值一般也不同,那么个体是否可以根据得到的价值状态来调整自己的行动策略呢,例如考虑一种如下的贪婪策略:个体在某个状态下选择的行为是其能够到达后续所有可能的状态中价值最大的那个状态。我们以均一随机策略下第 2 次迭代后产生的价值函数为例说明这个贪婪策略。
在这里插入图片描述
右侧是根据左侧各状态的价值绘制的贪婪策略方案。个体处在任何一个状态时,将比较所有后续可能的状态的价值,从中选择一个最大价值的状态,再选择能到达这一状态的行为;如果有多个状态价值相同且均比其他可能的后续状态价值大,那么个体则从这多个最价值的状态中随机选择一个对应的行为。在这个小型方格世界中,新的贪婪策略比之前的均一随机策略要优秀不少,至少在靠近终止状态的几个状态中,个体将有一个明确的行为,而不再是随机行为了。我们从均一随机策略下的价值函数中产生了新的更优秀的策略,这是一个策略改善的过程。
更一般的情况,当给定一个策略 π 时,可以得到基于该策略的价值函数 vπ,基于产生的价值函数可以得到一个贪婪策略 π′ = greedy(vπ)。依据新的策略 π′ 会得到一个新的价值函数,并产生新的贪婪策略,如此重复循环迭代将最终得到最优价值函数 v∗ 和最优策略 π∗。策略在循环迭代中得到更新改善的过程称为策略迭代(policy iteration)。下图直观地显示了策略迭代的过程。
在这里插入图片描述
从一个初始策略 π 和初始价值函数 V 开始,基于该策略进行完整的价值评估过程得到一个新的价值函数,随后依据新的价值函数得到新的贪婪策略,随后计算新的贪婪策略下的价值函数,整个过程反复进行,在这个循环过程中策略和价值函数均得到迭代更新,并最终收敛值最有价值函数和最优策略。除初始策略外,迭代中的策略均是依据价值函数的贪婪策略。

价值迭代

策略迭代算法的一个缺点是每一次迭代都涉及了策略评估,这本身就是一个需要多次遍历状态集合的迭代过程。如果策略评估是迭代进行的,那么收敛到vπ理论上在极限处才成立。我们是否必须等到其完全收敛,还是可以提早结束?事实上,有多种方式可以截断策略迭代中的策略评估步骤。一种重要的特殊情况是,在一次遍历后即刻停止策略评估(对每个状态进行一次更新)。该算法被称为价值迭代

策略迭代和价值迭代则属于控制问题,其中前者使用贝尔曼期望方程进行一定次数的价值迭代更新,随后在产生的价值函数基础上采取贪婪选择的策略改善方法形成新的策略,如此交替迭代不断的优化策略;价值迭代则不依赖任何策略,它使用贝尔曼最优方程直接对价值函数进行迭代更新。

异步动态规划

前文所述的系列算法均为同步动态规划算法,它表示所有的状态更新是同步的。与之对应的还有异步动态规划算法。在这些算法中,每一次迭代并不对所有状态的价值进行更新,而是依据一定的原则有选择性的更新部分状态的价值,这种算法能显著的节约计算资源,并且只要所有状态能够得到持续的被访问更新,那么也能确保算法收敛至最优解。比较常用的异步动态规划思想有:原位动态规划、优先级动态规划、和实时动态规划等。下文将简要叙述各类异步动态规划算法的特点。

原位动态规划 (in-place dynamic programming):与同步动态规划算法通常对状态价值保留一个额外备份不同,原位动态规划则直接利用当前状态的后续状态的价值来更新当前状态的价值。
优先级动态规划 (prioritised sweeping):该算法对每一个状态进行优先级分级,优先级越高的状态其状态价值优先得到更新。通常使用贝尔曼误差来评估状态的优先级,贝尔曼误差被表示为新状态价值与前次计算得到的状态价值差的绝对值。直观地说,如果一个状态价值在更新时变化特别大,那么该状态下次将得到较高的优先级再次更新。这种算法可以通过维护一个优先级队列来较轻松的实现。
实时动态规划 (real-time dynamic programming):实时动态规划直接使用个体与环境交互产生的实际经历来更新状态价值,对于那些个体实际经历过的状态进行价值更新。这样个体经常访问过的状态将得到较高频次的价值更新,而与个体关系不密切、个体较少访问到的状态其价值得到更新的机会就较少。

动态规划算法使用全宽度(full-width)的回溯机制来进行状态价值的更新,也就是说,无论是同步还是异步动态规划,在每一次回溯更新某一个状态的价值时,都要追溯到该状态的所有可能的后续状态,并结合已知的马尔科夫决策过程定义的状态转换矩阵和奖励来更新该状态的价值。这种全宽度的价值更新方式对于状态数在百万级别及以下的中等规模的马尔科夫决策问题还是比较有效的,但是当问题规模继续变大时,动态规划算法将会因贝尔曼维度灾难而无法使用,每一次的状态回溯更新都要消耗非常昂贵的计算资源。为此需要寻找其他有效的算法,这就是后文将要介绍的采样回溯。这类算法的一大特点是不需要知道马尔科夫决策过程的定义,也就是不需要了解状态转移概率矩阵以及奖励函数,而是使用采样产生的奖励和状态转移概率。这类算法通过采样避免了维度灾难,其回溯的计算时间消耗是常数级的。由于这类算法具有非常可观的优势,在解决大规模实际问题时得到了广泛的应用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值