Reinforcement Learning: An Introduction Second Edition - Chapter 4

4 Dynamic Programming

动态规划(Dynamic Programming,DP)是一类优化方法,给定一个MDP的完整模型,其可以计算最优策略。实际上,本书后面的方法,都是对DP的一种近似。

本章我们仍然假设环境是一个有限MDP。DP的思想不太适用于具有连续状态和动作的问题。

在强化学习中,DP的核心思想是使用价值函数来结构化地组织对最优策略地搜索。将贝尔曼方程转化为近似逼近理想价值函数的递归更新公式,我们就得到了DP算法。

4.1 Policy Evaluation (Prediction)

策略评估(或称预测问题):对于任意一个策略 π \pi π ,计算其状态价值函数。

迭代策略评估:使用迭代法,每一轮迭代的近似使用 v π v_{\pi} vπ 的贝尔曼方程进行更新。期望更新(full backups):使用期望值来更新;利用所有可能的单步转移后的期望收益和对应后继状态的旧价值函数来更新状态 s 的新的价值函数。迭代策略更新的每一轮迭代都更新一次所有状态的价值函数。可以使用回溯图来帮助理解。

就地更新的迭代策略评估算法。

练习 4.2 提示:解一元一次方程。

4.2 Policy Improvement

假设对于一个确定的策略 π \pi π ,我们已经确定了它的价值函数 v π v_{\pi} vπ 。一种更新策略的方法:在状态 s 选择动作 a 后,继续遵循现有策略。这是策略改进定理(the policy improvement theorem)的一个特例。

在一个状态中选择一个更好的动作 → \rightarrow 在每个状态下根据 q π ( s , a ) q_{\pi}(s,a) qπ(s,a) 选择一个最优动作。

策略改进:根据原策略的价值函数执行贪心算法,来构造一个更好的策略。

除非原策略即为最优策略,策略改进一定会给出一个更优的结果。

两种情况:确定性策略 π ( s ) \pi(s) π(s) 和随机策略 π ( a ∣ s ) \pi(a|s) π(as)

补充:在随机策略的情况下的策略改进定理。

随机策略的策略改进,仍然是根据原策略的价值函数执行贪心算法,参见例4.1;如果有多个动作都可以得到最大值,那么可以在这些动作中进行任意的概率分配(如果所有状态都将一个动作的概率设置为100%,则最终获得一个确定性策略)。

4.3 Policy Iteration

策略迭代:一种寻找最优策略的方法。由于一个有限MDP必然只有有限种策略,所以在有限次的迭代后,这种方法一定收敛到一个最优的策略与最优价值函数。

先对最先进的策略进行策略评估,需要基于前一个策略的价值函数进行计算(这通常会使得策略评估的收敛速度大大提高);然后根据新的价值函数进行策略改进。

