您的位置:首页 > 移动开发

浅谈强化学习中的函数估计问题 - Function Approximation in RL

2018-03-10 21:41 495 查看
下面我们简单讨论下强化学习中的函数估计问题,这里对于强化学习的基本原理、常见算法以及凸优化的数学基础不作讨论。假设你对强化学习(Reinforcement Learning)有最基本的了解。

概述

价值函数估计
增量式/梯度下降方法

批处理方法

深度强化学习浅析(DQN)
Double DQN

带有优先回放的Double DQN( Prioritized Replay )

Dueling DQN

非参数化估计方法

直接策略搜索
无模型的策略搜索
随机策略
REINFORCE

G(PO)MDP

TRPO

Actor-Critic

确定性策略
DPG 与 DDPG

基于模型的策略搜索
GPS

PILCO

概述

对于状态空间为连续空间的强化学习问题,我们需要利用函数估计的方法表示各种映射关系。函数估计方法可分为参数估计和非参数估计,其中参数化估计又分为线性参数化估计和非线性参数化估计。本文中我们主要讨论参数化估计。对于基础较薄弱读者,可以参考这篇更基础的文章

价值函数估计

价值函数估计的过程可以看作是一个监督学习的过程,其中数据和标签对为 (St,Ut)(St,Ut) 。训练的目标函数为: argminθ(q(s,a)−q^(s,a,θ))orargminθ(v(s)−v^(s,θ))arg⁡minθ(q(s,a)−q^(s,a,θ))orarg⁡minθ(v(s)−v^(s,θ))

增量式/梯度下降方法

梯度下降的基本原理可以参考凸优化问题中的无约束规划方法。这里我们要求估计偏差最小,因此采用梯度下降方法:θt+1=θt+αdtθt+1=θt+αdt这里 dtdt 是偏差下降的方向,此处应为 −∇θ(Ut−v^(St,θt))−∇θ(Ut−v^(St,θt)) 即负梯度方向。代入上式可得:

θt+1=θt+α[Ut−v^(St,θt)]∇θv^(St,θ)θt+1=θt+α[Ut−v^(St,θt)]∇θv^(St,θ) 注意此处 UtUt 与 θθ 无关,但情况并非总是这样。如果采用蒙特卡罗方法对实验进行采样,即 Ut=GtUt=Gt 时,上述公式直接成立;但如果采样 TD(0)TD(0) 方法采样,由于用到了 bootstrapping,即 Ut=Rt+1+γv^(St+1,θ)Ut=Rt+1+γv^(St+1,θ) , UtUt 中也包含 θθ。 使用上式忽略了这个影响,因此被称为部分梯度(semi-gradient)法。

下面讨论线性估计问题,即 v^(s,θ)=θTϕ(s)v^(s,θ)=θTϕ(s)。常用的线性基函数类型如下:

多项式基函数:(1,s1,s2,s1s2,s21,s22,…)(1,s1,s2,s1s2,s12,s22,…)

傅里叶基函数:ϕ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−ci‖22σi2)

不同的更新公式如下:

蒙特卡罗方法:Δθ=α[Gt−θTϕ(s)]ϕ(s)Δθ=α[Gt−θTϕ(s)]ϕ(s)

TD(0)TD(0)方法:Δθ=α[R+γθTϕ(s′)−θTϕ(s)]ϕ(s)Δθ=α[R+γθTϕ(s′)−θTϕ(s)]ϕ(s)

正向视角的TD(λ)TD(λ)方法:Δθ=α[Gλt−θTϕ(s)]ϕ(s)Δθ=α[Gtλ−θTϕ(s)]ϕ(s)

反向视角的TD(λ)TD(λ)方法:δtEtΔθ=Rt+1+γθTϕ(s′)−θTϕ(s)=γλEt−1+ϕ(s)=αδtEtδt=Rt+1+γθTϕ(s′)−θTϕ(s)Et=γλEt−1+ϕ(s)Δθ=αδtEt

