diff --git a/source/partI/chapter4/dynamic_programming.rst b/source/partI/chapter4/dynamic_programming.rst index 5f546d4..a5ea96f 100644 --- a/source/partI/chapter4/dynamic_programming.rst +++ b/source/partI/chapter4/dynamic_programming.rst @@ -558,24 +558,69 @@ DP有时候被认为应用有限,因为 *维数灾难* ,状态的数量随 4.8 总结 ----------- -在这一章节中我们熟悉了动态规划的基本思想和算法,可以用来解决MDPs。 *策略评估* 指的是(通常)迭代计算一个给定策略的值函数。 *策略提升* 指的是给定一个策略的值函数计算一个提升的策略。将这两种计算放在一起,就会得到策略迭代和值迭代,这两个最流行的DP方法。给定MDP的全部信息任何一个都可以用来可靠的计算有限MDPs的最优策略和值函数。 -经典的DP方法在状态集中进行更新,对每个状态进行完全回溯操作。基于所有可能被选取的状态和他们出现的可能性,每次回溯更新一个状态的值。完全回溯更新与贝尔曼方程紧密相关:他们更像是这些状态转变为分配状态。当回溯值不再变化,已经收敛到了满足相应贝尔曼方程的值。 *回溯图* 给出了一种回溯更新操作的直观看法。 -深入DP方法,应该是几乎所有增强学习的方法,可以将他们看作是 *广义策略迭代* (GPI)。GPI是一个关于两个交互过程围绕一个近似策略和一个近似值函数的一般的思想。一个过程使用给定的策略进行某种策略评估,使值函数更加趋近这个策略的真实值函数。另外一个过程在假定当前值函数是它的真实值函数并且使用给定的值函数进行某种策略提升,使得策略更好。虽然每个过程改变另外一个的基础,整个过程中他们一起合作找到一个联合的解:一个不会再被两个过程改变的策略和值函数,并且是最优的。在某些情形中,GPI已经被证明收敛,特别是我们之前在本章提及的经典DP方法。在其他情形中,收敛性还没有被证明,但是GPI的思想依旧帮助我们理解这些方法。 -DP方法在整个状态集中进行更新并没有必要。 *异步* DP方法是用任意顺序进行回溯的就地迭代方法,或许随机确定并且使用过时的信息。很多这些方法可以被看作是更加精细的GPI。 -最后,我们说明DP方法的最后一条特殊性质。所有这些方法基于对被选中状态的估计来更新状态值的估计。我们把这种广义的思想叫做 *自助法* 。许多增强学习的方法都会用到自助法,即使那些不像DP方法需要完全准确的环境模型的方法。下一章我们探索不需要模型但是进行自助的方法。这些关键特征和特性是分开的,当然可以以一种有趣的方式来混合。 - -##文献和历史 -“动态规划”这个词可以追溯到贝尔曼(1957a),他展示了这个方法可以被用到很多问题中。在很多教材中都有对于DP的扩充,包括 -Bertsekas(2005,2012),Bertsekas和Tsitsiklis(1996),Dreyfus和Law(1977),Ross(1983),White(1969),还有Whittle(1982,1983)。我们对于DP的兴趣仅限于用它来解决MDPs,但是DP也可以用在其他类型的问题中。Kumar和Kanal(1988)提出了一种更加一般的看法。 -据我们所知,第一次将DP和增强学习联系起来的是Minsky(1961)在Samuel的跳棋手问题中给出的。在一个脚注中,Minsky提到可以将DP应用在Samuel的回溯过程可以以近似分析的形式处理的问题中。这个批注可能误导了人工智能学者使他们认为DP只能严格用在可以理论分析的问题中,因此与人工智能大不相干。Andreae(1969b)在增强学习中提到DP,尤其是策略迭代,虽然他并没有给出DP和学习算法之间的特殊联系。Werbos(1977)建议一种近似DP的方法叫做“启发式动态规划”,这种方法强调在连续状态空间问题上应用梯度下降方法(Werbos,1982,1987,1988,1989,1992)。这些方法与我们在本书中讨论的增强学习算法很相近,刻画了一类增强学习方法叫做“递增的动态规划”。 - -**4.1-4** -这些章节很好的建立了DP算法,这些算法在上述的引用中都被提及。策略提升理论和策略迭代算法起源于Bellman(1957a)和Howard(1960)。策略提升受到Watkins(1989)看法的影响。我们的对于作为一个截短的策略迭代的值迭代的讨论是基于Puterman和Shin(1978)的看法,他们提出了一类算法叫做 *修正的策略迭代* ,策略迭代和值迭代是其中的特例。Bertsekas(1987)给出了如何在有限的时间内用值迭代找到一个最优策略的理论分析。 -迭代策略评估是经典的用来解决一系列的线性方程的成功近似算法的一个例子。一个版本的算法用两个数组,一个用来记录旧的值,另一个用来更新,在雅克比用过这个经典方法之后被叫做 *雅克比式* 算法。有时也被叫做同步算法因为可以并行执行,从其他进程得到输入,不同的进程同步更新每个状态的值。第二个数组用来有序地模拟这个并行计算。在用来解决一系列的线性方程的高斯-赛德尔算法之后就地更新版本算法被叫做 *高斯-赛德尔-形式* 算法。除了迭代策略评估,其他DP算法可以用这些不同的版本实现。Bertsekas和Tsitsiklis(1989)给出了这些变种可以很好的收敛,并且给出了他们性能的不同之处。 - -**4.5** -异步DP算法起源于Bersekas(1982,1983),他起名为分布式DP算法。异步DP算法的最初动机是在不同进程之间存在通讯延迟并且没有全局同步时钟的多进程系统之间实现时提出的。这些算法被Bertsekas和Tsitsiklis(1989)进行了扩充。雅克比-形式和高斯-赛德尔-形式DP算法是异步版本的一个特例。Williams和Baird(1990)提出了一种更加细化的异步DP算法,我们之前已经讨论过:回溯操作本身被分解为多步,可以异步进行。 - -**4.7** 这一章节,与Michael -Littman合作完成,并且基于Littman,Dean,和Kaelbling(1995)。短语“维数灾难”起源于Bellman(1957)。 +在这一章节中我们熟悉了动态规划的基本思想和算法,它可以用来解决有限MDP。 +*策略评估* 指的是(通常)迭代计算一个给定策略的价值函数。*策略提升* 指的是给定一个策略的价值函数计算一个提升的策略。 +将这两种计算放在一起,就会得到策略迭代和价值迭代这两个最流行的DP方法。 +在完全了解MDP的情况下,任何一个都能可靠地计算有限MDP的最优策略和价值函数。 + +经典的DP方法在状态集中进行更新,对每个状态进行 *完全回溯* 操作。 +基于所有可能被选取的状态和他们出现的可能性,每次回溯更新一个状态的价值。 +完全回溯更新与贝尔曼方程紧密相关:他们更像是这些状态转变为分配状态。 +当回溯价值不再变化,满足相应贝尔曼方程的价值已经收敛。 +正如有四个主要值函数(:math:`v_\pi`,:math:`v_*`,:math:`q_\pi` 和 :math:`q_*`)一样, +有四个相应的贝尔曼方方程和四个相应的完全回溯。 +*回溯图* 给出了一种DP回溯操作的直观看法。 + +深入DP方法,应该是几乎所有强化学习的方法,可以将他们看作是 *广义策略迭代* (GPI)。 +GPI是一个关于两个交互过程围绕一个近似策略和一个近似价值函数的一般的思想。 +一个过程使用给定的策略进行某种策略评估,使价值函数更加趋近这个策略的真实价值函数。 +另外一个过程在假定当前价值函数是它的真实价值函数并使用给定的价值函数进行某种策略提升,使得策略更好。 +虽然每个过程改变另外一个过程的基础,但总体而言,他们一起合作找到一个联合的解: +一个策略和价值函数,并且它们不受两个过程的影响,并且是最优的。 +在某些情形中,GPI已经被证明收敛,特别是我们之前在本章提及的经典DP方法。 +在其他情形中,收敛性还没有被证明,但是GPI的思想依旧帮助我们理解这些方法。 + +DP方法在整个状态集中进行更新并没有必要。 +*异步* DP方法是用任意顺序进行回溯的就地迭代方法,可能是随机确定的并且使用过时的信息。 +很多这些方法可以被看作是更加细粒度的GPI。 + +最后,我们说明DP方法的最后一条特殊性质。所有这些方法基于对后继状态价值的估计来更新状态价值的估计。 +也就是说,他们根据其他估计更新估计数。我们把这种广义的思想叫做 *自助法*。 +许多强化学习的方法都会用到自助法,即使那些不像DP方法需要完全准确的环境模型的方法。 +下一章我们探索不需要模型但是进行自助的方法。这些关键特征和特性是分离的,当然可以以一种有趣的方式来混合。 + + +书目和历史评论 +-------------- +“动态规划”这个词可以追溯到贝尔曼(1957a),他展示了这个方法可以被用到很多问题中。 +在很多教材中都有对于DP的扩充,包括Bertsekas(2005,2012),Bertsekas和Tsitsiklis(1996), +Dreyfus和Law(1977),Ross(1983),White(1969),还有Whittle(1982,1983)。 +我们对于DP的兴趣仅限于用它来解决MDPs,但是DP也可以用在其他类型的问题中。Kumar和Kanal(1988)提出了一种更加一般的看法。 + +据我们所知,第一次将DP和强化学习联系起来的是Minsky(1961)在Samuel的跳棋手问题中给出的。 +在一个脚注中,Minsky提到可以将DP应用在Samuel的回溯过程可以以近似分析的形式处理的问题中。 +这个批注可能误导了人工智能学者使他们认为DP只能严格用在可以理论分析的问题中,因此与人工智能大不相干。 +Andreae(1969b)在强化学习中提到DP,尤其是策略迭代,虽然他并没有给出DP和学习算法之间的特殊联系。 +Werbos(1977)建议一种近似DP的方法叫做“启发式动态规划”,这种方法强调在连续状态空间问题上应用梯度下降方法(Werbos,1982,1987,1988,1989,1992)。 +这些方法与我们在本书中讨论的强化学习算法很相近,刻画了这一类强化学习方法叫做“递增的动态规划”。 + +**4.1-4** 这些章节很好的建立了DP算法,这些算法在上述的引用中都被提及。 +策略提升理论和策略迭代算法起源于Bellman(1957a)和Howard(1960)。策略提升受到Watkins(1989)看法的影响。 +我们的对于作为一个截断的策略迭代的价值迭代的讨论是基于Puterman和Shin(1978)的看法, +他们提出了一类算法叫做 *修正的策略迭代* ,策略迭代和价值迭代是其中的特例。 +Bertsekas(1987)给出了如何在有限的时间内用价值迭代找到一个最优策略的理论分析。 + +迭代策略评估是经典的用来解决一系列的线性方程的成功近似算法的一个例子。 +一个版本的算法用两个数组,一个用来记录旧的值,另一个用来更新,在雅克比用过这个经典方法之后被叫做 *雅克比式* 算法。 +有时也被叫做 *同步* 算法因为可以并行执行,从其他进程得到输入,不同的进程同步更新每个状态的值。 +第二个数组用来有序地模拟这个并行计算。在用来解决一系列的线性方程的高斯-赛德尔算法之后就地更新版本算法被叫做 *高斯-赛德尔-形式* 算法。 +除了迭代策略评估,其他DP算法可以用这些不同的版本实现。Bertsekas和Tsitsiklis(1989)给出了这些变种可以很好的收敛,并且给出了他们性能的不同之处。 + +**4.5** 异步DP算法起源于Bersekas(1982,1983),他起名为分布式DP算法。 +异步DP算法的最初动机是在不同进程之间存在通讯延迟并且没有全局同步时钟的多进程系统之间实现时提出的。 +这些算法被Bertsekas和Tsitsiklis(1989)进行了扩充。雅克比-形式和高斯-赛德尔-形式DP算法是异步版本的一个特例。 +Williams和Baird(1990)提出了一种更加细化的异步DP算法,我们之前已经讨论过:回溯操作本身被分解为多步,可以异步进行。 + +**4.7** 这一章节,与Michael Littman合作完成,并且基于Littman,Dean,和Kaelbling(1995)。 +短语“维数灾难”起源于Bellman(1957)。