下面我们简单讨论下强化学习中的函数估计问题,这里对于强化学习的基本原理、常见算法以及凸优化的数学基础不作讨论。假设你对强化学习(Reinforcement Learning)有最基本的了解。
概述
对于状态空间为连续空间的强化学习问题,我们需要利用函数估计的方法表示各种映射关系。函数估计方法可分为参数估计和非参数估计,其中参数化估计又分为线性参数化估计和非线性参数化估计。本文中我们主要讨论参数化估计。对于基础较薄弱读者,可以参考这篇更基础的文章。
价值函数估计
价值函数估计的过程可以看作是一个监督学习的过程,其中数据和标签对为
(St,Ut)
。训练的目标函数为:
argminθ(q(s,a)−q^(s,a,θ))orargminθ(v(s)−v^(s,θ))
增量式/梯度下降方法
梯度下降的基本原理可以参考凸优化问题中的无约束规划方法。这里我们要求估计偏差最小,因此采用梯度下降方法:
θt+1=θt+αdt
这里
dt
是偏差下降的方向,此处应为
−∇θ(Ut−v^(St,θt))
即负梯度方向。代入上式可得:
θt+1=θt+α[Ut−v^(St,θt)]∇θv^(St,θ)
注意此处
Ut
与
θ
无关,但情况并非总是这样。如果采用蒙特卡罗方法对实验进行采样,即
Ut=Gt
时,上述公式直接成立;但如果采样
TD(0)
方法采样,由于用到了 bootstrapping,即
Ut=Rt+1+γv^(St+1,θ)
,
Ut
中也包含
θ
。 使用上式忽略了这个影响,因此被称为
部分梯度(semi-gradient)法。
下面讨论线性估计问题,即
v^(s,θ)=θTϕ(s)
。常用的线性基函数类型如下:
- 多项式基函数:
(1,s1,s2,s1s2,s21,s22,…)
- 傅里叶基函数:
ϕi(s)=cos(iπs),s∈[0,1]
- 径向基函数:
ϕi(s)=exp(−∥s−ci∥22σ2i)
不同的更新公式如下:
- 蒙特卡罗方法:
Δθ=α[Gt−θTϕ(s)]ϕ(s)
-
TD(0)
方法:
Δθ=α[R+γθTϕ(s′)−θTϕ(s)]ϕ(s)
- 正向视角的
TD(λ)
方法:
Δθ=α[Gλt−θTϕ(s)]ϕ(s)
- 反向视角的
TD(λ)
方法:
δtEtΔθ=Rt+1+γθTϕ(s′)−θTϕ(s)=γλEt−1+ϕ(s)=αδtEt
关于这些更新方法的具体含义可以参考这篇文章。
批处理方法
批处理方法的计算比较复杂,但是计算效率高。批处理方法是指给定经验数据集
D={(s1,vπ1),(s2,vπ2),…,(sT,vπT)}
,找到最好的拟合函数
v^(s,θ)
使得
LS(θ)=∑Tt=1(vπt−v^πt(st,θ))2
最小(此处为最小二乘)。此处我们不做详细介绍。
深度强化学习浅析(DQN)
这里介绍的 DQN 就是 DeepMind 发表在 Nature 上的一篇论文:
Human-level Control through Deep Reinforcement Learning
DQN 技术是 Q-Learning 算法的一种变体,具体改变的是以下三个方面:
- DQN 利用深度卷积神经网络估计值函数;
- DQN 利用经验回放进行学习;
- DQN 独立设置了目标网络来单独处理时间差分算法中的 TD 偏差。
由于训练神经网络时,存在的假设是训练数据是独立同分布的,而通过强化学习采集的数据之间总是存在着关联性,易造成神经网络不稳定。经验回放技术可以打破数据间的关联。独立的目标网络使用
θ¯
而不是
θ
来计算
TD
偏差,这样做也为了打破关联性。DQN的算法伪代码如下:
- Initialize replay memory
D
to capacity
N
- Initialize
Q
-function with ramdom weights
θ
- Initialize target
Q
-function with weights
θ¯=θ
- For
episode=1,M
do
- Initalize sequence
s1={x1}
and preprocessed sequence
ϕ1=ϕ(s1)
- For
t=1,T
do
- Select action
at
, then observe reward
rt
and image
xt+1
- Processed
ϕt+1=ϕ(xt+1)
and store transition
(ϕt,at,rt,ϕt+1)
in
D
- Sample minibatch of transitions
(ϕj,aj,rj,ϕj+1)
from
D
- Set
yj={rj,rj+γmaxa′Q(ϕj+1,a′,θ¯), if episode terminates at step j+1 otherwise
- Perform a gradient descent step on
(yj−Q(ϕj,aj,θ))
w.r.t. network parameter
θ
- Every
C
steps reset
θ¯=θ
- End for
- End for
其中第5行通过预处理得到状态对应的特征输入。
Double DQN
DQN无法克服 Q-Learning 本身固有的过估计问题,原因是其中的最大化操作。Double Q-Learning 将动作的选择和动作的评估分别用不同的值函数来实现,可以缓解此问题。
在 Double Q-Learning 中,
Yt=Rt+1+γQ(St+1,argmaxaQ(St+1,a,θt),θ′t)
将该思想运动到 DQN 中,得到 Double DQN,其
TD
目标为:
YDQNt=Rt+1+γQ(St+1,argmaxaQ(St+1,a,θt),θ¯t)
带有优先回放的Double DQN( Prioritized Replay )
这里仅讨论优先回放思想,不给出具体算法。在DQN中,选取训练集合的方法是均匀采样,然而并非所有数据集的效率一致。某些状态的学习效率远比其他状态高。优先回放的接班思想就是赋予学习效率高的状态以更大的采样权重。
那么如何选择采样权重呢?一个选择是
TD
偏差
δ
。例如:我们设样本
i
处的
TD
偏差为
δ
, 则该处的采样概率为
Pi=pαi∑kpαk
其中
pi=|δi|+ϵ
或者
pi=1rank(i)
。
|rank(i)|
根据
|δi|
排序得到。
采用优先回放的概率分布采样时,动作值的估计是一个有偏估计。因为采样分布于动作值函数分布完全不同,为了矫正这个偏差,我们需要乘以一个重要性采样系数
ωi=(1N⋅1Pi)β
。
Dueling DQN
Dueling DQN 从网络结构上改进了 DQN。动作值函数可以被分解为状态值函数和优势函数,即:
Qπ(s,a)=Vπ(s)+Aπ(s,a)
这也是为了消除训练数据的关联性,此处不做具体讨论。
非参数化估计方法
除了参数化方法之外,价值函数估计还有非参数化方法。非参数化函数估计指参数的个数和基底形式并非固定,由样本决定的估计方法。例如基于核函数的方法和基于高斯过程的方法。此处不做细致介绍,有兴趣可以参考如下书籍:
李航. 统计学习方法[M]. 清华大学出版社,2012.
Rasmussen C E, Williams C K I. Gaussian Processes for Machine Learning (Adaptive Computation and Machine Learning)[M]. The MIT Press, 2005.
直接策略搜索
基于价值函数的方法往往适用于有限的状态空间集合。策略搜索是将策略参数化,即
πθ(s)
,寻找最优的参数
θ
,使强化学习目标——累计回报的期望最大。这里不介绍过多细节,有兴趣的读者可以参考这篇更具体的文章。
无模型的策略搜索
随机策略
REINFORCE
随机策略搜索法最典型的算法是 REINFORCE 这里不给出具体算法,只推导基本原理。
我们用
τ
表示一组状态-行为序列
s0,u0,…,sH,uH
,用符号
R(τ)=∑Ht=0R(st,ut)
表示轨迹
τ
的回报,
P(τ,θ)
表示轨迹
τ
出现的概率,此时直接策略搜索的目标可以表示为:
U(θ)=∑τP(τ,θ)R(τ)
此时强化学习的目标是找到最优参数
θ
使得
maxθU(θ)=maxθ∑τP(τ,θ)R(τ)
此时搜索问题转化为优化问题,下面我们采用
最速下降法求解(这里其实是上升)。
θt+1=θt+α∇θU(θ)
下面研究如何求
∇θU(θ)
:
∇θU(θ)=∇θ∑τP(τ,θ)R(τ)=∑τ∇θP(τ,θ)R(τ)=∑τP(τ,θ)∇θP(τ,θ)P(τ,θ)R(τ)=∑τP(τ,θ)∇θlogP(τ,θ)R(τ)
这样一来求
∇θU(θ)
变成了估计
∇θlogP(τ,θ)R(τ)
的期望。这可以利用经验平均,即利用
m
条轨迹的经验计算平均值来估计:
∇θU(θ)≈1m∑i=1m∇θlogP(τi,θ)R(τi)
下面再研究如何估计
∇θlogP(τ,θ)
:
∇θlogP(τ,θ)=∇θlog[∏t=0HP(st+1|st,ut)⋅πθ(ut|st)]=∇θ[∑t=0HlogP(st+1|st,ut)+∑t=0Hlogπθ(ut|st)]=∇θ∑t=0Hlogπθ(ut|st)=∑t=0H∇θlogπθ(ut|st)
到这一步可以看出,似然概率
P
的梯度变化仅与策略
πθ
有关,与环境本身的动力学模型无关,这个结果被称为
策略梯度定理。因此:
∇θU(θ)≈1m∑i=1m∑t=0H∇θlogπθ(u(i)t|s(i)t)R(τ(i)i)
这个估计是无偏的,但是方差很大。我们可以在回报中引入常数基线
b
来减小方差:
∇θU(θ)≈1m∑i=1m∇θlogP(τ(i),θ)(R(τ(i))−b)=1m∑i=1m∑t=0H∇θlogπθ(u(i)t|s(i)t)(R(τ(i)i)−b)
两个估计等价,证明很简单,此处从略。
G(PO)MDP
从之前的讨论中可以看出,每个动作
u(i)t
所对应的
∇θlogπθ(u(i)t|s(i)t)
都乘以相同的轨迹总回报
(R(τ(i)i)−b)
。然而,当前的动作与过去的回报实际上没有关系。因此,我们可以修改回报函数,有一种方法称为 G(PO)MDP:
∇θU(θ)≈1m∑i=1m∑j=0H−1∑t=0j∇θlogπθ(u(i)t|s(i)t)(rj−bj)
TRPO
策略梯度算法的硬伤就是更新步长
α
的取法问题,当步长不合适时,更新的参数所对应的策略可能是一个更不好的策略。TRPO(Trust Region Policy Optimization)证明解决了此问题,使得当策略更新后,回报函数的值不能更差。TRPO的具体介绍请参考此文。
Actor-Critic
异策略(off-policy)是指行动策略和评估测录不是同一个策略。AC框架是一种实现异策略强化学习的典型框架。
关于Actor-Critic 框架的具体讨论请参考此文。
确定性策略
2014年,Silver 在论文
Deterministic Policy Gradient Algorithm
中首次提出了确定性策略理论。2015年 DeepMind 将该理论与 DQN 结合,在论文
Continuous Control with Deep Reinforcement Learning
中提到了DDPG算法。
确定性策略的公式如下:
a=μθ(s)
和随机策略不同,相同的策略参数,在状态为
s
时,动作是唯一确定的。确定性策略的优点在于
需要采样的数据少,算法效率高。随机策略的梯度计算公式:
∇θJ(πθ)=Es∼ρπ,a∼πθ[∇θlogπθ(a|s)Qπ(s,a)]
此式表明,策略梯度公式是关于状态和动作的期望,在求期望时,需要对状态分布和动作分布求积分,这就要求在状态空间和动作空间采集大量的样本,这样求均值才能近似期望。然而,确定性策略的动作是确定的,因此不需要再动作空间采样积分,所以确定性策略需要的样本数据更小。确定性策略梯度如下:
∇θJ(μθ)=Es∼ρμ[∇θμθ(s)∇aQμ(s,a)|a=μθ(s)]
DPG 与 DDPG
言归正传,确定性策略动作是确定的,无法探索环境,那么如何学习呢?答案就是利用异策略方法,这里采用AC框架。AC算法包含两个同等地位的元素,一个是 Actor 即行动策略,另一个是 Critic 即评估策略,这里指的是利用函数逼近的方法估计值函数。Actor 方法用来调整
θ
值;Critic 方法逼近值函数
Qω(s,a)≈Qπ(s,a)
,其中
ω
为待逼近的参数,可用 TD 学习的方法评估值函数。
异策略随机策略梯度为
∇θJ(πθ)=Es∼ρπ,a∼πθ[πθ(a|s)βθ(a|s)∇θlogπθ(a|s)Qπ(s,a)]
采样策略为
β
。
异策略确定性策略梯度为:
∇θJβ(μθ)=Es∼ρβ[∇θμθ(s)∇aQμ(s,a)|a=μθ(s)]
对比上述两式不难发现,确定性策略梯度求解少了重要性权重。这是因为重要性采样是用简单的概率分布去估计复杂的概率分布,而确定性策略的动作为确定值而不是概率分布;此外,确定性策略的值函数评估用的是 Q-Learning 方法,即 TD(0)。有了上式,确定性异策略AC算法的更新过程如下:
δtωt+1θt+1=rt+γQω(st+1,μθ(st+1))−Qω(st,at)=ωt+αωδt∇ωQω(st,at)=θt+αθ∇θμθ(st)∇aQω(st,at)|a=μθ(s)
以上介绍的是 Deterministic Policy Gradient 方法,简称 DPG。
有了 DPG,我们再看 DDPG,即Deep Determinstic Policy Gradient。这里所谓的深度是指利用神经网络估计行为值函数
Qω(st,at)
和确定策略
μθ(s)
。如前介绍DQN时所说,这里用了两个技巧:经验回放和独立的目标网络。此处不再重复。这里需要修改的是对
ω
和
θ
利用独立的网络进行更新。DDPG的更新公式为:
δtωt+1θt+1θ−ω−=rt+γQω−(st+1,μθ−(st+1))−Qω(st,at)=ωt+αωδt∇ωQω(st,at)=θt+αθ∇θμθ(st)∇aQω(st,at)|a=μθ(s)=τθ+(1−τ)θ−=τω+(1−τ)ω−
基于模型的策略搜索
无模型强化学习算法有很多优点,比如无需环境建模。但是因为没有模型,无模型方法必须不断试探环境,效率低下。解决该问题的方法是利用模型探索。例如有了模型之后,可以利用基于模型的优化方法得到好的数据,并稳定训练策略网络;而且,有了模型我们可以充分利用示教(Demonstration)数据学习。
GPS
引导策略搜索方法(Guided Policy Search)最早见于2015年 Sergey Levine 的博士论文
Levine S, “Motor skill learning with local trajectory methods,” PhD thesis, Stanford University, 2014.
GPS将策略搜索分为两步:控制相和监督相。控制相通过轨迹最优、传统控制器或随机最优等方法产生好的数据;监督相利用产生的数据进行监督学习。
关于GPS的具体讨论详见此文。
PILCO
基于模型的强化学习方法最大的问题是模型误差。针对此类问题,业界提出了 PILCO (Probabilistic Inference for Learning Control)算法。它把模型误差纳入考虑的范围。
关于PILCO的具体实现方法详见此文。