《Reinforcement Learning: An Introduction》第4章笔记

news2024/11/18 13:53:16

Chapter 4 Dynamic Programming

动态规划(Dynamic Programming,DP)是一类在给定完备环境模型的MDP后用来计算最优策略的算法。动态规划算法在强化学习中因为:1. 假设有一个完美的环境模型;2. 极大的计算代价 实际用处不大,但是它提供了理解本书其他算法的重要基础。

假设环境是第3章定义过的有限MDP, 也就是环境的状态 S \mathcal{S} S、动作 A \mathcal{A} A、奖励 R \mathcal{R} R是有限的,对于所有的 s ∈ S , r ∈ R , a ∈ A ( s ) ,且 s ′ ∈ S + s \in \mathcal{S}, r\in \mathcal{R}, a \in \mathcal{A}(s),且s^{\prime} \in \mathcal{S^+} sS,rR,aA(s),且sS+ ,MDP的动态性由一系列概率 p ( s ′ , r ∣ s , a ) p(s^{\prime}, r | s, a) p(s,rs,a)表示。

DP的核心思想是使用价值函数来组织和结构化对于好的策略的搜索。当我们已经得到满足以下Bellman最优方程的最优价值函数 v ∗ v_* v q ∗ q_* q后,很容易得到最优策略:
v ∗ ( s )   =   m a x a   E [ R t + 1 + γ v ∗ ( S t + 1 ) ∣ S t = s , A t = a ] = m a x a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v ∗ ( s ′ ) ] ( 4.1 ) \begin{aligned} v_{*}(s)\ &= \ \mathop{max} \limits_a \ \mathbb{E}[R_{t+1} + \gamma v_{*}(S_{t+1}) \mid S_t=s,A_t=a] \\ &= \mathop{max} \limits_a \sum_{s^{\prime}, r}p(s^{\prime}, r|s, a)[r + \gamma v_*(s^{\prime})] \qquad (4.1) \end{aligned} v(s) = amax E[Rt+1+γv(St+1)St=s,At=a]=amaxs,rp(s,rs,a)[r+γv(s)](4.1)

q ∗ ( s , a )   =   E [ R t + 1 + γ   m a x a ′   q ∗ ( S t + 1 , a ′ ) ∣ S t = s , A t = a ] = ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ   m a x a ′   q ∗ ( s ′ , a ′ ) ]   ( 4.2 ) \begin{aligned} q_{*}(s, a)\ & = \ \mathbb{E}[R_{t+1} + \gamma\ \mathop{max} \limits_{a^{\prime}}\ q_*(S_{t+1}, a^{\prime}) \mid S_t=s,A_t=a] \\ &= \sum_{s^{\prime}, r} p(s^{\prime}, r | s, a) [r + \gamma\ \mathop{max} \limits_{a^{\prime}}\ q_*(s^{\prime}, a^{\prime})] \ \qquad (4.2) \end{aligned} q(s,a) = E[Rt+1+γ amax q(St+1,a)St=s,At=a]=s,rp(s,rs,a)[r+γ amax q(s,a)] (4.2)

4.1 Policy Evaluation(Prediction)

来考虑一下对任意的策略 π \pi π如何计算状态价值函数 v π v_{\pi} vπ, 在DP文献中,将这个称作策略评估(policy evaluation),也将其称作预测问题(prediction problem)。

回忆一下第3章的式(3.14),对于所有的 s ∈ S s \in \mathcal{S} sS,有:
v π ( s )   = ˙   E π [ G t ∣ S t = s ] = E π [ R t + 1 + γ G t + 1 ∣ S t = s ] ( b y ( 3.9 ) ) = E π [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s ] ( 4.3 ) = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] ( 4.4 ) \begin{aligned} v_{\pi}(s)\ & \dot{=} \ \mathbb{E}_{\pi}\left[G_t \mid S_t=s\right] \\ & =\mathbb{E}_{\pi}\left[R_{t+1}+\gamma G_{t+1} \mid S_t=s\right] \qquad (by(3.9)) \\ & =\mathbb{E}_{\pi}\left[R_{t+1}+\gamma v_{\pi}(S_{t+1}) \mid S_t=s\right] \qquad (4.3) \\ &= \sum _{a } \pi(a | s) \sum_{s^{\prime},r} p(s^{\prime}, r | s, a) \left[ r + \gamma v_{\pi}(s^{\prime}) \right] \qquad (4.4) \end{aligned} vπ(s) =˙ Eπ[GtSt=s]=Eπ[Rt+1+γGt+1St=s](by(3.9))=Eπ[Rt+1+γvπ(St+1)St=s](4.3)=aπ(as)s,rp(s,rs,a)[r+γvπ(s)](4.4)
上式中的 π ( a ∣ s ) \pi(a|s) π(as)表示在策略 π \pi π下的状态 s s s时采取动作 a a a的概率。在策略 π \pi π下,只要 γ < 1 \gamma < 1 γ<1或有最终步,那么 v π v_{\pi} vπ的存在和唯一性是有保证的。

