上一篇讨论的批量式策略评估方法表明,只有当全部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)