Processing math: 100%

[RL Notes] 分幕式 Sarsa 的函数逼近

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)=10.7+10.3=1A(s)={a0,a0,a0}

  除了在线性方法中通过堆叠特征来表示动作价值,还可以通过神经网络为每一个动作输出一个值,此时神经网络的输入为状态 s,输出为每一个动作的动作价值,如 ˆq(s,a0,w),ˆq(s,a1,w),,ˆq(s,ad,w),如图 1 所示。

图 1

  注意图 1 在计算输出的动作价值时,每个动作其使用的权重都不相同。为了能在动作间进行泛化,可以同时将状态 s 和动作作 a 为网络的输入,网络输出一个值,即 ˆq(s,a,w),如图 2 所示。

图 2

2. 通过函数逼近进行 Sarsa 控制

  有了动作价值的表示之后,完整的分幕式半梯度 Sarsa 算法如下所示。


分幕式半梯度 Sarsa,用于估计 ˆqq
输入:一个参数化的可微动作价值函数 ˆq=S×A×RdR
算法参数:步长 α>0,很小的 εε>0
任意初始化价值函数的权值 wRd,比如 w=0
对每一幕循环:
  S,A 幕的初始状态和动作(如 ε-贪心策略)
  对该幕的每一步循环:
    采取动作 A,观察 R,S
    如果 S 为终止状态:
      ww+α[Rˆq(S,A,w)]ˆq(S,A,w)
      到下一幕
    通过 ˆq(S,,w) 选取 A(如 ε-贪心策略)
    ww+α[R+γˆq(S,A,w)ˆq(S,A,w)]ˆq(S,A,w)
    SS
    AA


3. 通过函数逼近进行期望 Sarsa 控制

  回顾 Sarsa 使用后继状态和动作的价值进行更新,其表格方法的更新为

Q(St,At)Q(St,At)+α[Rt+1+γQ(St+1,At+1)Q(St,At)]

函数逼近方法的更新为

ww+α[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 的函数逼近方法的更新

ww+α[Rt+1+γaπ(a|St+1)ˆq(St+1,a,w)ˆq(St,At,w)]ˆq(St,At,w)