迭代策略评估算法(iterative policy evaluation):

如果环境的动态性是完全可知的,则公式(4.4)是一个有 ∣ S ∣ |\mathcal{S}| S个未知数( v π , s ∈ S v_{\pi},s \in \mathcal{S} vπ,sS)的 ∣ S ∣ |\mathcal{S}| S个等式的线性联立方程组。理论上这个方程组可以被直接解出,只是计算很繁琐。而使用迭代方法更合适;考虑有一系列的近似价值函数 v 0 , v 1 , v 2 , ⋯ v_0, v_1, v_2, \cdots v0,v1,v2,,每一个都将 S + S^+ S+映射到 R \mathbb{R} R。初始的近似价值函数 v 0 v_0 v0被随意选择(除了终止状态必须设为0)。其他每个后继近似价值函数使用式(4.4)的 v π v_{\pi} vπ的贝尔曼方程来作为更新规则:
v k + 1 ( s ) = ˙ E π [ R t + 1 + γ v k ( S t + 1 ) ∣ S t = s ] = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v k ( s ′ ) ] ( 4.5 ) \begin{aligned} v_{k+1}(s) & \dot{=} \mathbb{E}_{\pi}\left[R_{t+1}+\gamma v_{k}(S_{t+1}) \mid S_t=s\right] \\ &= \sum _{a } \pi(a | s) \sum_{s^{\prime},r} p(s^{\prime}, r | s, a) \left[ r + \gamma v_{k}(s^{\prime}) \right] \qquad (4.5) \end{aligned} vk+1(s)=˙Eπ[Rt+1+γvk(St+1)St=s]=aπ(as)s,rp(s,rs,a)[r+γvk(s)](4.5)
对于所有的 s ∈ S s \in \mathcal{S} sS来说, v k = v π v_k= v_{\pi} vk=vπ是这个更新规则中的不动点,因为 v π v_{\pi} vπ的贝尔曼方程已经保证了这种情况下等式的成立。并且在保证 v π v_{\pi} vπ的成立的条件下,序列 { v k } \{v_k\} {vk} k → ∞ k \rightarrow \infty k时可以收敛到 v π v_{\pi} vπ。这个求解算法被称为迭代策略评估算法。

期望更新(expected update):为了从 v k v_k vk得到下一个近似 v k + 1 v_{k+1} vk+1, 迭代策略评估算法对每一个状态 s s s采用相同的操作:在被评估的策略下可能的所有的一步转移中,用从s的后继状态的旧值中获得的新值来替换s的旧值,以及期望即时奖励。迭代策略评估的每一次迭代更新所有的状态的价值函数,以产生新的近似价值函数 v k + 1 v_{k+1} vk+1。在DP中这些方法被称为期望更新,因为它们是基于所有可能的后继状态的期望值的,而不是后继状态的一个样本。

为了编程实现式(4.5)所示的迭代策略评估:

  • 我们需要两个数组,一个用于存储旧的价值函数 v k ( s ) v_k(s) vk(s),一个存储新的价值函数 v k + 1 ( s ) v_{k+1}(s) vk+1(s);这样在旧的价值函数不变的情况下,新的价值函数可以一个接一个的被计算出来。
  • 也可以只使用一个数组来“就地(in place)"更新,即每次用新的价值函数直接替换旧的价值函数;在这种情况下,根据状态更新的顺序,在式(4.5)的右侧有时候会使用新的状态值而不是旧的状态值;这种就地更新的算法也能够收敛到 v π v_{\pi} vπ,甚至会比两个数组的版本收敛更快,因为它更快的使用新数据。
  • 在DP算法中一般使用就地更新的版本。

迭代策略评估的就地更新的伪代码如下,在每次遍历之后会测试 m a x s ∈ S ∣ v k + 1 ( s ) − v k ( s ) ∣ max_{s \in \mathcal{S}} |v_{k+1}(s)-v_k(s)| maxsSvk+1(s)vk(s), 当它足够小时就停止迭代。

