值函数近似
前面我们一直假定强化学习任务是在有限状态空间上进行,值函数则使用有限状态的表来表示。然而,现实强化学习任务,所面临的状态空间往往是连续的,有无穷多个状态,显然无法用表格来记录。我们不妨直接学习连续状态空间的连续值函数。由于此时的值函数难以像有限状态那样精确记录每个状态的值,因此这样值函数的求解被称为值函数近似 (value function approximation)。
下面介绍一个简单的示例,它能帮助我们更加理解连续空间的强化学习过程。
路径寻找:如下图,在一个连续的平面世界中,包括平坦区域、草地和边界。状态空间是连续的 S=[0,6]×[0,6] ,但动作空间是离散的,仍然只有5种行走方向 A={↑,←,↓,→,↺}。如果Agent在平坦区域每单位路程奖励 -1 ;在草坪的每单位路程奖励 -2;在目标区域的奖励为 0。

From table to function
v^(s,w)≈vπ(s)
我们需要学习一个参数 w 来使得函数 v^(s,w) 可以逼近值函数 vπ(s) 。常用期望误差来作为损失函数:
J(w)=E[(v^(S,w)−vπ(S))2]
为了使误差最小化,采用梯度下降法
∇wJ(w)=E[2(v^(s,w)−vπ(s))∇wv^(s,w)]
于是可得到对于单个样本随机梯度下降的更新规则
wt+1=wt+α[vπ(st)−v^(st,wt)]∇wv^(st,wt)
我们并不知道策略的真实值函数 vπ。如果采用蒙特卡罗方法近似总回报 Gt
wt+1=wt+α[gt−v^(st,wt)]∇wv^(st,wt)
如果采用时序差分学习方法近似 Rt+1+γv(St+1)
wt+1=wt+α[rt+1+γv^(st+1,wt)−v^(st,wt)]∇wv^(st,wt)
注意:上式中看到了离散化的时刻,可看作 agent 与环境每隔 δt 时间交互一次。
线性函数:值函数一般采用线性函数估计
v^(s,w)=wTϕ(s)
例如在平面世界中估计值函数
v^(s,w)=ax+by+c=[abc]⎣⎡xy1⎦⎤
其中 ϕ(s)=[x,y,1]T 称为特征向量 (feature vector),w=[a,b,c] 称为参数向量 (parameter vector)。
线性函数使用SGD来更新参数时非常方便,梯度
∇wv^(s,w)=ϕ(s)
单个样本随机梯度下降
wt+1=wt+α[rt+1+γwtTϕ(st+1)−wtTϕ(st)]ϕ(st)
下面是基于线性值面数估计的例子
n-order多项式估计
Q-learning:TD 算法估计的是动作值函数
q^(s,a,w)≈qπ(s,a)
更新参数的一般形式是
wt+1=wt+α[rt+1+γa∈Amaxq^(st+1,a,wt)−q^(st,at,wt)]∇wq^(st,at,wt)
