值迭代与策略迭代
1. 值迭代算法(Value iteration algorithm)
如下,如何求解Bellman Optimality Equation?
v
=
f
(
v
)
=
max
π
(
r
π
+
γ
P
π
v
)
v=f(v)=\max_{\pi}(r_\pi +\gamma P_\pi v)
v=f(v)=πmax(rπ+γPπv)
根据之前的内容,我们知道可以采用contraction mapping theorem使用迭代算法求解:
v
k
+
1
=
f
(
v
k
)
=
max
π
(
r
π
+
γ
P
π
v
k
)
,
k
=
1
,
2
,
3
,
.
.
.
v_{k+1}=f(v_k)=\max_{\pi} (r_\pi +\gamma P_\pi v_k), k=1,2,3,...
vk+1=f(vk)=πmax(rπ+γPπvk),k=1,2,3,...,其中
v
0
v_0
v0是一个任意值。
- 该算法最终能够发现最优状态值(optimal state value)和一个最优策略(optimal policy)
- 该算法被称为
value iteration
值迭代算法详细过程: v k + 1 = f ( v k ) = max π ( r π + γ P π v k ) , k = 1 , 2 , 3... v_{k+1}=f(v_k)=\max_\pi (r_\pi +\gamma P_\pi v_k), k=1,2,3... vk+1=f(vk)=πmax(rπ+γPπvk),k=1,2,3...可以分解为两部:
- Step 1:
policy update
, 这一步是求解 π k + 1 = a r g max π ( r π + γ P π v k ) \pi_{k+1}=arg\max_\pi (r_\pi +\gamma P_\pi v_k) πk+1=argπmax(rπ+γPπvk)其中 v k v_k vk是给定的 - Step 2:
value update
, v k + 1 = r π k + 1 + γ P π k + 1 v k v_{k+1}=r_{\pi_{k+1}}+\gamma P_{\pi_{k+1}}v_k vk+1=rπk+1+γPπk+1vk
问题: v k v_k vk是不是一个state value?当然不是,因为不能确定 v k v_k vk满足一个贝尔曼等式(Bellman equation)。
接下来,我们要研究elementwise form,目的是实现算法。
- Matrix-vector form适合于理论分析
- Elementwise form适合算法实现
Step1: Policy update
elementwise form如下:
π
k
+
1
=
a
r
g
max
π
(
r
π
+
γ
P
π
v
k
)
\pi_{k+1}=arg\max_\pi (r_\pi +\gamma P_\pi v_k)
πk+1=argπmax(rπ+γPπvk)即
上面最优化问题的最优解是
π
k
+
1
(
a
∣
s
)
=
{
1
a
=
a
k
∗
(
s
)
0
a
≠
a
k
∗
(
s
)
\pi_{k+1}(a|s)=\begin{cases}1 & a = a_k^*(s)\\0 & a\ne a_k^*(s)\end{cases}
πk+1(a∣s)={10a=ak∗(s)a=ak∗(s)其中
a
k
∗
=
a
r
g
max
a
q
k
(
a
,
s
)
a_k^*=arg\max_a q_k(a, s)
ak∗=argmaxaqk(a,s)。
π
k
+
1
\pi_{k+1}
πk+1被称为greedy policy
,因为简单地选择最大的q-value。
Step2: Value update
elementwise form:
v
k
+
1
=
r
π
k
+
1
+
γ
P
π
k
+
1
v
k
v_{k+1}=r_{\pi_{k+1}}+\gamma P_{\pi_{k+1}}v_k
vk+1=rπk+1+γPπk+1vk即
因为
π
k
+
1
\pi_{k+1}
πk+1是greedy,上面等式可以简化为
v
k
+
1
(
s
)
=
max
a
q
k
(
a
,
s
)
v_{k+1}(s)=\max_{a} q_k(a, s)
vk+1(s)=amaxqk(a,s)
过程总结:
v
k
(
s
)
→
q
k
(
s
,
a
)
→
greedy policy
π
k
+
1
(
a
∣
s
)
→
new value
v
k
+
1
=
max
a
q
k
(
s
,
a
)
v_k(s)\rightarrow q_k(s, a)\rightarrow \text{ greedy policy }\pi_{k+1}(a|s)\rightarrow \text{ new value } v_{k+1}=\max_a q_k(s, a)
vk(s)→qk(s,a)→ greedy policy πk+1(a∣s)→ new value vk+1=amaxqk(s,a)
举个例子:
奖励设定(reward setting)为:
r
b
o
u
n
d
a
r
y
=
r
f
o
r
b
i
d
d
e
n
=
−
1
,
r
t
a
r
g
e
t
=
1
r_{boundary}=r_{forbidden}=-1, r_{target}=1
rboundary=rforbidden=−1,rtarget=1。折扣率(discount rate)
γ
=
0.9
\gamma=0.9
γ=0.9
q-table:
q
(
s
,
a
)
q(s, a)
q(s,a)的表达式如下:
当
k
=
0
k=0
k=0,令
v
0
(
s
1
)
=
v
0
(
s
2
)
=
v
0
(
s
3
)
=
v
0
(
s
4
)
=
0
v_0(s_1)=v_0(s_2)=v_0(s_3)=v_0(s_4)=0
v0(s1)=v0(s2)=v0(s3)=v0(s4)=0,q-table如下:
Step1: Policy update:
π
1
(
a
5
∣
s
1
)
=
1
,
π
1
(
a
3
∣
s
2
)
=
1
,
π
1
(
a
2
∣
s
3
)
=
1
,
π
1
(
a
5
∣
s
4
)
=
1
\pi_1(a_5|s_1)=1, \pi_1(a_3|s_2)=1,\pi_1(a_2|s_3)=1, \pi_1(a_5|s_4)=1
π1(a5∣s1)=1,π1(a3∣s2)=1,π1(a2∣s3)=1,π1(a5∣s4)=1
策略更新如图(b)所示。
Step2:Value update
v
1
(
s
1
)
=
0
,
v
1
(
s
2
)
=
1
,
v
1
(
s
3
)
=
1
,
v
1
(
s
4
)
=
1
v_1(s_1)=0,v_1(s_2)=1,v_1(s_3)=1,v_1(s_4)=1
v1(s1)=0,v1(s2)=1,v1(s3)=1,v1(s4)=1
k=1:因为我们有
v
1
(
s
1
)
=
0
,
v
1
(
s
2
)
=
1
,
v
1
(
s
3
)
=
1
,
v
1
(
s
4
)
=
1
v_1(s_1)=0,v_1(s_2)=1,v_1(s_3)=1,v_1(s_4)=1
v1(s1)=0,v1(s2)=1,v1(s3)=1,v1(s4)=1,得到新的q-table:
Step1: Policy update
π
2
(
a
3
∣
s
1
)
=
1
,
π
2
(
a
3
∣
s
2
)
=
1
,
π
2
(
a
2
∣
s
3
)
=
1
,
π
2
(
a
5
∣
s
4
)
=
1
\pi_2(a_3|s_1)=1, \pi_2(a_3|s_2)=1,\pi_2(a_2|s_3)=1, \pi_2(a_5|s_4)=1
π2(a3∣s1)=1,π2(a3∣s2)=1,π2(a2∣s3)=1,π2(a5∣s4)=1
Step2: Value update
v
2
(
s
1
)
=
γ
1
,
v
2
(
s
2
)
=
1
+
γ
1
,
v
2
(
s
3
)
=
1
+
γ
1
,
v
2
(
s
4
)
=
1
+
γ
1
v_2(s_1)=\gamma 1,v_2(s_2)=1+\gamma 1,v_2(s_3)=1+\gamma 1,v_2(s_4)=1+\gamma 1
v2(s1)=γ1,v2(s2)=1+γ1,v2(s3)=1+γ1,v2(s4)=1+γ1
策略更新如图(c)
注意:当前策略已经是最优的。
k=2,3,…,当 ∣ ∣ v k − v k + 1 ∣ ∣ ||v_k-v_{k+1}|| ∣∣vk−vk+1∣∣小于一个预定义的阈值的时候停止。
2. 策略迭代算法(Policy iteration algorithm)
首先给出策略迭代算法的描述:
给定一个随机初始策略
π
0
\pi_0
π0,
Step1:策略评估(policy evaluation
, PE),这一步是计算
π
k
\pi_k
πk的state value
v
π
k
=
r
π
k
+
γ
P
π
k
v
π
k
v_{\pi_k}=r_{\pi_k}+\gamma P_{\pi_k}v_{\pi_k}
vπk=rπk+γPπkvπk
注意:
v
k
v_k
vk是一个state value function
Step2:策略改善(policy improvement
, PI)
π
k
+
1
=
a
r
g
max
π
(
r
π
+
γ
P
π
v
π
k
)
\pi_{k+1}=arg\max_{\pi} (r_\pi +\gamma P_{\pi}v_{\pi_k})
πk+1=argπmax(rπ+γPπvπk)
The maximization is componentwise!
算法流程:
相关问题:
问题1:在Policy evaluation步,如何通过求解贝尔曼公式得到state value
v
π
k
v_{\pi_k}
vπk?
v
π
k
=
r
π
k
+
γ
P
π
k
v
π
k
v_{\pi_k}=r_{\pi_k}+\gamma P_{\pi_k}v_{\pi_k}
vπk=rπk+γPπkvπk
- Closed-form Solution: v π k = ( I − γ P π k ) − 1 r π k v_{\pi_k}=(I-\gamma P_{\pi_k})^{-1}r_{\pi_k} vπk=(I−γPπk)−1rπk
- Iterative solution: v π k ( j + 1 ) = r π k + γ P π k v π k ( j ) , j = 0 , 1 , 2 , . . . v_{\pi_k}^{(j+1)}=r_{\pi_k}+\gamma P_{\pi_k}v_{\pi_k}^{(j)}, j=0,1,2,... vπk(j+1)=rπk+γPπkvπk(j),j=0,1,2,...
Policy iteration is an iterative algorithm with another iterative algorithm embedded in the policy evaluation step!
问题2:在Policy improvement步,为什么新的策略
π
k
+
1
\pi_{k+1}
πk+1比
π
k
\pi_k
πk好?
问题3:为什么iterative algorithm最终可以找到一个最优策略?
因为随着每次迭代,策略会逐步优化,即
v
π
0
≤
v
π
1
≤
v
π
2
≤
.
.
.
≤
v
π
k
≤
.
.
.
≤
v
∗
v_{\pi_0} \le v_{\pi_1} \le v_{\pi_2} \le ... \le v_{\pi_k} \le ... \le v^*
vπ0≤vπ1≤vπ2≤...≤vπk≤...≤v∗
其结果就是
v
π
k
v_{\pi_k}
vπk会不断增加,最终收敛,可以证明塔收敛到
v
∗
v^*
v∗。
问题4:策略迭代和值迭代之间有什么关系?
这个问题跟问题3中的策略迭代定理有关。
如何具体实现Policy iteration algorithm——Elementwise form?
Step1: Policy evaluation
- Matrix-vector form: v π k ( j + 1 ) = r π k + γ P π k v π k ( j ) , j = 0 , 1 , 2 , . . . v_{\pi_k}^{(j+1)}=r_{\pi_k}+\gamma P_{\pi_k}v_{\pi_k}^{(j)}, j=0,1,2,... vπk(j+1)=rπk+γPπkvπk(j),j=0,1,2,...
- Elementwise form:
当 j → ∞ or j j\rightarrow \infty \text { or } j j→∞ or j是足够大,或者 ∣ ∣ v π k ( j + 1 ) − v π k ( j ) ∣ ∣ ||v_{\pi_k}^{(j+1)}-v_{\pi_k}^{(j)}|| ∣∣vπk(j+1)−vπk(j)∣∣是足够小的时候停止。
Step2: Policy improvement
- Matrix-vector form: π k + 1 = a r g max π ( r π + γ P π v π k ) \pi_{k+1}=arg\max_{\pi}(r_\pi +\gamma P_\pi v_{\pi_k}) πk+1=argmaxπ(rπ+γPπvπk)
- Elementwise form
这里, q π k ( s , a ) q_{\pi_k}(s, a) qπk(s,a)是基于策略 π k \pi_k πk的action value。令 a k ∗ ( s ) = a r g max a q π k ( a , s ) a_k^*(s)=arg\max_a q_{\pi_k}(a, s) ak∗(s)=argamaxqπk(a,s)
那么,the greedy policy是 π k + 1 ( a ∣ s ) = { 1 a = a k ∗ ( s ) 0 a ≠ a k ∗ ( s ) \pi_{k+1}(a|s)=\begin{cases}1 & a=a_k^*(s) \\0 & a\ne a_k^*(s)\end{cases} πk+1(a∣s)={10a=ak∗(s)a=ak∗(s)
Policy iteration algorithm——Implementation
举个例子:
奖励设定(reward setting)是
r
b
o
u
n
d
a
r
y
=
−
1
r_{boundary}=-1
rboundary=−1且
r
t
a
r
g
e
t
=
1
r_{target}=1
rtarget=1,折扣率(discount rate)
γ
=
0.9
\gamma=0.9
γ=0.9
Action:
a
l
,
a
0
,
a
r
a_l, a_0, a_r
al,a0,ar分别表示向左,原地不动,向右
Aim:使用策略迭代找到最优策略
迭代轮数k=0:Step 1: policy evaluation
如图(a),
π
0
\pi_0
π0是初始策略。贝尔曼方程如下:
v
π
0
(
s
1
)
=
−
1
+
γ
v
π
0
(
s
1
)
v_{\pi_0}(s_1)=-1+\gamma v_{\pi_0}(s_1)
vπ0(s1)=−1+γvπ0(s1)
v
π
0
(
s
2
)
=
0
+
γ
v
π
0
(
s
1
)
v_{\pi_0}(s_2)=0+\gamma v_{\pi_0}(s_1)
vπ0(s2)=0+γvπ0(s1)
- 直接求解等式: v π 0 ( s 1 ) = − 10 , v π 0 ( s 2 ) = − 9 v_{\pi_0}(s_1)=-10, v_{\pi_0}(s_2)=-9 vπ0(s1)=−10,vπ0(s2)=−9
- 迭代求解等式。选择初始猜测为
v
π
0
(
0
)
(
s
1
)
=
v
π
0
(
0
)
(
s
2
)
=
0
v_{\pi_0}^{(0)}(s_1)=v_{\pi_0}^{(0)}(s_2)=0
vπ0(0)(s1)=vπ0(0)(s2)=0:
迭代轮数k=0:Step 2: policy improvement
q π k ( s , a ) q_{\pi_k}(s, a) qπk(s,a)的表示如下:
用 v π 0 ( s 1 ) = − 10 , v π 0 ( s 2 ) = − 9 v_{\pi_0}(s_1)=-10, v_{\pi_0}(s_2)=-9 vπ0(s1)=−10,vπ0(s2)=−9和 γ = 0.9 \gamma=0.9 γ=0.9带入之后,得到
通过选择 q π 0 q_{\pi_0} qπ0的最大值,the improved policy是: π 1 ( a r ∣ s 1 ) = 1 , π 1 ( a 0 ∣ s 2 ) = 1 \pi_1(a_r|s_1)=1, \pi_1(a_0|s_2)=1 π1(ar∣s1)=1,π1(a0∣s2)=1
经过一次迭代,策略被优化。在具体实现中,需要持续迭代过程直到某个评价标准被满足。
一个复杂的例子:令
r
b
o
u
n
d
a
r
y
=
−
1
,
r
f
o
r
b
i
d
d
e
n
=
−
10
r_{boundary}=-1, r_{forbidden}=-10
rboundary=−1,rforbidden=−10且
r
t
a
r
g
e
t
=
1
r_{target}=1
rtarget=1,折扣率(discount rate)
γ
=
0.9
\gamma=0.9
γ=0.9,可以检查这些中间策略和状态值。
可以发现,接近目标的状态策略是先变好,远离目标的状态策略会后变好。
3. Truncated policy iteration algorithm
首先,比较value iteration和policy iteration:
Policy Iteration: 从一个初始策略
π
0
\pi_0
π0开始:
Policy evaluation
(PE): v π k = r π k + γ P π k v π k v_{\pi_k}=r_{\pi_k}+\gamma P_{\pi_k}v_{\pi_k} vπk=rπk+γPπkvπkPolicy improvement
(PI): π k + 1 = a r g max π ( r π + γ P π v π k ) \pi_{k+1}=arg\max_{\pi} (r_\pi +\gamma P_{\pi}v_{\pi_k}) πk+1=argπmax(rπ+γPπvπk)
Value Iteration: 从一个值 v 0 v_0 v0开始:
Policy update
(PU): π k + 1 = a r g max π ( r π + γ P π v k ) \pi_{k+1}=arg\max_{\pi} (r_\pi +\gamma P_{\pi}v_{k}) πk+1=argπmax(rπ+γPπvk)Value update
(VU): v k + 1 = r π k + 1 + γ P π k + 1 v k v_{k+1}=r_{\pi_{k+1}}+\gamma P_{\pi_{k+1}}v_{k} vk+1=rπk+1+γPπk+1vk
然后,比较这两个算法的迭代流程:
然后,详细比较这两个算法的步骤:
- 它们从相同的初始条件出发
- 前三步是相同的
- 在第四步变得不同:
- 在policy iteration,求解 v π 1 = r π 1 + γ P π 1 v π 1 v_{\pi_1}=r_{\pi_1}+\gamma P_{\pi_1}v_{\pi_1} vπ1=rπ1+γPπ1vπ1需要一个迭代算法(无限数量的迭代)
- 在value iteration, v 1 = r π 1 + γ P π 1 v 0 v_1=r_{\pi_1}+\gamma P_{\pi_1}v_0 v1=rπ1+γPπ1v0,是一个one-step iteration。
考虑求解
v
π
1
=
r
π
1
+
γ
P
π
1
v
π
1
v_{\pi_1}=r_{\pi_1}+\gamma P_{\pi_1}v_{\pi_1}
vπ1=rπ1+γPπ1vπ1的步骤:
- value iteration algorithm计算one
- policy iteration algorithm计算an infinite number of iterations
- The truncated policy iteration algorithm计算a finite number of iterations(称为j)。剩下的从j到∞的迭代是truncated(截断)。
Truncated policy iteration——伪代码
问题1:是否这个截断(truncation)会削弱收敛(convergence)?
如下图所示:说明了value iteration,policy iteration和truncated policy iteration之间的关系。
举个例子:初始策略是每个状态都待在原地不动
定义
∣
∣
v
k
−
v
∗
∣
∣
||v_k-v^*||
∣∣vk−v∗∣∣是在时刻
k
k
k的state value error。停止标准是
∣
∣
v
k
−
v
∗
∣
∣
<
0.01
||v_k-v^*||<0.01
∣∣vk−v∗∣∣<0.01。仿真结果如下:
”Truncated-policy iteration-x“,其中x=1,3,4,100对应一个policy evalutaion step执行x次迭代的truncated policy iteration algorithm. 根据上图,结论是:
- 当x更大的时候,能够更快的收敛
- 但是当x继续增大,这种加快的速率会逐渐放慢
- 实际上,在policy evaluation step中执行一个很小的迭代次数
总结
- Value iteration: 是一个迭代算法,用于求解贝尔曼最优公式。给定一个初始值
v
0
v_0
v0,
- Policy iteration:给定一个初始策略
π
0
\pi_0
π0,
- Truncated policy iteration
内容来源
- 《强化学习的数学原理》 西湖大学 赵世钰教授
- 《动手学强化学习》 俞勇 著