关于这些更新方法的具体含义可以参考这篇文章

批处理方法

批处理方法的计算比较复杂,但是计算效率高。批处理方法是指给定经验数据集 D={(s1,vπ1),(s2,vπ2),…,(sT,vπT)}D={(s1,v1π),(s2,v2π),…,(sT,vTπ)},找到最好的拟合函数 v^(s,θ)v^(s,θ) 使得 LS(θ)=∑Tt=1(vπt−v^πt(st,θ))2LS(θ)=∑t=1T(vtπ−v^tπ(st,θ))2 最小(此处为最小二乘)。此处我们不做详细介绍。

深度强化学习浅析(DQN)

这里介绍的 DQN 就是 DeepMind 发表在 Nature 上的一篇论文:

Human-level Control through Deep Reinforcement Learning

DQN 技术是 Q-Learning 算法的一种变体,具体改变的是以下三个方面:

DQN 利用深度卷积神经网络估计值函数;

DQN 利用经验回放进行学习;

DQN 独立设置了目标网络来单独处理时间差分算法中的 TD 偏差。

由于训练神经网络时,存在的假设是训练数据是独立同分布的,而通过强化学习采集的数据之间总是存在着关联性,易造成神经网络不稳定。经验回放技术可以打破数据间的关联。独立的目标网络使用 θ¯θ¯ 而不是 θθ 来计算 TDTD 偏差,这样做也为了打破关联性。DQN的算法伪代码如下:

Initialize replay memory DD to capacity NN

Initialize QQ-function with ramdom weights θθ

Initialize target QQ-function with weights θ¯=θθ¯=θ

For episode=1,Mepisode=1,M do

Initalize sequence s1={x1}s1={x1} and preprocessed sequence ϕ1=ϕ(s1)ϕ1=ϕ(s1)

For t=1,Tt=1,T do

Select action atat, then observe reward rtrt and image xt+1xt+1

Processed ϕt+1=ϕ(xt+1)ϕt+1=ϕ(xt+1) and store transition (ϕt,at,rt,ϕt+1)(ϕt,at,rt,ϕt+1) in DD

Sample minibatch of transitions (ϕj,aj,rj,ϕj+1)(ϕj,aj,rj,ϕj+1) from DD

Set yj={rj,rj+γmaxa′Q(ϕj+1,a′,θ¯), if episode terminates at step j+1 otherwiseyj={rj, if episode terminates at step j+1rj+γmaxa′Q(ϕj+1,a′,θ¯), otherwise

Perform a gradient descent step on (yj−Q(ϕj,aj,θ))(yj−Q(ϕj,aj,θ)) w.r.t. network parameter θθ

Every CC 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)Yt=Rt+1+γQ(St+1,arg⁡maxaQ(St+1,a,θt),θt′) 将该思想运动到 DQN 中,得到 Double DQN,其 TDTD 目标为:

YDQNt=Rt+1+γQ(St+1,argmaxaQ(St+1,a,θt),θ¯t)YtDQN=Rt+1+γQ(St+1,arg⁡maxaQ(St+1,a,θt),θ¯t)

带有优先回放的Double DQN( Prioritized Replay )

这里仅讨论优先回放思想,不给出具体算法。在DQN中,选取训练集合的方法是均匀采样,然而并非所有数据集的效率一致。某些状态的学习效率远比其他状态高。优先回放的接班思想就是赋予学习效率高的状态以更大的采样权重。

那么如何选择采样权重呢?一个选择是 TDTD 偏差 δδ 。例如:我们设样本 ii 处的 TDTD 偏差为 δδ, 则该处的采样概率为

Pi=pαi∑kpαkPi=piα∑kpkα 其中 pi=|δi|+ϵpi=|δi|+ϵ 或者 pi=1rank(i)pi=1rank(i) 。|rank(i)||rank(i)| 根据 |δi||δi| 排序得到。

采用优先回放的概率分布采样时,动作值的估计是一个有偏估计。因为采样分布于动作值函数分布完全不同,为了矫正这个偏差,我们需要乘以一个重要性采样系数 ωi=(1N⋅1Pi)βωi=(1N⋅1Pi)β 。

Dueling DQN

Dueling DQN 从网络结构上改进了 DQN。动作值函数可以被分解为状态值函数和优势函数,即:

Qπ(s,a)=Vπ(s)+Aπ(s,a)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)πθ(s),寻找最优的参数 θθ ,使强化学习目标——累计回报的期望最大。这里不介绍过多细节,有兴趣的读者可以参考这篇更具体的文章