在这里插入图片描述

4.2 Policy Improvement

先来看一下策略提升定理(policy improvement theorem, 也译作策略改进定理或策略改善定理)的特例:假设对于任意一个确定的策略 π \pi π,我们已经确定了它的价值函数 v π v_{\pi} vπ。对于一些状态 s s s,我们想知道是否应该选择一个不同于给定的策略的动作 a ≠ π ( s ) a \neq \pi(s) a=π(s),我们已经知道从状态s继续选择当前策略的价值 v π ( s ) v_{\pi}(s) vπ(s),但是选择新策略是更好还是更坏?回答这个问题的一个答案是在状态s选择动作a,然后继续遵循现有的策略 π \pi π。这种方法的价值为:
q π ( s , a )   = ˙   E [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s , A t = a ] = ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] ( 4.6 ) \begin{aligned} q_{\pi}(s, a)\ & \dot{=} \ \mathbb{E}[R_{t+1} + \gamma v_{\pi}(S_{t+1}) \mid S_t=s,A_t=a] \\ &= \sum_{s^{\prime}, r}p(s^{\prime}, r|s, a)[r + \gamma v_{\pi}(s^{\prime})] \qquad (4.6) \end{aligned} qπ(s,a) =˙ E[Rt+1+γvπ(St+1)St=s,At=a]=s,rp(s,rs,a)[r+γvπ(s)](4.6)
而关键准则就是这个值是大于还是小于 v π ( s ) v_{\pi}(s) vπ(s),如果这个值更大,则说明在状态s下选择动作a,然后继续使用策略 π \pi π比始终使用策略 π \pi π更优。当每次在转态s下选择a都是更好时,我们就认为新策略总体上来说更好。

接下来就是策略提升定理的更一般形式,假设 π \pi π π ′ \pi^{\prime} π是任意两个确定的策略,对于任意状态 s ∈ S s \in \mathcal{S} sS:
q π ( s , π ′ ( s ) ) ≥ v π ( s ) ( 4.7 ) q_{\pi}(s, \pi^{\prime}(s)) \ge v_{\pi}(s) \qquad (4.7) qπ(s,π(s))vπ(s)(4.7)
那么策略 π ′ \pi^{\prime} π相比与策略 π \pi π 一样好或更好,也就是说,对于任意状态 s ∈ S s \in \mathcal{S} sS,它肯定能获得一样或更好的期望回报:
v π ′ ( s ) ≥ v π ( s ) ( 4.8 ) v_{\pi^{\prime}}(s) \ge v_{\pi}(s) \qquad (4.8) vπ(s)vπ(s)(4.8)
并且如果式(4.7)中的不等式在某个状态下是严格不等的,那么式(4.8)在这个状态下也会是严格不等的。

