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

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

  • 概述
  • 价值函数估计
    • 增量式/梯度下降方法
    • 批处理方法
    • 深度强化学习浅析(DQN)
      • Double DQN
      • 带有优先回放的Double DQN( Prioritized Replay )
      • Dueling DQN
    • 非参数化估计方法
  • 直接策略搜索
    • 无模型的策略搜索
      • 随机策略
        • REINFORCE
        • G(PO)MDP
        • TRPO
        • Actor-Critic
      • 确定性策略
        • DPG 与 DDPG
    • 基于模型的策略搜索
      • GPS
      • PILCO

概述

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

价值函数估计

价值函数估计的过程可以看作是一个监督学习的过程,其中数据和标签对为 (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 是偏差下降的方向,此处应为 θ(Utv^(St,θt)) − ∇ θ ( U t − v ^ ( S t , θ t ) ) 即负梯度方向。代入上式可得:
θt+1=θt+α[Utv^(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. 多项式基函数: (1,s1,s2,s1s2,s21,s22,) ( 1 , s 1 , s 2 , s 1 s 2 , s 1 2 , s 2 2 , … )
  2. 傅里叶基函数: ϕi(s)=cos(iπs),s[0,1] ϕ i ( s ) = cos ⁡ ( i π s ) , s ∈ [ 0 , 1 ]
  3. 径向基函数: ϕi(s)=exp(sci22σ2i) ϕ i ( s ) = exp ⁡ ( − ‖ s − c i ‖ 2 2 σ i 2 )

不同的更新公式如下:

  1. 蒙特卡罗方法: Δθ=α[GtθTϕ(s)]ϕ(s) Δ θ = α [ G t − θ T ϕ ( s ) ] ϕ ( s )
  2. TD(0) T D ( 0 ) 方法: Δθ=α[R+γθTϕ(s)θTϕ(s)]ϕ(s) Δ θ = α [ R + γ θ T ϕ ( s ′ ) − θ T ϕ ( s ) ] ϕ ( s )
  3. 正向视角的 TD(λ) T D ( λ ) 方法: Δθ=α[GλtθTϕ(s)]ϕ(s) Δ θ = α [ G t λ − θ T ϕ ( s ) ] ϕ ( s )
  4. 反向视角的 TD(λ) T D ( λ ) 方法:
    δtEtΔθ=Rt+1+γθTϕ(s)θTϕ(s)=γλEt1+ϕ(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 , θ ) 使得 LS(θ)=Tt=1(vπtv^πt(st,θ))2 L S ( θ ) = ∑ t = 1 T ( v t π − v ^ t π ( s t , θ ) ) 2 最小(此处为最小二乘)。此处我们不做详细介绍。

深度强化学习浅析(DQN)

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

Human-level Control through Deep Reinforcement Learning

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

  1. DQN 利用深度卷积神经网络估计值函数;
  2. DQN 利用经验回放进行学习;
  3. DQN 独立设置了目标网络来单独处理时间差分算法中的 TD 偏差。

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

  1. Initialize replay memory D D to capacity N N
  2. Initialize Q Q -function with ramdom weights θ θ
  3. Initialize target Q Q -function with weights θ¯=θ θ ¯ = θ
  4. For episode=1,M e p i s o d e = 1 , M do
    1. Initalize sequence s1={x1} s 1 = { x 1 } and preprocessed sequence ϕ1=ϕ(s1) ϕ 1 = ϕ ( s 1 )
    2. For t=1,T t = 1 , T do
      1. Select action at a t , then observe reward rt r t and image xt+1 x t + 1
      2. Processed ϕt+1=ϕ(xt+1) ϕ t + 1 = ϕ ( x t + 1 ) and store transition (ϕt,at,rt,ϕt+1) ( ϕ t , a t , r t , ϕ t + 1 ) in D D
      3. Sample minibatch of transitions (ϕj,aj,rj,ϕj+1) ( ϕ j , a j , r j , ϕ j + 1 ) from D D
      4. Set yj={rj,rj+γmaxaQ(ϕj+1,a,θ¯), if episode terminates at step j+1 otherwise y j = { r j ,  if episode terminates at step  j + 1 r j + γ max a ′ Q ( ϕ j + 1 , a ′ , θ ¯ ) ,  otherwise
      5. Perform a gradient descent step on (yjQ(ϕj,aj,θ)) ( y j − Q ( ϕ j , a j , θ ) ) w.r.t. network parameter θ θ
      6. Every C C steps reset θ¯=θ θ ¯ = θ
    3. End for
  5. 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) Y t = R t + 1 + γ Q ( S t + 1 , arg ⁡ max a Q ( S t + 1 , a , θ t ) , θ t ′ )
将该思想运动到 DQN 中,得到 Double DQN,其 TD T D 目标为:
YDQNt=Rt+1+γQ(St+1,argmaxaQ(St+1,a,θt),θ¯t) Y t D Q N = R t + 1 + γ Q ( S t + 1 , arg ⁡ max a Q ( S t + 1 , a , θ t ) , θ ¯ t )

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

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

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

Pi=pαikpαk P i = p i α ∑ k p k α
其中 pi=|δi|+ϵ p i = | δ i | + ϵ 或者 pi=1rank(i) p i = 1 r a n k ( i ) |rank(i)| | r a n k ( i ) | 根据 |δi| | δ i | 排序得到。

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

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,uH s 0 , u 0 , … , s H , u H ,用符号 R(τ)=Ht=0R(st,ut) R ( τ ) = ∑ t = 0 H R ( s t , u t ) 表示轨迹 τ τ 的回报, 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 ( τ ) 的期望。这可以利用经验平均,即利用 m m 条轨迹的经验计算平均值来估计:
θU(θ)1mi=1mθlogP(τi,θ)R(τi) ∇ θ U ( θ ) ≈ 1 m ∑ i = 1 m ∇ θ 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 = 0 H P ( s t + 1 | s t , u t ) ⋅ π θ ( u t | s t ) ] = ∇ θ [ ∑ t = 0 H log ⁡ P ( s t + 1 | s t , u t ) + ∑ t = 0 H log ⁡ π θ ( u t | s t ) ] = ∇ θ ∑ t = 0 H log ⁡ π θ ( u t | s t ) = ∑ t = 0 H ∇ θ log ⁡ π θ ( u t | s t )
到这一步可以看出,似然概率 P P 的梯度变化仅与策略 πθ π θ 有关,与环境本身的动力学模型无关,这个结果被称为 策略梯度定理。因此:
θU(θ)1mi=1mt=0Hθlogπθ(u(i)t|s(i)t)R(τ(i)i) ∇ θ U ( θ ) ≈ 1 m ∑ i = 1 m ∑ t = 0 H ∇ θ log ⁡ π θ ( u t ( i ) | s t ( i ) ) R ( τ i ( i ) )
这个估计是无偏的,但是方差很大。我们可以在回报中引入常数基线 b b 来减小方差:
θU(θ)1mi=1mθlogP(τ(i),θ)(R(τ(i))b)=1mi=1mt=0Hθlogπθ(u(i)t|s(i)t)(R(τ(i)i)b) ∇ θ U ( θ ) ≈ 1 m ∑ i = 1 m ∇ θ log ⁡ P ( τ ( i ) , θ ) ( R ( τ ( i ) ) − b ) = 1 m ∑ i = 1 m ∑ t = 0 H ∇ θ log ⁡ π θ ( u t ( i ) | s t ( i ) ) ( R ( τ i ( i ) ) − b )
两个估计等价,证明很简单,此处从略。

G(PO)MDP

从之前的讨论中可以看出,每个动作 u(i)t u t ( i ) 所对应的 θlogπθ(u(i)t|s(i)t) ∇ θ log ⁡ π θ ( u t ( i ) | s t ( i ) ) 都乘以相同的轨迹总回报 (R(τ(i)i)b) ( R ( τ i ( i ) ) − b ) 。然而,当前的动作与过去的回报实际上没有关系。因此,我们可以修改回报函数,有一种方法称为 G(PO)MDP:

θU(θ)1mi=1mj=0H1t=0jθlogπθ(u(i)t|s(i)t)(rjbj) ∇ θ U ( θ ) ≈ 1 m ∑ i = 1 m ∑ j = 0 H − 1 ∑ t = 0 j ∇ θ log ⁡ π θ ( u t ( i ) | s t ( i ) ) ( r j − b j )

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 )
和随机策略不同,相同的策略参数,在状态为 s s 时,动作是唯一确定的。确定性策略的优点在于 需要采样的数据少,算法效率高。随机策略的梯度计算公式:
θJ(πθ)=Esρπ,aπθ[θlogπθ(a|s)Qπ(s,a)] ∇ θ J ( π θ ) = E s ∼ ρ π , a ∼ π θ [ ∇ θ log ⁡ π θ ( a | s ) Q π ( s , a ) ]
此式表明,策略梯度公式是关于状态和动作的期望,在求期望时,需要对状态分布和动作分布求积分,这就要求在状态空间和动作空间采集大量的样本,这样求均值才能近似期望。然而,确定性策略的动作是确定的,因此不需要再动作空间采样积分,所以确定性策略需要的样本数据更小。确定性策略梯度如下:
θJ(μθ)=Esρμ[θμθ(s)aQμ(s,a)|a=μθ(s)] ∇ θ J ( μ θ ) = E s ∼ ρ μ [ ∇ θ μ θ ( s ) ∇ a Q μ ( 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 ( π θ ) = E s ∼ ρ π , a ∼ π θ [ π θ ( a | s ) β θ ( a | s ) ∇ θ log ⁡ π θ ( a | s ) Q π ( s , a ) ]
采样策略为 β β
异策略确定性策略梯度为:
θJβ(μθ)=Esρβ[θμθ(s)aQμ(s,a)|a=μθ(s)] ∇ θ J β ( μ θ ) = E s ∼ ρ β [ ∇ θ μ θ ( s ) ∇ a Q μ ( 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 = r t + γ Q ω ( s t + 1 , μ θ ( s t + 1 ) ) − Q ω ( s t , a t ) ω t + 1 = ω t + α ω δ t ∇ ω Q ω ( s t , a t ) θ t + 1 = θ t + α θ ∇ θ μ θ ( s t ) ∇ a Q ω ( s t , a t ) | a = μ θ ( s )
以上介绍的是 Deterministic Policy Gradient 方法,简称 DPG。

有了 DPG,我们再看 DDPG,即Deep Determinstic Policy Gradient。这里所谓的深度是指利用神经网络估计行为值函数 Qω(st,at) Q ω ( s t , a t ) 和确定策略 μθ(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 = r t + γ Q ω − ( s t + 1 , μ θ − ( s t + 1 ) ) − Q ω ( s t , a t ) ω t + 1 = ω t + α ω δ t ∇ ω Q ω ( s t , a t ) θ t + 1 = θ t + α θ ∇ θ μ θ ( s t ) ∇ a Q ω ( s t , a t ) | 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的具体实现方法详见此文。

你可能感兴趣的:(Reinforcement,Learning)