无模型的策略搜索

随机策略

REINFORCE

随机策略搜索法最典型的算法是 REINFORCE 这里不给出具体算法,只推导基本原理。

我们用 ττ 表示一组状态-行为序列 s0,u0,…,sH,uHs0,u0,…,sH,uH,用符号 R(τ)=∑Ht=0R(st,ut)R(τ)=∑t=0HR(st,ut) 表示轨迹 ττ 的回报,P(τ,θ)P(τ,θ) 表示轨迹 ττ 出现的概率,此时直接策略搜索的目标可以表示为:

U(θ)=∑τP(τ,θ)R(τ)U(θ)=∑τP(τ,θ)R(τ) 此时强化学习的目标是找到最优参数 θθ 使得

maxθU(θ)=maxθ∑τP(τ,θ)R(τ)maxθU(θ)=maxθ∑τP(τ,θ)R(τ) 此时搜索问题转化为优化问题,下面我们采用最速下降法求解(这里其实是上升)。

θt+1=θt+α∇θU(θ)θt+1=θt+α∇θU(θ) 下面研究如何求 ∇θU(θ)∇θU(θ):

∇θU(θ)=∇θ∑τP(τ,θ)R(τ)=∑τ∇θP(τ,θ)R(τ)=∑τP(τ,θ)∇θP(τ,θ)P(τ,θ)R(τ)=∑τP(τ,θ)∇θlogP(τ,θ)R(τ)∇θU(θ)=∇θ∑τP(τ,θ)R(τ)=∑τ∇θP(τ,θ)R(τ)=∑τP(τ,θ)∇θP(τ,θ)P(τ,θ)R(τ)=∑τP(τ,θ)∇θlog⁡P(τ,θ)R(τ) 这样一来求 ∇θU(θ)∇θU(θ) 变成了估计 ∇θlogP(τ,θ)R(τ)∇θlog⁡P(τ,θ)R(τ) 的期望。这可以利用经验平均,即利用 mm 条轨迹的经验计算平均值来估计:

∇θU(θ)≈1m∑i=1m∇θlogP(τi,θ)R(τi)∇θU(θ)≈1m∑i=1m∇θlog⁡P(τi,θ)R(τi) 下面再研究如何估计 ∇θlogP(τ,θ)∇θlog⁡P(τ,θ):

∇θ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)∇θlog⁡P(τ,θ)=∇θlog⁡[∏t=0HP(st+1|st,ut)⋅πθ(ut|st)]=∇θ[∑t=0Hlog⁡P(st+1|st,ut)+∑t=0Hlog⁡πθ(ut|st)]=∇θ∑t=0Hlog⁡πθ(ut|st)=∑t=0H∇θlog⁡πθ(ut|st) 到这一步可以看出,似然概率 PP 的梯度变化仅与策略 πθπθ 有关,与环境本身的动力学模型无关,这个结果被称为策略梯度定理。因此:

∇θU(θ)≈1m∑i=1m∑t=0H∇θlogπθ(u(i)t|s(i)t)R(τ(i)i)∇θU(θ)≈1m∑i=1m∑t=0H∇θlog⁡πθ(ut(i)|st(i))R(τi(i)) 这个估计是无偏的,但是方差很大。我们可以在回报中引入常数基线 bb 来减小方差:

∇θ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)∇θU(θ)≈1m∑i=1m∇θlog⁡P(τ(i),θ)(R(τ(i))−b)=1m∑i=1m∑t=0H∇θlog⁡πθ(ut(i)|st(i))(R(τi(i))−b) 两个估计等价,证明很简单,此处从略。

G(PO)MDP

从之前的讨论中可以看出,每个动作 u(i)tut(i) 所对应的 ∇θlogπθ(u(i)t|s(i)t)∇θlog⁡πθ(ut(i)|st(i)) 都乘以相同的轨迹总回报 (R(τ(i)i)−b)(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)∇θU(θ)≈1m∑i=1m∑j=0H−1∑t=0j∇θlog⁡πθ(ut(i)|st(i))(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)a=μθ(s) 和随机策略不同,相同的策略参数,在状态为 ss 时,动作是唯一确定的。确定性策略的优点在于需要采样的数据少,算法效率高。随机策略的梯度计算公式:

∇θJ(πθ)=Es∼ρπ,a∼πθ[∇θlogπθ(a|s)Qπ(s,a)]∇θJ(πθ)=Es∼ρπ,a∼πθ[∇θlog⁡πθ(a|s)Qπ(s,a)] 此式表明,策略梯度公式是关于状态和动作的期望,在求期望时,需要对状态分布和动作分布求积分,这就要求在状态空间和动作空间采集大量的样本,这样求均值才能近似期望。然而,确定性策略的动作是确定的,因此不需要再动作空间采样积分,所以确定性策略需要的样本数据更小。确定性策略梯度如下:∇θJ(μθ)=Es∼ρμ[∇θμθ(s)∇aQμ(s,a)|a=μθ(s)]∇θJ(μθ)=Es∼ρμ[∇θμθ(s)∇aQμ(s,a)|a=μθ(s)]

DPG 与 DDPG

言归正传,确定性策略动作是确定的,无法探索环境,那么如何学习呢?答案就是利用异策略方法,这里采用AC框架。AC算法包含两个同等地位的元素,一个是 Actor 即行动策略,另一个是 Critic 即评估策略,这里指的是利用函数逼近的方法估计值函数。Actor 方法用来调整 θθ 值;Critic 方法逼近值函数 Qω(s,a)≈Qπ(s,a)Qω(s,a)≈Qπ(s,a),其中 ωω 为待逼近的参数,可用 TD 学习的方法评估值函数。

异策略随机策略梯度为 ∇θJ(πθ)=Es∼ρπ,a∼πθ[πθ(a|s)βθ(a|s)∇θlogπθ(a|s)Qπ(s,a)]∇θJ(πθ)=Es∼ρπ,a∼πθ[πθ(a|s)βθ(a|s)∇θlog⁡πθ(a|s)Qπ(s,a)] 采样策略为 ββ 。

异策略确定性策略梯度为:∇θJβ(μθ)=Es∼ρβ[∇θμθ(s)∇aQμ(s,a)|a=μθ(s)]∇θ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)δt=rt+γQω(st+1,μθ(st+1))−Qω(st,at)ωt+1=ωt+αωδt∇ωQω(st,at)θt+1=θt+αθ∇θμθ(st)∇aQω(st,at)|a=μθ(s) 以上介绍的是 Deterministic Policy Gradient 方法,简称 DPG。

有了 DPG,我们再看 DDPG,即Deep Determinstic Policy Gradient。这里所谓的深度是指利用神经网络估计行为值函数 Qω(st,at)Qω(st,at) 和确定策略 μθ(s)μθ(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−τ)ω−δt=rt+γQω−(st+1,μθ−(st+1))−Qω(st,at)ωt+1=ωt+αωδt∇ωQω(st,at)θt+1=θ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的具体实现方法详见此文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  强化学习
相关文章推荐