强化学习面试经典问题: 策略迭代与价值迭代的关系
总结:
相同点: 都用于 Model-Based 的DP算法.
异同点:
- 价值迭代不直接改进策略; 策略迭代直接改进策略: 值函数和策略同时达到最优; 策略迭代先是① 策略评估, 后是② 策略提升
- 价值迭代采用的是贝尔曼最优方程,策略迭代采用的是贝尔曼方程
- 在状态空间较小时, 策略迭代的收敛速度更快一些. 在状态空间较大时, 不适合用策略迭代.
策略迭代:
策略迭代(Policy Iteration)就是在策略
π
(
a
│
s
)
π(a│s)
π(a│s)未知的情况下,根据每次迭代的反馈reward来学到最优
π
(
a
│
s
)
π(a│s)
π(a│s).
策略迭代的主要时间都花费在策略评估上,对一个简单的问题来说,在策略评估上花费的时间不算长;但对复杂的问题来说,这个步骤的时间比较长. 但是其优点也很明显,就是很容易证明其收敛性.
其算法思想是:
- 首先随机初始化策略 π ( a │ s ) π(a│s) π(a│s), 将状态价值函数 V π ( s ) V_π (s) Vπ(s)置为 0
- 在①策略评估部分, 根据当前的策略 π ( a │ s ) π(a│s) π(a│s)来计算每一个状态的价值 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,s′∣s,π(s))
- 在②策略改进部分, 根据上一步求得的状态价值 V π ( s ) V_π (s) Vπ(s)来得到新的策略 π ( a │ s ) π(a│s) π(a│s), 直到策略 π ( a │ s ) π(a│s) π(a│s)收敛为止, 否则重新回到策略估计: π ( s ) ← a r g m a x a ∑ r , s ′ ( r + γ V ( s ′ ) ) ⋅ P ( r , s ′ ∣ s , π ( s ) ) π(s)←argmax_a∑_{r,s'}(r+γV(s' ))⋅P(r,s' |s,π(s)) π(s)←argmaxa∑r,s′(r+γV(s′))⋅P(r,s′∣s,π(s))
首先随机初始化随机策略 π π π, 将所有状态 s s s的价值函数置为 V π ( s ) = 0 V_π (s)=0 Vπ(s)=0
一直进行迭代步骤①+②, 直到
π
(
a
│
s
)
π(a│s)
π(a│s)收敛(两次迭代之间变化不大):
①策略评估: 根据当前的策略π来计算所有状态
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,s′∑P(r,s′∣s,π(s))⋅[r+γvπ(s′)]
其中
P
(
r
,
s
′
∣
s
,
π
(
s
)
)
P(r,s' |s,π(s))
P(r,s′∣s,π(s))表示在状态
s
s
s时执行了以概率
π
(
s
)
π(s)
π(s)的可能性执行了某一动作
a
a
a, 产生了状态
s
′
s'
s′和奖励
r
r
r的概率.
②策略提升: 根据①策略评估:求得的上一轮策略
π
k
−
1
(
a
│
s
)
π_{k-1} (a│s)
πk−1(a│s)下的状态价值
V
π
(
s
)
V_π (s)
Vπ(s)表, 根据贪心策略更新此轮的策略
π
(
a
│
s
)
π(a│s)
π(a│s) (即在不同的状态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')]
π(a│s)←argmaxa[Vπ(s′)]
直到该轮策略
π
k
(
a
│
s
)
π_k (a│s)
πk(a│s)与上一轮的该策略
π
k
−
1
(
a
│
s
)
π_{k-1} (a│s)
πk−1(a│s)变化不大时退出全部训练, 否则就回到①继续进行策略评估:来估计当前策略下
π
k
(
a
│
s
)
π_k (a│s)
πk(a│s)的全部状态
s
s
s的
V
π
(
s
)
V_π (s)
Vπ(s).
当策略 π ( a │ s ) π(a│s) π(a│s)变化不大时, 就返回当前的 π ( a │ s ) π(a│s) π(a│s).
图1. 基于Grid World环境的策略迭代过程: 每次迭代右图为
V
π
(
s
)
V_π (s)
Vπ(s), 左图为本次迭代生成的策略
π
(
a
│
s
)
π(a│s)
π(a│s)
价值迭代:
价值迭代(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(s′∣s,a)Vπ(s′)
V
π
∗
(
s
)
←
m
a
x
a
∈
A
Q
π
(
s
,
a
)
V_π^* (s)←max_{a∈A}Q_π (s,a)
Vπ∗(s)←maxa∈AQπ(s,a)
与策略迭代相比, 价值迭代没有等到状态价值收敛才去调整策略, 而是随着状态价值的迭代及时调整策略, 这样就大大减少了迭代的次数. 最后只要值函数达到最优, 那么策略也达到最优. 也就是说策略和价值从初始状态值函数开始同步迭代计算, 最终
V
π
∗
(
s
)
V_π^* (s)
Vπ∗(s)收敛, 整个过程中没有遵循任何显式策略.
最终输出的策略 π ( a │ s ) π(a│s) π(a│s)就是走最大 V π ∗ ( s ) V_π^* (s) Vπ∗(s)的动作.
参考文献: 强化学习(三)用动态规划(DP)求解.