策略提升定理的证明通过以下推导过程可以证明,从式(4.7)开始,我们用式(4.6)不断扩展公式左侧的 q π q_{\pi} qπ,并不断应用式(4.7)直到得到 v π ′ ( s ) v_{\pi^{\prime}}(s) vπ(s):
v π ( s ) ≤ q π ( s , π ′ ( s ) ) = E [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s , A t = π ′ ( s ) ] ( b y ( 4.6 ) ) = E π ′ [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s ] ≤ E π ′ [ R t + 1 + γ q π ( S t + 1 , π ′ ( S t + 1 ) ) ∣ S t = s ] ( b y ( 4.7 ) ) = E π ′ [ R t + 1 + γ E [ R t + 2 + γ v π ( S t + 2 ) ∣ S t + 1 , A t + 1 = π ′ ( S t + 1 ) ] ∣ S t = s ] = E π ′ [ R t + 1 + γ R t + 2 + γ 2 v π ( S t + 2 ) ∣ S t = s ] ≤ E π ′ [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 v π ( S t + 3 ) ∣ S t = s ] ⋮ ≤ E π ′ [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 R t + 4 + ⋯ ∣ S t = s ] = v π ′ ( s ) \begin{aligned} v_{\pi}(s) & \le q_{\pi}(s, \pi^{\prime}(s)) \\ &= \mathbb{E}[R_{t+1} + \gamma v_{\pi}(S_{t+1}) \mid S_t=s,A_t=\pi^{\prime}(s)] \qquad (by (4.6)) \\ &= \mathbb{E}_{\pi^{\prime}}[R_{t+1} + \gamma v_{\pi}(S_{t+1}) \mid S_t=s] \\ &\le \mathbb{E}_{\pi^{\prime}}[R_{t+1} + \gamma q_{\pi}(S_{t+1}, \pi^{\prime}(S_{t+1})) \mid S_t=s] \qquad (by (4.7)) \\ &= \mathbb{E}_{\pi^{\prime}}[R_{t+1} + \gamma \mathbb{E}[R_{t+2} + \gamma v_{\pi}(S_{t+2}) \mid S_{t+1},A_{t+1}=\pi^{\prime}(S_{t+1})] \mid S_t=s] \\ &= \mathbb{E}_{\pi^{\prime}}[R_{t+1} + \gamma R_{t+2} + \gamma^2 v_{\pi}(S_{t+2})\mid S_t=s] \\ &\le \mathbb{E}_{\pi^{\prime}}[R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \gamma^3 v_{\pi}(S_{t+3})\mid S_t=s] \\ & \vdots \\ &\le \mathbb{E}_{\pi^{\prime}}[R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \gamma^3 R_{t+4} + \cdots \mid S_t=s] \\ &= v_{\pi^{\prime}}(s) \end{aligned} vπ(s)qπ(s,π(s))=E[Rt+1+γvπ(St+1)St=s,At=π(s)](by(4.6))=Eπ[Rt+1+γvπ(St+1)St=s]Eπ[Rt+1+γqπ(St+1,π(St+1))St=s](by(4.7))=Eπ[Rt+1+γE[Rt+2+γvπ(St+2)St+1,At+1=π(St+1)]St=s]=Eπ[Rt+1+γRt+2+γ2vπ(St+2)St=s]Eπ[Rt+1+γRt+2+γ2Rt+3+γ3vπ(St+3)St=s]Eπ[Rt+1+γRt+2+γ2Rt+3+γ3Rt+4+St=s]=vπ(s)
对于一个新的策略 π ′ \pi^{\prime} π, 如果满足:
π ′ ( s )   = ˙   a r g m a x a   q π ( s , a ) = a r g m a x a   E [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s , A t = a ] ( 4.9 ) = a r g m a x a   ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] \begin{aligned} \pi^{\prime}(s) &\ \dot{=}\ \mathop{argmax} \limits_a\ q_{\pi}(s, a) \\ & = \mathop{argmax} \limits_a\ \mathbb{E}[R_{t+1} + \gamma v_{\pi}(S_{t+1}) \mid S_t=s, A_t=a] \qquad (4.9) \\ & = \mathop{argmax} \limits_a\ \sum_{s^{\prime}, r} p(s^{\prime}, r | s, a)[r + \gamma v_{\pi}(s^{\prime})] \end{aligned} π(s) =˙ aargmax qπ(s,a)=aargmax E[Rt+1+γvπ(St+1)St=s,At=a](4.9)=aargmax s,rp(s,rs,a)[r+γvπ(s)]
上面的 a r g m a x a argmax_a argmaxa表示能够使表达式最大化的a(如果相等则任取一个)。这个贪心策略根据 v π v_{\pi} vπ向前单步搜索采取在短期内看上去最优的动作。这个贪心策略满足式(4.7)的策略提升定理,所以它跟原来的策略一样好,甚至更好。这种根据原策略的价值函数执行贪心算法,来构造一个更好策略的过程,被称为策略提升(policy improvement)。

如果新的策略 π ′ \pi^{\prime} π和旧的策略 π \pi π一样好,但不是更好,那么 v π = v π ′ v_{\pi} = v_{\pi^{\prime}} vπ=vπ, 从式(4.9)可得到,对于所有状态 s ∈ S s \in \mathcal{S} sS:
π ′ ( s ) = m a x a   E [ R t + 1 + γ v π ′ ( S t + 1 ) ∣ S t = s , A t = a ] ( 4.9 ) = m a x a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ′ ( s ′ ) ] \begin{aligned} \pi^{\prime}(s) & = \mathop{max} \limits_a\ \mathbb{E}[R_{t+1} + \gamma v_{\pi^{\prime}}(S_{t+1}) \mid S_t=s, A_t=a] \qquad (4.9) \\ & = \mathop{max} \limits_a \sum_{s^{\prime}, r} p(s^{\prime}, r | s, a)[r + \gamma v_{\pi^{\prime}}(s^{\prime})] \end{aligned} π(s)=amax E[Rt+1+γvπ(St+1)St=s,At=a](4.9)=amaxs,rp(s,rs,a)[r+γvπ(s)]
这和式(4.1)的贝尔曼最优方程完全相同,因此 v π ′ v_{\pi^{\prime}} vπ一定是 v ∗ v_* v,策略 π ′ \pi^{\prime} π π \pi π都是最优策略。策略提升一定会给我们一个严格最优的策略除非原来的策略已经是最优的了。

