0
点赞
收藏
分享

微信扫一扫

强化学习: 策略迭代与价值迭代

强化学习面试经典问题: 策略迭代与价值迭代的关系

总结:

相同点: 都用于 Model-Based 的DP算法.
异同点:

  1. 价值迭代不直接改进策略; 策略迭代直接改进策略: 值函数和策略同时达到最优; 策略迭代先是① 策略评估, 后是② 策略提升
  2. 价值迭代采用的是贝尔曼最优方程,策略迭代采用的是贝尔曼方程
  3. 在状态空间较小时, 策略迭代的收敛速度更快一些. 在状态空间较大时, 不适合用策略迭代.

策略迭代:

策略迭代(Policy Iteration)就是在策略 π ( a │ s ) π(a│s) π(as)未知的情况下,根据每次迭代的反馈reward来学到最优 π ( a │ s ) π(a│s) π(as).
策略迭代的主要时间都花费在策略评估上,对一个简单的问题来说,在策略评估上花费的时间不算长;但对复杂的问题来说,这个步骤的时间比较长. 但是其优点也很明显,就是很容易证明其收敛性.

其算法思想是:

  1. 首先随机初始化策略 π ( a │ s ) π(a│s) π(as), 将状态价值函数 V π ( s ) V_π (s) Vπ(s)置为 0
  2. 在①策略评估部分, 根据当前的策略 π ( a │ s ) π(a│s) π(as)来计算每一个状态的价值 V π ( s ) V_π (s) Vπ(s), 直到 V π ( s ) V_π (s) Vπ(s)收敛为止: V ( s ) ← ∑ ( r , s ′ ) ( r + γ V ( s ′ ) ) ⋅ P ( r , s ′ ∣ s , π ( s ) ) V(s)←∑_(r,s')(r+γV(s' ))⋅P(r,s' |s,π(s)) V(s)(r,s)(r+γV(s))P(r,ss,π(s))
  3. 在②策略改进部分, 根据上一步求得的状态价值 V π ( s ) V_π (s) Vπ(s)来得到新的策略 π ( a │ s ) π(a│s) π(as), 直到策略 π ( a │ s ) π(a│s) π(as)收敛为止, 否则重新回到策略估计: π ( s ) ← a r g ⁡ m a x a ⁡ ∑ r , s ′ ( r + γ V ( s ′ ) ) ⋅ P ( r , s ′ ∣ s , π ( s ) ) π(s)←arg⁡max_a⁡∑_{r,s'}(r+γV(s' ))⋅P(r,s' |s,π(s)) π(s)argmaxar,s(r+γV(s))P(r,ss,π(s))

首先随机初始化随机策略 π π π, 将所有状态 s s s的价值函数置为 V π ( s ) = 0 V_π (s)=0 Vπ(s)=0

一直进行迭代步骤①+②, 直到 π ( a │ s ) π(a│s) π(as)收敛(两次迭代之间变化不大):
①策略评估: 根据当前的策略π来计算所有状态 s s s的价值 V π ( s ) V_π (s) Vπ(s), 直到收敛为止. 执行 n n n轮迭代, 每轮迭代时计算出每个状态 s s s V π ( s ) V_π (s) Vπ(s), 直到 V π ( s ) V_π (s) Vπ(s)变化不大时停止:
V π ( s ) ← ∑ r , s ′ P ( r , s ′ ∣ s , π ( s ) ) ⋅ [ r + γ v π ( s ′ ) ] V_π (s)←∑_{r,s'}P(r,s' |s,π(s))⋅[r+γv_π (s')] Vπ(s)r,sP(r,ss,π(s))[r+γvπ(s)]
其中 P ( r , s ′ ∣ s , π ( s ) ) P(r,s' |s,π(s)) P(r,ss,π(s))表示在状态 s s s时执行了以概率 π ( s ) π(s) π(s)的可能性执行了某一动作 a a a, 产生了状态 s ′ s' s和奖励 r r r的概率.

②策略提升: 根据①策略评估:求得的上一轮策略 π k − 1 ( a │ s ) π_{k-1} (a│s) πk1(as)下的状态价值 V π ( s ) V_π (s) Vπ(s)表, 根据贪心策略更新此轮的策略 π ( a │ s ) π(a│s) π(as) (即在不同的状态s时, 采取最大化 V π ( s ) V_π (s) Vπ(s)的动作 a a a):
π ( a │ s ) ← a r g m a x a [ V π ( s ′ ) ] π(a│s)←argmax_a [V_π (s')] π(as)argmaxa[Vπ(s)]
直到该轮策略 π k ( a │ s ) π_k (a│s) πk(as)与上一轮的该策略 π k − 1 ( a │ s ) π_{k-1} (a│s) πk1(as)变化不大时退出全部训练, 否则就回到①继续进行策略评估:来估计当前策略下 π k ( a │ s ) π_k (a│s) πk(as)的全部状态 s s s V π ( s ) V_π (s) Vπ(s).

当策略 π ( a │ s ) π(a│s) π(as)变化不大时, 就返回当前的 π ( a │ s ) π(a│s) π(as).


在这里插入图片描述图1. 基于Grid World环境的策略迭代过程: 每次迭代右图为 V π ( s ) V_π (s) Vπ(s), 左图为本次迭代生成的策略 π ( a │ s ) π(a│s) π(as)

价值迭代:

价值迭代(Value Iteration)可以理解为是策略迭代的一个改进版本. 价值迭代算法是一种直接求解最优策略的方法.
其算法思想是: 在每一个状态 s s s下, 依次执行每一个可能的动作 a a a, 算出执行每一个动作 a a a后的动作价值 Q π ( s , a ) Q_π (s,a) Qπ(s,a), 从中取出最大值作为当前状态 s s s的最优状态价值 V π ∗ ( s ) V_π^* (s) Vπ(s). 重复这个过程, 直到每个状态的最优价值 V π ∗ ( s ) V_π^* (s) Vπ(s)不再发生变化, 则迭代结束.


使用贝尔曼最优方程, 将策略改进视为值函数的改进, 每一步都求取最大的动作价值函数 Q π ( s , a ) Q_π (s,a) Qπ(s,a). 具体的迭代公式为:
对于每一个状态 s s s, 求出所有可能动作 a a a的动作价值函数 Q π ( s , a ) Q_π (s,a) Qπ(s,a), 将最大的Q作为该状态s的最优状态价值函数 V π ∗ ( s ) V_π^* (s) Vπ(s).
Q π ( s , a ) ← r + γ ∑ s ′ → 终 点 ( ∞ ) P ( s ′ ∣ s , a ) V π ( s ′ ) Q_π (s,a)←r+γ∑_{s'→终点(∞)}P(s' |s,a)V_π (s') Qπ(s,a)r+γs()P(ss,a)Vπ(s)
V π ∗ ( s ) ← m a x a ∈ A ⁡ Q π ( s , a ) V_π^* (s)←max_{a∈A}⁡Q_π (s,a) Vπ(s)maxaAQπ(s,a)
与策略迭代相比, 价值迭代没有等到状态价值收敛才去调整策略, 而是随着状态价值的迭代及时调整策略, 这样就大大减少了迭代的次数. 最后只要值函数达到最优, 那么策略也达到最优. 也就是说策略和价值从初始状态值函数开始同步迭代计算, 最终 V π ∗ ( s ) V_π^* (s) Vπ(s)收敛, 整个过程中没有遵循任何显式策略.

最终输出的策略 π ( a │ s ) π(a│s) π(as)就是走最大 V π ∗ ( s ) V_π^* (s) Vπ(s)的动作.


参考文献: 强化学习(三)用动态规划(DP)求解.

举报

相关推荐

0 条评论