[RL Notes] 分幕式 Sarsa 的函数逼近
Contents [show]
1. 函数逼近中的动作价值
线性方法近似的价值函数为权重向量和特征向量的内积
vπ(s)≈ˆv(s,w)≐wTx
可以使用类似地形式估计动作价值函数,此时需要让特征能够表示动作,即
qπ(s,a)≈ˆq(s,a,w)≐wTx(s,a)
构造特征来表示动作的方法之一是让每个动作使用相同的状态特征,然后将这些状态的特征堆叠起来。例如现有 4 个特征和 3 个动作
x=[x0(s)x1(s)x2(s)x3(s)]A(s)={a0,a0,a0}
则构造的状态动作特征为
x(s,a)=[x0(s)x1(s)x2(s)x3(s)x0(s)x1(s)x2(s)x3(s)x0(s)x1(s)x2(s)x3(s)]
x(s,a) 将 4 个状态的特征重复堆叠了 3 组,每一组对应一个动作。当一个动作发生时,只有该动作对应的状态特征被激活,其他状态特征置 0。例如选择动作 a0 时,有
x(s,a0)=[x0(s)x1(s)x2(s)x3(s)00000000]
举例来说,给定 x(s0) 和 w,计算 ˆq(s0,a0,w) 的过程如下。
x(s0)=[1001]w=[0.70.10.40.32.21.00.61.81.31.10.91.7]x(s0,a0)=[100100000000]ˆq(s0,a0,w)=1∗0.7+1∗0.3=1A(s)={a0,a0,a0}
除了在线性方法中通过堆叠特征来表示动作价值,还可以通过神经网络为每一个动作输出一个值,此时神经网络的输入为状态 s,输出为每一个动作的动作价值,如 ˆq(s,a0,w),ˆq(s,a1,w),⋯,ˆq(s,ad,w),如图 1 所示。
注意图 1 在计算输出的动作价值时,每个动作其使用的权重都不相同。为了能在动作间进行泛化,可以同时将状态 s 和动作作 a 为网络的输入,网络输出一个值,即 ˆq(s,a,w),如图 2 所示。
2. 通过函数逼近进行 Sarsa 控制
有了动作价值的表示之后,完整的分幕式半梯度 Sarsa 算法如下所示。
分幕式半梯度 Sarsa,用于估计 ˆq≈q
输入:一个参数化的可微动作价值函数 ˆq=S×A×Rd→R
算法参数:步长 α>0,很小的 ε,ε>0
任意初始化价值函数的权值 w∈Rd,比如 w=0
对每一幕循环:
S,A← 幕的初始状态和动作(如 ε-贪心策略)
对该幕的每一步循环:
采取动作 A,观察 R,S′
如果 S′ 为终止状态:
w←w+α[R–ˆq(S,A,w)]∇ˆq(S,A,w)
到下一幕
通过 ˆq(S′,⋅,w) 选取 A′(如 ε-贪心策略)
w←w+α[R+γˆq(S′,A′,w)–ˆq(S,A,w)]∇ˆq(S,A,w)
S←S′
A←A′
3. 通过函数逼近进行期望 Sarsa 控制
回顾 Sarsa 使用后继状态和动作的价值进行更新,其表格方法的更新为
Q(St,At)←Q(St,At)+α[Rt+1+γQ(St+1,At+1)–Q(St,At)]
函数逼近方法的更新为
w←w+α[Rt+1+γˆq(St+1,At+1,w)–ˆq(St,At,w)]∇ˆq(St,At,w)
期望 Sarsa 使用当前策略下的期望价值进行更新,其表格方法的更新为
Q(St,At)←Q(St,At)+α[Rt+1+γ∑aπ(a|St+1)Q(St+1,a)–Q(St,At)]
在函数逼近方法中计算式 (5) 中的期望,可以得到期望 Sarsa 的函数逼近方法的更新
w←w+α[Rt+1+γ∑a′π(a′|St+1)ˆq(St+1,a′,w)–ˆq(St,At,w)]∇ˆq(St,At,w)