下面我们简单讨论下强化学习中的函数估计问题,这里对于强化学习的基本原理、常见算法以及凸优化的数学基础不作讨论。假设你对强化学习(Reinforcement Learning)有最基本的了解。
概述
对于状态空间为连续空间的强化学习问题,我们需要利用函数估计的方法表示各种映射关系。函数估计方法可分为参数估计和非参数估计,其中参数化估计又分为线性参数化估计和非线性参数化估计。本文中我们主要讨论参数化估计。对于基础较薄弱读者,可以参考这篇更基础的文章。
价值函数估计
价值函数估计的过程可以看作是一个监督学习的过程,其中数据和标签对为 (St,Ut) ( S t , U t ) 。训练的目标函数为:
argminθ(q(s,a)−q^(s,a,θ))orargminθ(v(s)−v^(s,θ)) arg min θ ( q ( s , a ) − q ^ ( s , a , θ ) ) or arg min θ ( v ( s ) − v ^ ( s , θ ) )
增量式/梯度下降方法
梯度下降的基本原理可以参考凸优化问题中的无约束规划方法。这里我们要求估计偏差最小,因此采用梯度下降方法:
θt+1=θt+αdt θ t + 1 = θ t + α d t
这里
dt d t
是偏差下降的方向,此处应为
−∇θ(Ut−v^(St,θt)) − ∇ θ ( U t − v ^ ( S t , θ t ) )
即负梯度方向。代入上式可得:
θt+1=θt+α[Ut−v^(St,θt)]∇θv^(St,θ) θ t + 1 = θ t + α [ U t − v ^ ( S t , θ t ) ] ∇ θ v ^ ( S t , θ )
注意此处
Ut U t
与
θ θ
无关,但情况并非总是这样。如果采用蒙特卡罗方法对实验进行采样,即
Ut=Gt U t = G t
时,上述公式直接成立;但如果采样
TD(0) T D ( 0 )
方法采样,由于用到了 bootstrapping,即
Ut=Rt+1+γv^(St+1,θ) U t = R t + 1 + γ v ^ ( S t + 1 , θ )
,
Ut U t
中也包含
θ θ
。 使用上式忽略了这个影响,因此被称为
部分梯度(semi-gradient)法。
下面讨论线性估计问题,即 v^(s,θ)=θTϕ(s) v ^ ( s , θ ) = θ T ϕ ( s ) 。常用的线性基函数类型如下:
- 多项式基函数: (1,s1,s2,s1s2,s21,s22,…) ( 1 , s 1 , s 2 , s 1 s 2 , s 1 2 , s 2 2 , … )
- 傅里叶基函数: ϕi(s)=cos(iπs),s∈[0,1] ϕ i ( s ) = cos ( i π s ) , s ∈ [ 0 , 1 ]
- 径向基函数: ϕi(s)=exp(−∥s−ci∥22σ2i) ϕ i ( s ) = exp ( − ‖ s − c i ‖ 2 2 σ i 2 )
不同的更新公式如下:
- 蒙特卡罗方法: Δθ=α[Gt−θTϕ(s)]ϕ(s) Δ θ = α [ G t − θ T ϕ ( s ) ] ϕ ( s )
- TD(0) T D ( 0 ) 方法: Δθ=α[R+γθTϕ(s′)−θTϕ(s)]ϕ(s) Δ θ = α [ R + γ θ T ϕ ( s ′ ) − θ T ϕ ( s ) ] ϕ ( s )
- 正向视角的 TD(λ) T D ( λ ) 方法: Δθ=α[Gλt−θTϕ(s)]ϕ(s) Δ θ = α [ G t λ − θ T ϕ ( s ) ] ϕ ( s )
- 反向视角的 TD(λ) T D ( λ ) 方法:
δtEtΔθ=Rt+1+γθTϕ(s′)−θTϕ(s)=γλEt−1+ϕ(s)=αδtEt δ t = R t + 1 + γ θ T ϕ ( s ′ ) − θ T ϕ ( s ) E t = γ λ E t − 1 + ϕ ( s ) Δ θ = α δ t E t
关于这些更新方法的具体含义可以参考这篇文章。
批处理方法
批处理方法的计算比较复杂,但是计算效率高。批处理方法是指给定经验数据集 D={ (s1,vπ1),(s2,vπ2),…,(sT,vπT)} D = { ( s 1 , v 1 π ) , ( s 2 , v 2 π ) , … , ( s T , v T π ) } ,找到最好的拟合函数 v^(s,θ) v ^ ( s , θ ) 使得