欢迎加群:1012878218,一起学习、交流强化学习,里面会有关于深度学习、机器学习、强化学习的各种资料 。
术语动态规划(DP)指的是一组算法,可以用来计算最佳策略,给定一个作为马尔可夫决策过程(MDP)的完美环境模型。 经典的DP算法在强化学习中的作用有限,因为它们都假设了一个完美的模型,并且由于它们的计算耗费巨大,但它们在理论上仍然很重要。 DP为理解本书其余部分介绍的方法提供了必要的基础。 事实上,所有这些方法都可以被看作是试图达到与DP相同的效果,只需要较少的计算和无需假设完美的环境模型。
从本章开始,我们通常假定环境是有限的MDP。 也就是说,我们假设它的状态,行为和奖励集合S,A和R是有限的,并且它的动态是由一组概率p(s',r | s,a)给出的 s∈S,a∈A(s),r∈R,s'∈S+(如果是episodic问题,则S +是S加一个终端状态)。 虽然DP思想可以应用于连续状态和动作空间的问题,但只有在特殊情况下才可能有确切的解决方案。 获得具有连续状态和动作的任务的近似解决方案的常用方法是量化状态和动作空间,然后应用有限状态DP方法。 我们在第9章中探讨的方法适用于连续性问题,并且是该方法的重要扩展。
DP的关键思想和强化学习一般都是运用价值函数来组织和构建好的策略。 在本章中,我们将展示如何使用DP来计算第3章中定义的价值函数。如上所述,一旦我们找到满足Bellman最优性的最优值函数v *或q *,我们就可以很容易地获得最优策略公式:
对于所有的s∈S,a∈A(s)和s'∈S+。正如我们将看到的那样,DP算法是通过将诸如这些Bellman方程转变为更新规则用于提高期望的值函数的近似来获得。
4.1策略评估(预测)
首先我们考虑如何计算任意策略π的状态值函数vπ。 这在DP文献中被称为策略评估。 我们也把它称为预测问题。 回想第3章,对于所有s∈S,
其中π(a | s)是在策略π下在状态s中采取行动的概率,并且预期以π表示,表示它们以π被遵循为条件。 vπ的存在性和唯一性是被保证的, 只要γ < 1 或在政策π下,所有状态都会保证最终终止。
如果环境的动态是完全已知的,则(4.4)是一系列| S |的联立线性方程 未知数(vπ(s),s∈S)。 原则上,其解决方案是一个简单的计算。 就我们的目的而言,迭代求解方法是最合适的。 考虑一系列近似值函数v0,v1,v2,...。。 ,每个映射S +到R(实数)。 初始近似值v0是任意选择的(除了终端状态,如果有的话,必须给定值0),并且通过使用vπ(4.4)的Bellman方程作为更新规则获得每个逐次逼近:
对于所有的s∈S。显然,vk =vπ是这个更新规则的一个不动点,因为vπ的Bellman方程确保了我们在这种情况下的相等性。 事实上,序列{vk}通常可以在保证vπ存在的相同条件下收敛于vπ→k→∞。 这种算法被称为迭代策略评估。
为了从vk产生每个逐次逼近,vk + 1,迭代策略评估对每个状态应用相同的操作:它将s的旧值用从s的后继状态的旧值中获得的新值以及期望的立即奖励源自在评估的策略下可能的所有一步转换。我们称这种操作为期望更新。迭代策略评估的每次迭代都会更新每个状态的值,以产生新的近似值函数vk + 1。有几种不同类型的期望更新,取决于状态(如此处)或状态 - 动作对是否正在更新,并取决于组合后继状态的估计值的确切方式。在DP算法中完成的所有更新都称为期望更新,因为它们基于对所有可能的下一个状态的期望,而不是下一个状态的样本。更新的性质可以用上面的等式来表示,也可以像第3章中介绍的那样在备份图中表示。例如,与迭代策略评估中使用的期望更新相对应的备份图显示在第47页上。
要编写一个顺序计算机程序来实现(4.5)中给出的迭代策略评估,您将不得不使用两个数组,一个用于旧值,vk(s),另一个用于新值vk + 1(s)。对于两个数组,新值可以从旧值逐个计算,而不更改旧值。当然,使用一个数组并更新值“就地”更容易,也就是说,每个新值立即覆盖旧值。然后,根据状态更新的顺序,有时会在(4.5)的右侧使用新值而不是旧值。这个就地算法也收敛到vπ;事实上,正如您所期望的那样,它通常比双阵列版本更快地收敛,因为它在可用时尽快使用新数据。 我们认为更新是通过扫描状态空间完成的。对于就地算法,状态在扫描期间更新其值的顺序对收敛速度有显着影响。当我们考虑DP算法时,我们通常会考虑就地版本。
下面的框中使用伪代码显示了一个完整的迭代策略评估版本。 请注意它如何处理终止。 从形式上来说,迭代策略评估只能在极限内收敛,但实际上它必须在此之前停止。 伪代码测试数量max s∈S| vk + 1(s)-vk(s)| 在每次扫描之后,当它足够小时停止。
非终端状态是S = {1,2,..., 。 。 ,14}。在每个状态下有四种可能的行动,A = {上,下,右,左},它确定性地引起相应的状态转换,除了让代理离开网格的动作实际上保持状态不变。因此,例如,对于所有r∈P(6,-1 | 5,right)= 1,p(7,-1 | 7,right)= 1,并且p(10,r | 5,right)= 0 R.这是一个未贴现的,episodic的任务。在所有转换中奖励为-1,直到达到终端状态。图中的终端状态是阴影(尽管它显示在两个地方,它在形式上是一个状态)。因此,对于所有状态s,s'和行为a,预期的奖励函数是r(s,a,s')= -1。假设代理人遵循等概率的随机策略(所有行为的可能性相同)。图4.1左侧显示了通过迭代策略评估计算出的值函数序列{vk}。最终的估计实际上是vπ,在这种情况下给每个状态从该状态到终止的期望步数的否定。
图4.1:小型网格环境中迭代策略评估的收敛性。 左栏是随机策略的状态值函数的近似值序列(所有动作均等)。 右列是与价值函数估计相对应的贪婪策略的序列(箭头显示为达到最大值的所有操作)。 最后的策略只能保证随机策略的改进,但在这种情况下,以及第三次迭代后的所有策略都是最优策略。
4.2策略改进我们计算策略的价值函数的原因是帮助找到更好的策略。 假设我们已经确定了任意确定性策略π的值函数vπ。 对于某些状态而言,我们想知道是否应该改变策略,以便确定性地选择一个行为a!=π(s)。 我们知道遵循当前的策略有多好 - 即是vπ(s) - 但改变为新策略会好还是坏? 回答这个问题的一个方法是考虑选择一个s,然后遵循现有的策略π。 这种行为方式的价值在于
关键标准是这是否大于或小于vπ(s)。 如果它更大 - 也就是说,如果选择s中的一次,然后遵循π而不是一直遵循π,那么人们会认为每次遇到s时都会更好地选择它 ,而且新策略实际上总体上会更好。这是真实的,这是一个称为策略改进定理的普遍结果的特例。 令π和π'是任何一对确定性策略,使得对于所有s∈S,
qπ(s, π′(s)) ≥ vπ(s). (4.7)
那么策略π'必须和π一样好,或者更好。 也就是说,它必须获得更大或相等所有状态的预期收益s∈S:
vπ′ (s) ≥ vπ (s). (4.8)
此外,如果在任何状态下(4.7)存在严格的不等,那么至少在一个状态必须有严格的(4.8)不等。 这个结果特别适用于我们在前一段中考虑过的两个策略,一个原始确定性策略π和一个改变策略π',它与π相同,除了π'(s)= a!=π(S)。 显然,(4.7)在s以外的所有状态都成立。 因此,如果qπ(s,a)>vπ(s),那么改变的策略确实比π好。策略改进定理证明背后的想法很容易理解。 从(4.7)开始,我们继续用(4.6)扩展qπ并重新应用(4.7),直到得到vπ'(s):
到目前为止,我们已经看到,鉴于策略及其价值函数,我们可以轻松评估单一状态的策略变化对特定行动的影响。 考虑所有状态和所有可能行动的变化是一个自然延伸,根据qπ(s,a)在每个状态选择看起来最好的行动。 换句话说,要考虑新的贪婪政策,π',由
其中argmaxa表示随后表达式最大化的a的值(任意断开连接)。 根据vπ,贪婪策略采取在短期内看起来最好的行动 - 在向前看一步之后。 通过构建,贪婪策略符合策略改进定理(4.7)的条件,所以我们知道它与原始政策一样好,甚至更好。 制定一项改进原有策略的新策略的过程,通过使得原策略的值函数贪婪,被称为策略改进。假设新的贪婪策略π'与旧策略π一样好,但不会更好。 那么vπ=vπ',从(4.9)可以得出,对于所有的s∈S:
但这与Bellman最优性方程(4.1)相同,因此vπ'必须是v *,而π和π'必须是最优策略。 因此,策略改进必须给予我们一个更好的策略,除非原始策略已经达到最佳状态。到目前为止,在本节中,我们已经考虑了确定性策略的特例。 在一般情况下,随机策略π指定在每个状态s中采取每个动作a的概率π(a | s)。 我们不会详细讨论细节,但实际上本节的所有观点都可以轻易扩展到随机策略。 特别是,策略改进定理贯彻了随机策略的例子。 另外,如果在(4.9)这样的策略改进步骤中存在联系,即如果有多个行动达到最大值,那么在随机情况下,我们不需要从中选择一个行动。 相反,每一个最大化的行动都可以被赋予在新的贪婪策略中被选中的概率的一部分。 只要所有的次最大动作都被赋予零概率,任何分配方案都是允许的。图4.1的最后一行显示了随机策略策略改进的一个例子。 这里的原始策略π是等概率的随机策略,而新策略π'对于vπ是贪婪的。 值函数vπ显示在左下方的图中,可能的π'的集合显示在右下方的图中。 π'图中带有多个箭头的状态是几个动作在(4.9)中达到最大值的状态; 任何这些行为之间的概率分配都是允许的。 任何这样的策略的价值函数vπ'(s)可以通过检查在所有状态中被看作是-1,-2或-3,s∈S,而vπ(s)至多是-14。 因此,对于所有s∈S,vπ'(s)≥vπ(s),说明策略改进。 虽然在这种情况下,新策略π'恰好是最佳的,但通常只有一个改进得到保证。
4.3策略迭代一旦使用vπ来改进策略π以产生更好的策略π',我们就可以计算vπ'并再次改进以产生更好的π''。 因此,我们可以获得一系列单调改善策略和价值函数:
其中 E →表示策略评估, I →表示策略改进。 每项策略都保证对前一项策略进行严格改进(除非它已经是最佳选择)。 由于有限的MDP只有有限数量的策略,因此该过程必须在有限次数的迭代中收敛到最优策略和最优值函数。这种寻找最优策略的方法称为策略迭代。 一个完整的算法在下一页的框中给出。 请注意,每个策略评估本身都是一个迭代计算,开始于之前策略的值函数。这通常会导致策略评估收敛速度的大幅增加(可能是因为价值函数从一个策略到下一个策略的变化不大)。
策略迭代通常在几乎没有迭代的情况下收敛。 这由图4.1中的例子来说明。 左下图显示了等概率随机策略的值函数,右下图显示了该值函数的贪婪策略。 策略改进定理向我们保证,这些策略比原来的随机策略更好。 然而,在这种情况下,这些策略不仅仅是更好,而且是最优的,以最少的步骤进入终止状态。 在这个例子中,策略迭代只需要一次迭代即可找到最优策略。练习4.4本页给出的策略迭代算法存在一个微妙的错误,即如果策略在两个或多个同样好的策略之间不断切换,它可能永远不会终止。 这对教学是好的,但不适用于实际使用。 修改伪码,以保证收敛。
例4.2:杰克的租车杰克管理两个地点作为全国汽车租赁公司。每一天,一些客户到达每个地点租赁汽车。如果杰克有可用的汽车,他出租并由总公司贷记10美元。如果他在那个地方没有汽车,那么生意就失去了。在租赁返还后汽车可以再次被租用。为了确保汽车可以在需要的地方使用,杰克可以在一夜之间将它们在两个地点之间移动每辆车移动的成本为2美元。我们假设在每个地点租用和退还的汽车数量是泊松随机变量,这意味着数为n的概率是
,其中λ是车数量的期望。假设第一和第二地点的汽车租赁请求数量的λ是3和4,退还车辆的数量的λ 是3和2。 为了简化这个问题,我们假设每个地点不能有超过20辆汽车(任何额外的汽车都会返回到总公司,因此从问题中消失),并且最多可以从一个地点移动五辆汽车 在一个晚上给另一个。 我们将贴现率设为γ= 0.9,并将其表述为持续有限MDP,其中时间步骤为天,状态为一天结束时每个位置的汽车数量,动作为在两个地点之间移动汽车净数。
图4.2:杰克汽车租赁问题策略迭代发现的策略顺序,以及最终的状态值函数。 前五幅图显示,在一天结束时,每个位置的每辆汽车的数量,从第一位置移动到第二位置的汽车数量(负数表示从第二位置转移到第一位置)。
连续的策略是对以前的策略的严格改进,最后的策略是最优的。策略迭代发现的策略顺序始于从不移动任何汽车的策略。
练习4.5(编程)编写一个策略迭代程序,并重新解决Jack的汽车租赁问题,并进行以下更改。 杰克在第一个地点的员工之一每晚都乘坐巴士回家,住在第二个地点附近。 她很乐意将一辆车免费送到第二个地点。 每增加一辆汽车仍然需要2美元,所有汽车都向另一个方向移动。 此外,杰克每个地点的停车位都有限。 如果在一个地点(在任何车辆移动之后)保持超过10辆汽车过夜,那么使用第二个停车场必须发生4美元的额外成本(独立于在那里停留的汽车数量)。 这些非线性和任意动态性经常发生在实际问题中,并且除了动态规划之外不能通过优化方法轻易处理。 要检查你的程序,首先复制给出的原始问题的结果。 如果您的电脑对于完整问题太慢,请将所有车辆数量减半。
练习4.6如何为动作值定义策略迭代? 给出一个计算q *的完整算法,类似于第63页上的计算v *。 请特别注意这个练习,因为所涉及的思想将在本书的其余部分中使用。练习4.7假设你仅限于考虑ε-soft的策略,这意味着在每个状态中选择每个动作的概率s至少为ε/ | A(s)|。 定性描述v *(第63页)的策略迭代算法的步骤3,步骤2和步骤1中的每个步骤所需的更改。
练习4.7假设你仅限于考虑ε-soft的策略,这意味着在每个状态中选择每个动作的概率s至少为ε/ ||A(s)|。 定性描述v *(第63页)的策略迭代算法的步骤3,步骤2和步骤1中的每个步骤所需的更改。 4.4 价值迭代
策略迭代的一个缺点是每个迭代都涉及策略评估,这本身可能是需要通过进行多次扫描状态集的持久迭代计算。 如果策略评估是迭代完成的,那么收敛到vπ只发生在极限内。 我们是否必须等待精确的收敛,或者我们能否阻止这种收敛? 图4.1中的例子当然表明可能会截断策略评估。 在这个例子中,超过前三个的策略评估迭代对相应的贪婪策略没有影响。
事实上,策略迭代的策略评估步骤可以通过多种方式进行截断,而不会丢失策略迭代的收敛保证。 一个重要的特例是在一次扫描后(每个状态更新一次)策略评估停止。 这个算法被称为值迭代。 它可以写成一个特别简单的更新操作,它结合了策略改进和截断策略评估步骤:
对于所有的s∈ S 。
对于任意的v0,在保证v*存在的相同条件下,{vk}序列可以收敛于v*。
理解值迭代的另一种方法是参考Bellman最优性方程(4.1)。 请注意,只需将Bellman最优方程转换为一个更新规则即可获得值迭代。 另请注意,值迭代更新与策略评估更新(4.5)是如何一致的,除了它需要最大限度地接管所有操作。 看到这种密切关系的另一种方式是比较第47页(策略评估)和图3.4(值迭代)左侧的这些算法的备份图表。 这两个是计算vπ和v *的自然备份操作。
最后,让我们考虑价值迭代如何终止。 像策略评估一样,价值迭代要求无限次数的迭代精确地收敛到v *。 在实践中,一旦价值函数在扫描中只有少量变化,我们就会停止。 该框显示了具有这种终止条件的完整算法。
值迭代在每次扫描中有效地结合了一次策略评估和一次策略改进。 通过在每次策略改进扫描之间插入多次策略评估扫描,通常可以实现更快的收敛。 一般而言,整个类别的截断策略迭代算法可以被认为是扫描序列,其中一些使用策略评估更新,其中一些使用值迭代更新。 由于(4.10)中的最大行动是这些更新之间的唯一区别,这就表示最大行动被添加到策略评估的一些扫描中。 所有这些算法收敛到贴现有限MDP的最优策略。
例4.3:赌徒的问题一个赌徒有机会赌注一系列硬币翻转的结果。如果硬币出现正面,他就会赢得基于他下的注的尽可能多的美元。如果是反面,他会失去他的筹码。赌徒达到100美元的目标而获胜,或因耗尽资金而失败,此时游戏结束。在每一次翻转中,赌徒必须决定他的投入多少资本,以整数美元为单位。这个问题可以表述为一个未贴现的,episodic,有限的MDP。状态是赌徒的资本,s∈{1,2,...。。。 ,99},动作是下注,a∈{0,1,...。。。 ,min(s,100-s)}。
除了赌徒达到目标时的奖励时+1,所有其他转换奖励都为零。 状态值函数然后给出从每个状态获胜的概率。一个策略是从资本水平到下注的映射。 最优策略最大限度地提高了达成目标的可能性。 让ph表示硬币出现正面的概率。 如果ph是已知的,那么整个问题是已知的,并且可以通过例如值迭代来解决。 图4.3显示了值迭代的连续扫描中值函数的变化,以及发现的最终策略是ph = 0.4的情况。 这项政策是最佳的,但不是唯一的。 事实上,有一整套最优策略,都对应于最优值函数关于最大化动作选择的关系。 你能猜到整个策略族的样子吗?
图4.3:对于ph = 0.4的赌徒问题的解决方案。 上图显示了通过连续扫描值迭代发现的值函数。 下图显示了最终策略。
练习4.8为什么赌徒问题的最优策略有这样一个好奇的形式? 特别是,对于50的资本,它全部投注,但对于51的资本它不投资。这是一个好的策略吗?
练习4.9(编程)为赌徒的问题实现值迭代,并解决ph = 0.25和ph = 0.55的问题。 在编程时,可能会发现引入两个对应资本0和100的终止的虚拟状态非常方便,分别给它们赋值0和1。 以图形方式显示您的结果,如图4.3所示。 你的结果是稳定的θ→0?
练习4.10 对于动作值qk + 1(s,a)与值迭代相似的更新(4.10)是什么?
4.5异步动态编程
到目前为止我们讨论过的DP方法的一个主要缺点是它们涉及对整个MDP状态集的操作,也就是说它们需要扫描状态集。 如果状态集非常大,那么即使是单个扫描也可能过于昂贵。 例如,西洋双陆棋游戏已超过1020个状态。 即使我们可以每秒钟执行一百万个状态的值迭代更新,也需要花费一千年时间才能完成一次扫描。
异步DP算法是就地迭代DP算法,它没有按照系统性地扫描状态集来组织。 这些算法以任何顺序更新状态值,使用任何其他状态的值都可用。 某些状态的值可能会在其他值更新一次之前更新多次。 然而,要正确收敛,异步算法必须继续更新所有状态的值:在计算中的某点之后,它不能忽略任何状态。 异步DP算法在选择更新状态时具有很大的灵活性。
例如,异步值迭代的一个版本是使用值迭代更新(4.10)在每个步骤k上仅更新一个状态Sk的值。如果0≤γ<1,只要所有状态出现在序列{sk}中无限次(该序列甚至可以是随机的),就可以保证对v *的渐近收敛。(在未贴现地episodic 案例中,有可能存在一些不会导致收敛的更新排序,但避免这些更新相对容易)。同样,可以混合策略评估和值迭代更新以产生一种异步截断策略迭代。 虽然这个以及其他更加不同寻常的DP算法的细节超出了本书的范围,但很明显,几种不同的更新形成了可以在各种各样的无干扰DP算法中灵活使用的构建模块。
当然,避免扫描并不一定意味着我们可以获得更少的计算。 这只是意味着算法不需要被锁定在任何无望的长时间扫描中,然后才能够改进策略。我们可以尝试利用选择哪些状态来更新的这种灵活性,从而提高算法的进度。 我们可以尝试对更新进行排序,让价值信息以有效率的方式从一个状态传播到另一个状态。 一些状态可能不需要像其他更新的一样经常更新其值。 如果它们与最佳行为无关,我们甚至可能会尝试跳过更新某些状态。 第8章讨论了这样做的一些想法。
异步算法也使计算与实时交互的混合变得更加容易。 为了解决给定的MDP,我们可以在代理实际遇到MDP的同时运行迭代DP算法。
代理的经验可用于确定DP算法对哪个状态执行更新。 同时,来自DP算法的最新价值和策略信息可以指导代理的决策。 例如,我们可以在代理访问它们时执行状态的更新。 这使得将DP算法的更新集中在与代理最相关的状态集的部分成为可能。 这种聚焦是强化学习中重复的主题。
4.6广义策略迭代
策略迭代由两个同时的交互过程组成,一个使价值函数与当前策略一致(策略评估),另一个使策略对于当前价值函数(策略改进)是贪婪的。 在策略迭代中,这两个过程是交替的,每个过程在另一个过程开始之前完成,但这并不是必须的。 例如,在价值迭代中,每次策略改进之间只执行一次策略评估迭代。 在异步DP方法中,评估和改进过程以更细粒度交织。 在某些情况下,单个状态会在一个进程中更新,然后再返回到另一个进程。 只要两个过程都继续更新所有状态,最终结果通常与最优值函数和最优策略相同。
我们使用术语广义策略迭代(GPI)来指代让策略评估和策略改进过程相互作用的总体思路,而与两个过程的粒度和其他细节无关。几乎所有的强化学习方法都被很好地描述为GPI。 也就是说,所有都有可识别的策略和价值函数,就价值函数而言,策略总是得到改进,价值函数始终被推向策略的价值函数,如右图所示。 很容易看出,如果评估过程和改进过程都稳定下来,即不再产生变化,那么价值函数策略必须是最优的。 只有当价值函数符合现行策略时,价值函数才会稳定下来,只有当它对当前价值函数贪婪时,策略才会稳定下来。 因此,只有当对自己的评估函数是贪婪的策略被发现时,这两个过程才会趋于稳定。 这意味着贝尔曼最优性方程(4.1)成立,因此策略和价值函数是最优的。
GPI中的评估和改进过程可以被视为两者竞争和合作。 他们在相反的方向上竞争。 使价值函数相关的策略贪婪通常会使更改过的策略的值函数不正确,并且使值函数与策略保持一致通常会导致该策略不再是贪婪的。 然而,从长远来看,这两个过程相互作用以找到一个联合解决方案:最优价值函数和最优策略。
人们也可以根据两个约束或目标来考虑GPI中评估和改进过程之间的相互作用 - 例如,如右图所示的二维空间中的两条线。
虽然真实的几何比这复杂得多,但图表表明了真实情况下会发生什么。每个过程都将价值函数或策略驱动到代表两个目标之一的解决方案的线之一。目标相互作用,因为两者 线不正交。 直接朝着一个目标行驶会导致一些远离另一个目标的移动。 然而,不可避免的是,这个联合程序更接近最优化的总体目标。该图中的箭头对应于策略迭代的行为,每个策略都将系统完全用于实现两个目标中的一个。 在GPI中,每个目标也可以采取更小,不完整的步骤。 在任何一种情况下,这两个过程一起实现了最优化的总体目标,即使两个过程都没有试图直接实现它。
4.7动态规划的效率
DP对于非常大的问题可能并不实用,但与其他解决MDP的方法相比,DP方法实际上非常有效。如果我们忽略一些技术细节,那么DP方法用于查找最优策略的(最坏情况)时间是状态和动作数量的多项式。如果n和k表示状态和动作的数量,这意味着DP方法需要一些小于n和k的某个多项式函数的计算操作。 DP方法保证在多项式时间内找到最优策略,即使(确定性)策略的总数是k的n次方。从这个意义上说,DP比指定的任何策略空间直接搜索都要快,因为直接搜索必须详尽地检查每个策略以提供相同的保证。线性规划方法也可以用来求解MDP,并且在某些情况下,它们的最坏情况收敛保证比DP方法更好。但是,与DP方法相比,线性规划方法在少得多的状态下变得不切实际(减少约100倍)。对于最大的问题,只有DP方法是可行的。
由于维度的诅咒,DP有时被认为具有有限的适用性,事实上状态的数量通常随着状态变量的数量呈指数增长。 大的状态集确实会造成困难,但这是问题的固有困难,而不是DP作为解决方法。 实际上,与直接搜索和线性编程等竞争方法相比,DP相对更适合处理大型状态空间。
在实践中,DP方法可以用于当今的计算机来解决具有数百万个状态的MDP。 策略迭代和值迭代都被广泛使用,并且不清楚哪一个更好。 在实践中,这些方法的收敛速度通常比其理论最坏情况下的运行时间要快得多,特别是如果它们是从具有良好的初始价值函数或策略开始的话。
在状态空间较大的问题上,异步DP方法通常是首选。 要完成同步方法的扫描甚至需要每个状态的计算和存储。 对于一些问题,即使这么多的记忆和计算是不切实际的,但问题仍然是可以解决的,因为相对较少的状态沿着最优解方案轨迹出现。 在这种情况下,可以应用异步方法和GPI的其他变体,并且可能会比同步方法更快地找到优化策略或最优策略。
4.8总结
在本章中,我们已经熟悉动态规划的基本思想和算法,因为它们涉及到解决有限MDP。 策略评估指的是对于给定策略的值函数的(通常)迭代计算。 策略改进是指根据该策略的价值功能计算改进的策略。 将这两个计算放在一起,我们获得策略迭代和值迭代,这两种最流行的DP方法。 在MDP完全了解的情况下,这两种方法均可用于可靠地计算有限MDP的最优策略和价值函数。
通过将它们视为广义策略迭代(GPI),可以获得对DP方法的洞察,实际上可以深入到几乎所有的强化学习方法中。 GPI是围绕近似政策和近似价值函数的两个相互作用过程的总体思路。一个过程对给定策略执行某种形式的策略评估,将价值函数更改为更像该策略的真正价值函数。另一个过程将给定的价值函数执行某种形式的策略改进,改变策略使其更好,假设价值函数是其价值函数。尽管每个过程都会改变另一个过程的基础,但总体而言,它们一起工作以找到一个联合解决方案:一个策略和价值函数,这两个过程都不会改变,因此是最优的。在某些情况下,GPI可以证明是收敛的,最显着的是我们在本章中介绍的经典DP方法。在其他情况下,收敛尚未得到证实,但GPI的想法仍然提高了我们对这些方法的理解。
设置执行DP方法完整扫描状态集是不需要。 异步DP方法是就地迭代方法,以任意顺序更新状态,可能随机确定并使用过时的信息。 许多这些方法可以被看作GPI的细粒度形式。
最后,我们注意到DP方法的最后一个特殊属性。 他们都根据对后继状态值的估计更新了状态值的估计值。 也就是说,他们根据其他估计更新了估计。 我们把这个总体想法称为bootstrapping。 许多强化学习方法执行bootstrapping,即使是那些不需要的强化学习方法,如DP所要求的那样,也是一个完整而准确的环境模型。 在下一章中,我们将探讨不需要模型且不需要bootstrap的强化学习方法。 在这之后的章节中,我们将探索不需要模型但需要bootstrap的方法。 这些关键功能和属性是可分离的,但可以混合在有趣的组合中。