这里讨论的都是确定性策略,但是要记住随机提升定理在随机策略的情况下也是成立的。并且在类似式(4.9)中出现多个动作都可以得到最大值的情况时,在随机情况下不需要从中选一个。相反,在新的贪心策略中,每一个最优的动作都能以一定的概率被选中。

4.3 Policy Iteration

策略迭代(policy iteration):当一个策略 π \pi π,根据 v π v_{\pi} vπ提升并得到了一个更好的策略 π ′ \pi^{\prime} π,我们可以计算 v π ′ v_{\pi^{\prime}} vπ并提升它得到一个更好的策略 π ′ ′ \pi^{\prime \prime} π′′,因此,我们可以获得一系列单调改进的策略和价值函数:
π 0 ⟶ E v π 0 ⟶ I π 1 ⟶ E v π 1 ⟶ I π 2 ⟶ E ⋯ ⟶ I π ∗ ⟶ E v ∗ \pi_0 \stackrel{E}{\longrightarrow} v_{\pi0} \stackrel{I}{\longrightarrow} \pi_1 \stackrel{E}{\longrightarrow} v_{\pi1} \stackrel{I}{\longrightarrow} \pi_2 \stackrel{E}{\longrightarrow} \cdots \stackrel{I}{\longrightarrow} \pi_* \stackrel{E}{\longrightarrow} v_* π0Evπ0Iπ1Evπ1Iπ2EIπEv
上式中的 ⟶ E \stackrel{E}{\longrightarrow} E是策略评估, ⟶ I \stackrel{I}{\longrightarrow} I是策略提升。每一个策略都被保证比前一个策略更优(除非它前一个已经是最优的)。因为有限MDP只有有限种策略,这个过程在有限迭代里一定会收敛到最优策略和最优价值函数。

策略迭代的完整算法如下图所示:

在这里插入图片描述

4.4 Value Iteration

策略迭代的一个缺点是它使用了策略评估,而策略评估需要很多轮的迭代。

价值迭代(value iteration):可以被认为是策略评估只进行了一轮更新的策略迭代算法,它可以被记作结合了策略提升和截断策略评估的更新操作, 对于所有状态 s ∈ S s \in \mathcal{S} sS::
v k + 1 ( s )   = ˙   m a x a   E [ R t + 1 + γ v k ( S t + 1 ) ∣ S t = s , A t = a ] = m a x a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v k ( s ′ ) ] ( 4.10 ) \begin{aligned} v_{k+1}(s) &\ \dot{=}\ \mathop{max} \limits_a\ \mathbb{E}[R_{t+1} + \gamma v_{k}(S_{t+1}) \mid S_t=s, A_t=a] \\ & = \mathop{max} \limits_a \sum_{s^{\prime}, r} p(s^{\prime}, r | s, a)[r + \gamma v_{k}(s^{\prime})] \qquad (4.10) \end{aligned} vk+1(s) =˙ amax E[Rt+1+γvk(St+1)St=s,At=a]=amaxs,rp(s,rs,a)[r+γvk(s)](4.10)
对于任意 v 0 v_0 v0, 在保证 v ∗ v_* v存在的条件下,序列 { v k } \{v_k \} {vk}都可以收敛到 v ∗ v_* v

理解价值迭代的tips:

  • 借助贝尔曼最优方程式(4.1),价值迭代将贝尔曼最优方程变为一条更新规则。除了从达到最大值的状态更新外,价值迭代更新与式(4.5)的策略评估更新一样

  • 比较下面两个图的回溯图,左图是策略评估(原书59页),右图是价值迭代(原书图3.4左侧)

在这里插入图片描述

  • 在每一次遍历中,价值迭代有效结合了策略评估的遍历和策略改进的遍历。一般来说,可以将截断策略迭代算法看做一系列的遍历序列,其中一些进行策略评估更新,而另一些进行价值迭代更新。

