基于值函数逼近的强化学习方法

强化学习的基本方法有:

(1)基于动态规划的方法(模型已知)
(2)基于蒙特卡罗的方法(模型未知)
(3)基于时间差分的方法(模型未知)

但是, 这些方法有一个基本的前提条件: 状态空间和动作空间是离散的,并且且状态空间和动作空间不能太大。

这些强化学习方法的基本步骤是:
先评估值函数,再利用值函数改善当 前的策略。其中值函数的评估是关键。

注意, 这时的值函数其实是一个表格。对于状态值函数,其索引是状态;对于行为值函数,其索引是状态-行为对。值函数的迭代更新实际上就 是这张表的迭代更新。因此,之前讲的强化学习算法又称为表格型强化学习。

对于状态值函数,其表格的维数为状态的个数 |S|,其中 S为状态空间。若状态空间的维数很大,或者状态空间为连续空间,此时值函数无法用一张表格来表示。这时,我们需要利用函数逼近的方法对值函数进行表示。

值函数可以采用线性逼近的方式,也可采用非线性逼近。非线性逼近常用的是神经网络。

下面仅讨论线性逼近:
v ^ ( s , θ ) = θ T ϕ ( s ) \hat{v}(s, \theta)=\theta^{T} \phi(s) v^(s,θ)=θTϕ(s)
这里 θ T \theta^{T} θT是我们需要寻找的最优参数, ϕ ( s ) \phi(s) ϕ(s)是我们所选的基函数

相比于非线性逼近,线性逼近的好处是只有一个最优值,因此可以收敛到全局最优。其中 ϕ ( s ) \phi(s) ϕ(s)为状态s处的特征函数,或者称为基函数。

常用的基函数的类型为:

多项式基函数,如 ( 1 , s 1 , s 2 , s 1 s 2 , s 1 2 , s 2 2 , ⋯   ) \left(1, s_{1}, s_{2}, s_{1} s_{2}, s_{1}^{2}, s_{2}^{2}, \cdots\right) (1,s1,s2,s1s2,s12,s22,)
傅里叶基函数,如 ϕ i ( s ) = cos ⁡ ( 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 ) = exp ⁡ ( − ∥ s − c i ∥ 2 2 σ i 2 ) \phi_{i}(s)=\exp \left(-\frac{\left\|s-c_{i}\right\|^{2}}{2 \sigma_{i}^{2}}\right) ϕi(s)=exp(2σi2sci2)

当值函数利用函数逼近的方法表示后,可以利用策略迭代和值迭代方法构建强化学习算法。


在表格型强化学习中,值函数对应着一张表。在值函数逼近方法中,值函数对应着一个逼近函数 υ ^ ( s ) \hat{\upsilon}\left(s\right) υ^(s) 。从数学角度来看,函数逼近方法可以分为参数逼近和非参数逼近,因此强化学习值函数估计可以分为参数化逼近和非参数化逼近。其中参数化逼近又分为线性参数化逼近和非线性化参数逼近。

在这里,我们主要介绍参数化逼近。所谓参数化逼近,是指值函数可以由一组参数 Θ \Theta Θ 来近似。我们将逼近的值函数写为: v ^ ( s , θ ) \hat{v}(s, \theta) v^(s,θ)

当逼近的值函数结构确定时,(如线性逼近时选定了 基函数 ,非线性逼近时选定了神经网络的结构),那么值函数的逼近就等价于参数的逼近。值函数的更新也就等价于参数的更新。也就是说,我们需要利用试验数据来更新参数值。如何利用数据更新参数值呢?也就是说如何从数据中学到参数值呢?


在表格型强化学习的函数中,值函数更新过程是向着目标

将表格型强化学习值函数的更新过程推广到值函数逼近过程,有如下形式:

函数逼近 v ^ ( s , θ ) \hat{v}(s, \theta) v^(s,θ)的过程是一个监督学习的过程,其数据和标签对为: ( S t , U t ) \left(S_{t}, U_{t}\right) (St,Ut)
引申一下:
在Q-learning中,值函数的更新为:

Q ( s t , a t ) ← Q ( s t , a t ) ⏟ old value + α ∗ [ r ( s t , a t ) ⏟ reward + γ ∗ max ⁡ a Q ( s t + 1 , a ) ) ⏟ max future value  − Q ( s t , a t ) ] ⏞ old value  \begin{aligned} Q\left(s_{t}, a_{t}\right) \leftarrow & \underbrace{Q\left(s_{t}, a_{t}\right)}_{\text {old value}} \\ +\alpha * & \underbrace{\left[r\left(s_{t}, a_{t}\right)\right.}_{\text {reward}}+\gamma * \underbrace{\left.\max _{a} Q\left(s_{t+1}, a\right)\right)}_{\text {max future value }}-\overbrace{\left.Q\left(s_{t}, a_{t}\right)\right]}^{\text {old value }} \\ \end{aligned} Q(st,at)+αold value Q(st,at)reward [r(st,at)+γmax future value  amaxQ(st+1,a))Q(st,at)] old value 
但是,在这里,我们更新的是参数 θ \theta θ

训练的目标函数为:
argmin ⁡ θ ( q ( s , a ) − q ^ ( s , a , θ ) ) 2 \operatorname{argmin}_{\theta}(q(s, a)-\hat{q}(s, a, \theta))^{2} argminθ(q(s,a)q^(s,a,θ))2

现在我们比较一下表格型强化学习和函数逼近方法的强化学习值函数更新时的异同点:

(1) 表格型强化学习进行值函数更新时,只有当前状态 S t S_{t} St处的值函数在改变,其他地方的值函数不发生改变。

(2) 值函数逼近方法进行值函数更新时,因此更新的是参数 θ \theta θ,而估计的值函数为 v ^ ( s , θ ) \hat{v}(s, \theta) v^(s,θ),所以当参数 θ \theta θ发生改变时,任意状态处的值函数都会发生改变。

学习链接:


强化学习入门 第五讲 值函数逼近

强化学习:函数逼近思想


你可能感兴趣的:(强化学习,值函数逼近,强化学习方法)