上一篇讨论的批量式策略评估方法表明,只有当全部K个完整轨迹存储后才能对Q(s,a)进行一次估计。
这在实际中存在如下缺陷:
为克服批处理方法的缺陷,可以使用增量式方法估计 Q ( s , a ) Q(s,a) Q(s,a)
每当获得一个完整的轨迹后,就对行为值函数进行一次更新的方法
环境E、状态空间S、动作空间A,初始化行为值函数 Q ( s , a ) = 0 Q(s,a)=0 Q(s,a)=0,当前策略 π \pi π,步长 α ∈ ( 0 , 1 ) \alpha\in(0,1) α∈(0,1)
for k = 1…m do
\qquad
按照策略
π
\pi
π与E产生完整轨迹
[
(
s
0
,
a
0
,
r
1
)
,
(
s
1
,
a
1
,
r
2
)
,
.
.
.
,
(
s
T
,
a
T
,
r
T
+
1
)
]
[(s_0,a_0,r_1),(s_1,a_1,r_2),...,(s_T,a_T,r_{T+1})]
[(s0?,a0?,r1?),(s1?,a1?,r2?),...,(sT?,aT?,rT+1?)]
\qquad
for
i
=
1...
T
+
1
i = 1...T+1
i=1...T+1 do
r
i
←
G
i
=
∑
n
=
i
T
+
1
γ
n
?
i
r
i
\qquad\qquad r_i\leftarrow G_i=\sum_{n=i}^{T+1}\gamma^{n-i}r_i
ri?←Gi?=∑n=iT+1?γn?iri?
Q
(
s
i
,
a
i
)
←
Q
(
s
i
,
a
i
)
+
α
(
G
i
?
Q
(
s
i
,
a
i
)
)
\qquad\qquad Q(s_i,a_i)\leftarrow Q(s_i,a_i)+\alpha (G_i-Q(s_i,a_i))
Q(si?,ai?)←Q(si?,ai?)+α(Gi??Q(si?,ai?))
Q ( s , a ) Q(s,a) Q(s,a)