价值迭代如何终止呢?当一次遍历中价值函数仅有细微的变化时,就可以停止了。下面是一个包含这个停止条件的完整价值迭代算法。
在这里插入图片描述

4.5 Asynchronous Dynamic Programming

这章已经讨论过的DP方法的一个缺点是它需要遍历MDP的整个状态集。如果状态集很大,单次遍历的开销就非常大了。比如backgammon游戏有 1 0 20 10^{20} 1020个状态,即使每秒可以进行100万个状态的价值迭代更新,也需要花上1000年来进行一次扫描。

异步DP算法(Asynchronous DP algorithms)是一类就地迭代的DP算法,它不以系统遍历状态集的形式来组织算法,这些算法使用任意可用的状态值,以任意顺序来更新状态值。所以在某些状态的值更新一次之前,另一些状态的值可能已经更新好几次了。所以为了正确收敛,异步算法必须不断地更新所有状态的值:在某个计算节点后,它不能忽略任何一个状态。

比如使用异步价值迭代来更新式(4.10),在每一个步骤k上,只就地更新一个状态 s k s_k sk的值,如果 0 ≤ γ < 1 0 \le \gamma < 1 0γ<1,则只要所有状态都在序列 { s k } \{s_k\} {sk}中出现无数次,就能保证渐进收敛到 v ∗ v_* v

当然,避免遍历并不一定意味着我们可以减少计算量。这只是意味着一个算法在提升一个策略前,不需要陷入任何漫长而无望的遍历。

  • 我们可以尝试通过选择一些特定状态来更新,从而加快算法的速度。
  • 我们可以调整更新的顺序,使价值信息能够更有效地在状态之间传播。
  • 对于一些状态可能不需要像其他状态那样频繁地更新其价值函数;如果与最优行为无关,我们甚至可以完全跳过一些状态。后面第8章就会讨论这样的思路。

异步算法还有个好处:使计算和实时交互的结合变得更加容易。为了解决给定的MDP问题,我们可以在一个agent在MDP中进行真实交互的同时,执行迭代DP算法。agent的经验可用于确定DP算法要更新哪个状态。同时DP算法的最新值和策略信息可以指导agent的决策。

4.6 Generalized Policy Iteration

广义策略迭代(generalized policy iteration GPI):让策略评估和策略提升相互作用的一般思路,与这两个流程的粒度和其他细节无关。几乎所有方法都包括明确定义的策略和价值函数,如下图所示。策略总是基于特定的价值函数进行提升,价值函数也始终会向对应策略的真实价值函数收敛。当评估流程和提升流程都很稳定,不再变化,那么价值函数和策略必定是最优的。价值函数只有在与当前策略一致时才稳定,并且策略只有在对当前价值函数是贪心策略时才稳定,因此只有当一个策略发现它对自己的评估价值函数是贪心策略时,这两个流程才会稳定下来,这意味着式(4.1)的贝尔曼最优方程成立,这个策略和价值函数也都是最优的。

理解GPI的角度:

  • 可以将GPI的评估和提升流程看做是竞争和合作。竞争是指它们朝着相反的方向前进:让策略对价值函数贪心通常会使价值函数与当前策略不匹配,而使价值函数与策略一致通常会导致策略不再贪心。从长远看,这两个过程会相互作用来找到一个联合解决方案:最优价值函数和最优策略。

  • 可以将GPI的评估和提升流程视为两个约束或目标之间的相互作用的流程,如下图所示的二维空间中的两条线。每个流程都把价值函数或策略推向其中的一条线,这条线代表了对于两个目标中的某一个目标的解决方案。图中的箭头对应于策略迭代的行为,即每个箭头都表示系统每次都会完全地达到其中一个目标。

在这里插入图片描述

4.7 Efficiency of Dynamic Programming

DP算法也许对一些规模非常大的问题不太适用,但是相比于其他解决MDPs的方法,DP方法实际上效率很高。如果忽略掉一些技术上的细节,在最坏情况下,DP方法找到最优策略的时间与状态和动作的数量是呈多项式级关系的。

DP算法有时会由于维度灾难(the curse of dimensionality)而被认为缺乏实用性。维度灾难是指状态总数量随着状态变量的增加而指数级上升。状态集合太大的确会带来一些困难,但是这些是问题本身的困难,而非DP作为一种解法所带来的困难。实际上,相比于直接搜索和线性规划,DP更加适合于解决大规模状态空间的问题。

