【强化学习笔记】6.1 基于值函数逼近的强化学习方法

值函数

动态规划,蒙特卡洛和时间差分的强化学习,均遵循基本的步骤:先评估值函数,然后根据值函数改进策略。之前介绍的方法也有一个前提条件即状态和行为是离散的,状态空间和行为空间有限,状态值函数为一个索引,状态-行为值函数为二维表格,因此也被成为表格型强化学习。

如果状态或者状态-行为的维度多大,比如状态为连续空间,那么就需要考虑逼近值函数了,之后仍然采用策略迭代或者值迭代的方法进行强化学习。

逼近值函数的话,那么就是监督学习了,需要确定学习的目标。重新看一下蒙特卡洛和时间差分法的公式:
蒙特卡洛方法: ν ( s t ) = ν ( s t ) + α ( G t − ν ( s t ) ) \nu(s_t)= \nu(s_t) + \alpha \big(G_t - \nu(s_t)\big) ν(st)=ν(st)+α(Gtν(st))
时间差分法: ν ( s t ) = ν ( s t ) + α ( R t + 1 + γ ν ( s t + 1 ) − ν ( s t ) ) \nu(s_t)= \nu(s_t) + \alpha \big(R_{t+1} + \gamma \nu(s_{t+1}) - \nu(s_t)\big) ν(st)=ν(st)+α(Rt+1+γν(st+1)ν(st))
迭代过程都是朝着一个目标更新的,在蒙特卡洛方法中是 G t G_t Gt,在时间差分法中是 R t + 1 + γ v ( s t + 1 ) R_{t+1} + \gamma v(s_{t+1}) Rt+1+γv(st+1). 因此逼近值函数的输入输出数据对就是 < S t , U t > <S_t, U_t> <St,Ut>,对应训练的目标函数是:
a r g m i n θ ( U t − ν ^ ( S t , θ ) ) 2 arg min_{\theta} \big( U_t - \hat{\nu}(S_t, \theta) \big)^2 argminθ(Utν^(St,θ))2

线性逼近

ν ^ ( s , θ ) = θ T ϕ ( s ) \hat{\nu}(s, \theta) = \theta^T \phi(s) ν^(s,θ)=θTϕ(s),其中 ϕ ( s ) \phi(s) ϕ(s)为基函数
常用的基函数有:
多项式函数,如 ( 1 , s 1 , s 2 , s 1 s 2 , s 1 2 , s 2 2 , . . . . ) \big(1, s_1, s_2, s_1s_2, s_1^2, s_2^2,....) (1,s1,s2,s1s2,s12,s22,....)
傅里叶函数,如 ϕ i ( s ) = c o s ( i π s ) , s ∈ [ 0 , 1 ] \phi_i(s)=cos(i\pi s),s \in [0,1] ϕi(s)=cos(iπs),s[0,1]
径向基函数,如 ϕ i ( s ) = e x p ( − ∣ ∣ s − c i ∣ ∣ 2 2 σ i 2 ) , s ∈ [ 0 , 1 ] \phi_i(s)=exp \big(-\frac{||s-c_i||^2}{2\sigma_i^2} \big),s \in [0,1] ϕi(s)=exp(2σi2sci2),s[0,1]
代码实现见【强化学习笔记】6.2 基于值函数逼近的强化学习方法-蒙特卡洛线性逼近代码实现
代码实现见【强化学习笔记】6.3 基于值函数逼近的强化学习方法-TD Sarsa算法线性逼近代码实现
代码实现见【强化学习笔记】6.4 基于值函数逼近的强化学习方法-TD Q-learning线性逼近代码实现

非线性逼近

常用神经网络等。
代码实现见【强化学习笔记】6.5 基于值函数逼近的强化学习方法-TD Q-learning非线性逼近代码实现

增量式学习方法

随机梯度法(SDG)是常用的增量式学习方法。参数更新的方式为:
θ t + 1 = θ t + α [ U t − ν ^ ( S t , θ ) ] ∇ θ ν ^ ( S t , θ ) \theta_{t+1} = \theta_t + \alpha \big[U_t - \hat{\nu}(S_t, \theta) \big] \nabla_{\theta} \hat{\nu}(S_t, \theta) θt+1=θt+α[Utν^(St,θ)]θν^(St,θ)

对于蒙特卡洛方法, θ t + 1 = θ t + α [ G t − ν ^ ( S t , θ ) ] ∇ θ ν ^ ( S t , θ ) \theta_{t+1} = \theta_t + \alpha \big[G_t - \hat{\nu}(S_t, \theta) \big] \nabla_{\theta} \hat{\nu}(S_t, \theta) θt+1=θt+α[Gtν^(St,θ)]θν^(St,θ)
对于时间差分方法, θ t + 1 = θ t + α [ R t + 1 + γ ν ^ ( S t + 1 , θ ) − ν ^ ( S t , θ ) ] ∇ θ ν ^ ( S t , θ ) \theta_{t+1} = \theta_t + \alpha \big[R_{t+1} + \gamma \hat{\nu}(S_{t+1}, \theta)- \hat{\nu}(S_t, \theta) \big] \nabla_{\theta} \hat{\nu}(S_t, \theta) θt+1=θt+α[Rt+1+γν^(St+1,θ)ν^(St,θ)]θν^(St,θ)
注意在时间差分法中目标值中也含有参数 θ \theta θ,在这里忽略其影响,这种方法称之为半梯度方法。
当采用线性逼近函数 ν ^ ( s , θ ) = θ T ϕ ( s ) \hat{\nu}(s, \theta) = \theta^T \phi(s) ν^(s,θ)=θTϕ(s)时, ν ^ ( S t , θ ) = ϕ ( S t ) \hat{\nu}(S_t, \theta)=\phi(S_t) ν^(St,θ)=ϕ(St)

增量式学习方法

可以提高计算效率,但是计算复杂。相关知识可以参看机器学习,不再赘述。

参考书籍:

  1. 深入浅出强化学习原理入门

欢迎关注微信公众号:AITBOOK
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值