策略迭代算法:

  1. Initialization
    V ( s ) ∈ R V(s) \in \mathbb{R} V(s)R and π ( s ) ∈ A ( s ) \pi(s) \in A(s) π(s)A(s) arbitrarily for all s ∈ S s \in S sS

  2. Policy Evaluation
    Repeat
        Δ ← 0 \Delta \leftarrow 0 Δ0
        For each s ∈ S s \in S sS:
            v ← V ( s ) v \leftarrow V(s) vV(s)
            V ( s ) ← ∑ s ′ , r p ( s ′ , r ∣ s , π ( s ) ) [ r + γ V ( s ′ ) ] V(s) \leftarrow \sum_{{s}',r} p({s}',r|s,\pi(s))[r + \gamma V({s}')] V(s)s,rp(s,rs,π(s))[r+γV(s)]
            Δ ← m a x ( Δ , ∣ v − V ( s ) ∣ ) \Delta \leftarrow max(\Delta,|v-V(s)|) Δmax(Δ,vV(s))
    until Δ < θ \Delta < \theta Δ<θ (a small positive number)

  3. Policy Improvement
    p o l i c y policy policy- s t a b l e ← t r u e stable \leftarrow true stabletrue
    For each s ∈ S s \in S sS:
        a ← π ( s ) a \leftarrow \pi(s) aπ(s)
        π ( s ) ← a r g m a x a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ V ( s ′ ) ] \pi(s) \leftarrow argmax_a \sum_{{s}',r} p({s}',r|s,a)[r + \gamma V({s}')] π(s)argmaxas,rp(s,rs,a)[r+γV(s)]
        If a ≠ π ( s ) a \neq \pi(s) a=π(s), then p o l i c y policy policy- s t a b l e ← f a l s e stable \leftarrow false stablefalse
    If p o l i c y policy policy- s t a b l e stable stable, then stop and return V V V and π \pi π; else go to 2

练习 4.4:

  1. Initialization
    V ( s ) ∈ R V(s) \in \mathbb{R} V(s)R and π ( s ) ∈ A ( s ) \pi(s) \in A(s) π(s)A(s) arbitrarily for all s ∈ S s \in S sS

  2. Policy Evaluation
    Repeat
        Δ ← 0 \Delta \leftarrow 0 Δ0
        For each s ∈ S s \in S sS:
            v ← V ( s ) v \leftarrow V(s) vV(s)
            V ( s ) ← ∑ s ′ , r p ( s ′ , r ∣ s , π ( s ) ) [ r + γ V ( s ′ ) ] V(s) \leftarrow \sum_{{s}',r} p({s}',r|s,\pi(s))[r + \gamma V({s}')] V(s)s,rp(s,rs,π(s))[r+γV(s)]
            Δ ← m a x ( Δ , ∣ v − V ( s ) ∣ ) \Delta \leftarrow max(\Delta,|v-V(s)|) Δmax(Δ,vV(s))
    until Δ < θ \Delta < \theta Δ<θ (a small positive number)
    If Δ = 0 \Delta = 0 Δ=0, then stop and return V V V and π \pi π.

  3. Policy Improvement
    p o l i c y policy policy- s t a b l e ← t r u e stable \leftarrow true stabletrue
    For each s ∈ S s \in S sS:
        a ← π ( s ) a \leftarrow \pi(s) aπ(s)
        π ( s ) ← a r g m a x a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ V ( s ′ ) ] \pi(s) \leftarrow argmax_a \sum_{{s}',r} p({s}',r|s,a)[r + \gamma V({s}')] π(s)argmaxas,rp(s,rs,a)[r+γV(s)]
        If a ≠ π ( s ) a \neq \pi(s) a=π(s), then p o l i c y policy policy- s t a b l e ← f a l s e stable \leftarrow false stablefalse
    If p o l i c y policy policy- s t a b l e stable stable, then stop and return V V V and π \pi π; else go to 2

练习 4.5:

  1. Initialization
    q ( s , a ) ∈ R q(s,a) \in \mathbb{R} q(s,a)R and π ( s ) ∈ A ( s ) \pi(s) \in A(s) π(s)A(s) arbitrarily for all s ∈ S s \in S sS, a ∈ A a \in A aA

  2. Policy Evaluation
    Repeat
        Δ ← 0 \Delta \leftarrow 0 Δ0
        For each s ∈ S s \in S sS and a ∈ A a \in A aA:
            Q ← q ( s , a ) Q \leftarrow q(s,a) Qq(s,a)
            q ( s , a ) ← ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ q ( s ′ , π ( s ′ ) ) ] q(s,a) \leftarrow \sum_{{s}',r} p({s}',r|s,a)[r + \gamma q({s}',\pi({s}'))] q(s,a)s,rp(s,rs,a)[r+γq(s,π(s))]
            Δ ← m a x ( Δ , ∣ Q − q ( s , a ) ∣ ) \Delta \leftarrow max(\Delta,|Q-q(s,a)|) Δmax(Δ,Qq(s,a))
    until Δ < θ \Delta < \theta Δ<θ (a small positive number)

  3. Policy Improvement
    p o l i c y policy policy- s t a b l e ← t r u e stable \leftarrow true stabletrue
    For each s ∈ S s \in S sS:
        a ← π ( s ) {a} \leftarrow \pi(s) aπ(s)
        π ( s ) ← a r g m a x a q ( s , a ) \pi(s) \leftarrow argmax_a q(s,a) π(s)argmaxaq(s,a)
        If a ≠ π ( s ) a \neq \pi(s) a=π(s), then p o l i c y policy policy- s t a b l e ← f a l s e stable \leftarrow false stablefalse
    If p o l i c y policy policy- s t a b l e stable stable, then stop and return V V V and π \pi π; else go to 2

练习 4.6:基于 ϵ \epsilon ϵ- s o f t soft soft 策略的策略迭代算法。根据书中的定义,策略改进仍需使用贪心策略进行。在选出最优动作后,为其余动作分配最低概率。
Step 3 Changes: 将最优动作赋予 π ( s ) \pi(s) π(s) 后,将 π ( s ) \pi(s) π(s) 转换为 π ( a ∣ s ) \pi(a|s) π(as)
Step 2 Changes: V ( s ) V(s) V(s) 应被赋予经过动作概率加权的期望值;
Step 1 Changes: π \pi π should be well defined as ϵ \epsilon ϵ- s o f t soft soft policy and ϵ \epsilon ϵ should be given.

注:epsilon-greedy 策略是 epsilon-soft 策略的一个特例。epsilon-soft 策略是指给定状态 s 中选择每个动作的概率至少为 ϵ / ∣ A ( s ) ∣ \epsilon /|A(s)| ϵ/∣A(s) 的任何策略,而 epsilon-greedy 策略直接将最小概率分配给了 A(s) 中最优动作以外的所有动作。

4.4 Value Iteration

提前截断(turncate)策略迭代中的策略评估过程,不需要等到完全收敛。

一种方法:在一次遍历后即刻停止策略评估(对每个状态进行一次更新)—— 价值迭代。这是截断策略迭代算法的一种重要的特殊情况。

可以将它视作一个结合了策略改进和截断策略评估的特别简单的回溯操作。

另一种理解:价值迭代仅仅是将最优贝尔曼方程变为一条更新规则。

可以将截断策略迭代算法看作一系列的遍历序列,其中某些进行策略评估更新,而另一些则进行价值迭代更新。

练习 4.8:理论上,当赌资为51时,下注49和下注1的动作价值函数是相同的。但是根据价值函数的迭代图可知,多次迭代后价值函数无限逼近最终价值函数但仍然有差距,并且赌资越低差距越明显。这导致下注1的动作价值要高于下注49,因此算法最终选择了下注1作为策略。

4.5 Asynchronous Dynamic Programming

前面的DP方法的缺点:需要遍历整个状态集。

Asynchronous DP algorithms:一类就地迭代的DP算法。它们可以选择任意可用的状态,以任意顺序进行更新。

异步价值迭代;异步截断的策略迭代。

避免遍历并不意味着计算量的减少。这只意味着,一个算法在改进策略前,不需要陷入任何漫长而无望的遍历。更新特定状态加快算法速度;调整更新顺序使价值信息有效传播。

异步算法使计算和实时交互的结合变得更加容易。对于给定的MDP问题,我们可以在一个智能体实际在MDP中进行真实交互的同时,执行迭代DP算法。其中智能体的经历用于确定DP算法要更新的状态;the latest value and policy information from the DP algorithm 用来指导智能体的决策。例如在智能体访问状态时将其更新。这使得DP算法的更新聚焦到与智能体最相关的部分状态,这种聚焦是强化学习中不断重复的主题。

4.6 Generalized Policy Iteration

策略迭代:策略评估(价值与策略一致) + 策略改进(贪心地更新策略),两个流程交替进行。这种规则并不是必须的,流程的循环可以在不同程度上进行。只要两个流程持续更新所有状态,最后都能收敛到最优价值函数和一个最优策略。

广义策略迭代(GPI):让策略评估和策略改进相互作用的一般思路。几乎所有的强化学习方法都可以被描述为GPI。如果评估流程和改进流程都不在产生变化,那么价值函数和策略必定是最优的。The evaluation and improvement processes in GPI can be viewed as both competing and cooperating. One might also think of the interaction between the evaluation and improvement processes in GPI in terms of two constraints or goals.

4.7 Efficiency of Dynamic Programming

DP算法并不适用于一些大规模问题,但是比很多解决MDP的其他方法的效率要高。对那些极大规模的问题,只用动态规划算法是可行的。

维度灾难:状态的总数量经常随着状态变量的增加而指数级上升。这是问题本身的问题,而非DP作为一种解法所带来的困难。

在实际运用中,DP算法的收敛速度常常比它们理论上的最坏情况要快,尤其是使用了好的初始价值函数或策略时。

异步DP算法通常被用来解决那些有很大状态空间的问题。

4.8 Summary

DP算法前提:给定马尔可夫决策过程完整信息。

GPI的主要思想:采用两个相互作用的流程围绕着近似策略和近似价值函数循环进行。在某些情况下,GPI可以被证明是收敛的,尤其是本章介绍的传统DP算法。在其他情况下,收敛性并不能被证明,但是广义策略迭代的思想仍然可以加深我们对这个方法的理解。

DP算法的一个特殊性质:所有方法都根据对后继状态价值的估计来更新对当前状态价值的估计,即它们基于其他估计来更新自己的估计————自举法(bootstrapping)。

Bibliographical and Historical Remarks

Bellman在1957年提出了术语“动态规划”和“维度灾难”。DP不仅可以解决MDP,还适用于其他类型的问题。

DP与强化学习之间的关系在1961年被首次提出。

你可能感兴趣的:(Reinforcement,Learning,人工智能,算法)