本文转载自微信公众号 机器人学家,根据其上发布的CMU翻译讲义进行整理。

大纲

  • Exact solution methods:
    • Policy iteration
      • Policy Evaluation (a.k.a. DP)
      • Policy Improvement
    • Value iteration (a.k.a. DP)
    • Linear programming
  • Approximate solution methods:
    • Asynchronous DP

策略评估

  • 策略评估:对于给定的策略 <nobr> π </nobr>,计算状态价值函数 <nobr> vπ(s) </nobr>.
  • 状态价值函数 <nobr> vπ(s) </nobr>的定义: <nobr> vπ(s)=Eπ[Gt|St=s] </nobr>
  • 状态价值函数 <nobr> vπ(s) </nobr>的Bellman方程如下,是一个|S|元方程组,|S|为状态空间S的数量。
    <nobr> vπ(s)=aAπ(a|s)(Ras+γsSPassvπ(s)) </nobr>

从MDPs到MRPs

当我们固定一个策略时,MDP问题就变成了马尔科夫奖励过程(Markov Reward Process,下简写为MRP)
由前面提到的状态价值函数的Bellman方程,可以得到:
<nobr> vπ(s)=aAπ(a|s)Ras+γaAπ(a|s)sSPassvπ(s))=Rπs+γsSPπsvπ(s) </nobr>

矩阵形式

使用MRP,可以得到更加简洁的Bellman期望公式。如果有N个状态s,那么在策略评估的过程中,需要求解N个未知量(v(s)),有N个线性方程(每个状态有一个Bellman equation),这样可以得到一个N维线性系统,理论上可以直接求解。对这个N维线性系统可以得到如下的矩阵形式的表达。
<nobr> vπ=Rπ+γPπvπ </nobr>
其中v为向量表示的状态价值函数,向量中的每一个元素表示对应状态的价值。R为向量表示的即时收益的期望,
<nobr> Rπ(s)=aAπ(s|a)Ras </nobr>
<nobr> Pπ=aAπ(a|s)P(s|s,a) </nobr>
得到解析解如下:
<nobr> vπ=(IγPπ)1Rπ </nobr>
计算复杂度为 <nobr> O(N3) </nobr>

迭代法

迭代策略评估算法

策略评估算法 收敛性证明

一个有|S|个状态的MDP,其所有价值函数V(s)构成的向量可以看成|S|维向量空间V中的一个点。要说明收敛性,就要说明策略评估里的计算——贝尔曼 backup 会对该空间中的点带来怎样变化?
下面我们说明,它每次迭代都会使这些点离得更近
所以贝尔曼backup在无穷次迭代后必然收敛到唯一解

价值函数的无穷范数 <nobr> Norm </nobr>

我们可以用 <nobr> Norm </nobr>来度量状态-价值函数u和v
即,两个状态价值之间的距离。
<nobr> ||uv||=maxsS|u(s)v(s)| </nobr>

贝尔曼back up是收缩的

定义贝尔曼Back up操作子 <nobr> Tπ </nobr>
<nobr> Tπ(v)=Rπ+γPπv </nobr>
这个操作子是 <nobr> γ </nobr>-收缩,即它会使价值函数之间的距离至少缩小到原来的 <nobr> γ </nobr> <nobr> γ </nobr>是定义价值时的折扣系数,小于1:
<nobr> ||Tπ(u)Tπ(v)|| </nobr>= <nobr> ||(Rπ+γPπu)(Rπ+γPπv)||=||γPπ(uv)||||γPπ||uv||||γ||uv|| </nobr>

收缩映射定理

定理(收缩映射定理)
已知T是 <nobr> γ </nobr>收缩,对于操作T(v)下的任意完备(即闭合)的度量空间V,有:
T以线性收敛速率 <nobr> γ </nobr>收敛到唯一的固定点
(编者注:即策略评估一定会收敛到一个值

结论:迭代策略评估是收敛的

贝尔曼期望操作子 <nobr> Tπ </nobr>有唯一的固定点。(根据贝尔曼期望方程) <nobr> vπ </nobr> <nobr> Tπ </nobr>上的一个固定点,所以根据收缩映射定理,迭代策略评估收敛于 <nobr> vπ </nobr>

策略迭代

广义策略 迭代(GPI)

最优性原理

称策略 <nobr> π(a|s) </nobr>在状态s处获得最优值,即 <nobr> vπ(s)=v(s) </nobr>,当且仅当:

  • 对于从状态s可以到达任意的状态s’
  • 策略 <nobr> π </nobr>也在状态s’处获得最优值,即 <nobr> vπ(s)=v(s) </nobr>

值迭代

<nobr> Vk+1(s)=maxasT(s,a,s)[R(s,a,s)+γVk(s)] </nobr>
重复直到收敛
一次迭代的复杂度 <nobr> O(S2A) </nobr>
定理:会收敛到最优价值
策略可能先于状态价值很长时间收敛
不是就地更新
问题

  • 速度慢一次迭代时间复杂读 <nobr> O(S2A) </nobr>
  • 每个状态的max值很少变化
  • 策略往往先于状态价值很长时间收敛

策略迭代

  • 仍然是最优的
  • 在某些情况下收敛更快

对比

  • 值迭代
    • 每次迭代都更新了状态价值和(隐含地)策略
    • 不追踪策略,但是在对 <nobr> q(s,a) </nobr>取最大值的时候隐含地重新计算了它
  • 策略迭代
    • 在固定此策略下多次更新utlities(每一次都很快,因为只考虑了一个action,而不是所有的)
    • 策略被评估完后,选择一个新的策略(跟一次价值迭代一样慢)
    • 新的策略会更好
  • 都是解决MDPs的动态规划方法

总结

  • 如果想:
    • 计算最优价值:使用值迭代或策略迭代
    • 计算特定策略价值:使用策略评估
    • 将状态价值转化成一个策略:使用策略提取(one-step lookahead)
  • 这些看起来一样
    • 本质上都是Bellman uodates的变种
    • 都利用one-step looahead expectimax fragments
    • They differ only in whether we plug in a fixed policy or max over actions

异步动态规划

未完待续