在实际运用中,采用今天的计算机实现DP算法,可以解决拥有数百万个状态的MDPs,策略迭代和价值迭代都被广泛采用,并且目前没有定论说哪种方法更好。并且这些方法通常比理论最坏的运行情况收敛的更快,尤其是使用了好的初始价值函数或策略的时候。

对于那些有很大状态空间的问题,通常会使用异步DP算法。

4.8 Summary

本章熟悉了利用动态规划来解决有限MDPs问题。关键概念:

  • 策略评估
  • 策略提升
  • 策略迭代
  • 价值迭代
  • 期望更新
  • 广义策略迭代GPI
  • 异步DP算法

自举法(bootstrapping):DP算法有一个特殊性质,所有的方法都是根据对后继状态价值的估计,来更新对当前状态价值的估计。也就是它们根据其他估计来更新自己的估计,这种思想就被称作自举法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/633975.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树莓派4B连接不了产品开的热点

目的 关于树莓派连接不了产品开的5G热点&#xff0c; 当时还是一头雾水。 参考这篇博客 把思路方向转向了频率&#xff0c; 信道&#xff0c; 通过给的产品A相关规格说明wifi 5.18GHz, 信道36。 于是乎我两款产品A、产品B为例。 树莓派是能连接产品B开的热点&#xff08;5.74…

【Unity SRP】实现基础的Temporal AA(未完)

写在前面 【技术美术图形部分】简述主流及新的抗锯齿技术&#xff0c;花了点时间盘点了一些主流AA技术&#xff0c;再在SRP下的URP管线中实现一下目前游戏用得比较多的TAA。参考Unity的TAA&#xff08;比较容易懂&#xff09;以及sienaiwun的实现思路&#xff0c;也参考了很多…

OpenCV转换HDR图像与源码分析

我们常见的图像位深一般是8bit&#xff0c;颜色范围[0, 255]&#xff0c;称为标准动态范围SDR(Standard Dynamic Range)。SDR的颜色值有限&#xff0c;如果要图像色彩更鲜艳&#xff0c;那么就需要10bit&#xff0c;甚至12bit&#xff0c;称为高动态范围HDR(High Dynamic Range…

Docker部署ES集群、kibana、RabbitMq和chrome安装elasticsearch-head插件

文章目录 [toc] 1.安装ES集群和kibana1.1安装ES集群1.1.1 准备挂载目录1.1.2 准备配置文件1.1.3 启动命令1.1.3.0 启动前设置系统环境变量1.1.3.1 Windows10环境启动命令1.1.3.2 Linux环境启动命令 1.2安装kibana1.2.1 准备挂载目录1.2.2 准备配置文件1.2.3 启动命令1.2.3.1 Wi…

Spring IOC基于XML和注解管理Bean(一)

Spring IOC基于XML和注解管理Bean&#xff08;二&#xff09; 文章目录 1、IoC容器1.1、控制反转&#xff08;IoC&#xff09;1.2、依赖注入1.3、IoC容器在Spring的实现 2、基于XML管理Bean2.1、搭建模块spring-first2.2、实验一&#xff1a;获取bean①方式一&#xff1a;根据i…

过滤器和拦截器实现

说明&#xff1a;当用户未经登录&#xff0c;直接访问后台网址时&#xff0c;为了避免可以直接访问后台内容&#xff0c;就需要使用过滤器或拦截器将此类请求在服务器响应数据之前做核对&#xff0c;如果未登录&#xff0c;则驳回请求&#xff0c;返回登录页面&#xff0c;如果…

PyQt5桌面应用开发(20):界面设计结果自动测试(一)

本文目录 PyQt5桌面应用系列PyQt5的测试驱动开发&#xff08;Test-Driven Development&#xff0c;TDD&#xff09;QTestUI动作函数信号测试 最平凡的例子unittest框架总结 PyQt5桌面应用系列 PyQt5桌面应用开发&#xff08;1&#xff09;&#xff1a;需求分析 PyQt5桌面应用开…

【Apache Pinot】简单聊聊前面没讲的 Deep Store 和 Cluster

背景 前面3篇文章讲解了 Pinot 用的最多的几个组件&#xff0c;现在就聊最后剩下的两个&#xff0c;一个是 Cluster&#xff0c;另外一个就是 Deep Store。 Cluster 其实 Cluster 比较简单&#xff0c;就是一个概念的集合&#xff0c;他说有 Server&#xff0c;Broker 和 Co…

代码随想录算法训练营第五十六天 | 力扣 583. 两个字符串的删除操作, 72. 编辑距离

583. 两个字符串的删除操作 题目 583. 两个字符串的删除操作 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 解析 1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义 …

学会这个Python库,做接口测试不是手拿把掐吗?

我们在做接口测试时&#xff0c;大多数返回的都是json属性&#xff0c;我们需要通过接口返回的json提取出来对应的值&#xff0c;然后进行做断言或者提取想要的值供下一个接口进行使用。 但是如果返回的json数据嵌套了很多层&#xff0c;通过查找需要的词&#xff0c;就很不方便…

三、Typora软件的介绍及安装

1、Typora软件的介绍 (1)Typora时一款Markdown编辑器和阅读器。 (2)Typora使用起来十分简洁&#xff0c;十分方便&#xff0c;可用于记录日常的笔记等。 (3)Markdown 是一种轻量级标记语言&#xff0c;它允许人们使用易读易写的纯文本格式编写文档。 2、Typora软件的安装 …

都说未来AI测试辅助自动化测试,难道手工测试真的要被淘汰了吗?

目录 前言 AI测试的迷思 第一个问题&#xff1a;AI辅助测试真的能用吗&#xff1f; 第二个问题&#xff1a;AI辅助测试已经发展到什么程度了&#xff1f; 第三个问题&#xff1a;哪些软件系统能用AI辅助测试&#xff1f; 总结 总结&#xff1a; 前言 近年来&#xff0c;…

FPGA实现简易的自动售货机模型

文章目录 前言一、系统设计1、模块框图2、状态机框图3、RTL视图 二、源码1.蜂鸣器驱动模块2.按键消抖模块3、PWM模块4、sale_goods模块(状态机部分)5、数码管驱动模块6、Sales(顶层模块) 三、效果四、总结五、参考资料 前言 环境&#xff1a; 1、Quartus18.1 2、vscode 3、板子…

华为OD机试 JavaScript 实现【简单密码】【牛客练习题 HJ21】,附详细解题思路

一、题目描述 现在有一种密码变换算法。 九键手机键盘上的数字与字母的对应&#xff1a; 1--1&#xff0c; abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0&#xff0c;把密码中出现的小写字母都变成九键键盘对应的数字&#xff0c;如&#xff1a;a …

Python实现面向对象版学员管理系统

如有错误&#xff0c;敬请谅解&#xff01; 此文章仅为本人学习笔记&#xff0c;仅供参考&#xff0c;如有冒犯&#xff0c;请联系作者删除&#xff01;&#xff01; 1.1需求分析 1.1.1使用面向对象编程思想完成学员管理系统的开发&#xff0c;具体如下&#xff1a; 系统要求…

城镇供水产销差问题分析与对策

城镇自来水与其它商品的经营活动一样存在着产销差&#xff0c;产销差的高低&#xff0c;直接影响着供水企业的经济效益。供水企业的经营活动中不单考虑企业的经济效益&#xff0c;还要考虑社会效益。产销差是客观存在的&#xff0c;造成产销差的原因是多样的&#xff0c;复杂的…

初探图神经网络——GNN

title: 图神经网络(GNN) date: tags: 随笔知识点 categories:[学习笔记] 初探图神经网络(GNN) 文章来源&#xff1a;https://distill.pub/2021/gnn-intro/ 前言&#xff1a;说一下为什么要写这篇文章&#xff0c;因为自己最近一直听说“图神经网络”&#xff0c;但是一直不了…

【LeetCode】24.两两交换链表中的节点

24.两两交换链表中的节点&#xff08;中等&#xff09; 方法一&#xff1a;递归 思路 代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), n…

聊一聊mysql的MVC

技术主题 在mysql世纪使用中&#xff0c;经常涉及到MVCC的概念&#xff08;Multi-Vsersion Concurrency Control&#xff09;&#xff0c;即多版本并发控制&#xff0c;一种并发控制方法&#xff0c;根本目的是主为了提升数据库的并发性能。 mvcc为什么产生 数据库最原生的锁…

解开索引迷局:聚簇索引与非聚簇索引的差异大揭秘!

大家好&#xff0c;我是小米&#xff01;今天我们来聊一聊数据库中的索引&#xff0c;具体地说就是聚簇索引和非聚簇索引。这两者在数据库中扮演着重要的角色&#xff0c;对于我们理解数据库的存储和查询机制非常有帮助。下面就让我来给大家详细解释一下它们的区别吧&#xff0…