距离上次更新已经 1792 天了,文章内容可能已经过时。

课程主页: https://www.davidsilver.uk/teaching/

这里回顾David silver 强化学习 Lecture 7的课程内容,这一讲简单介绍了策略梯度算法。

上一讲介绍了如何使用参数θ近似价值函数:

Vθ(s)Vπ(s)Qθ(s,a)Qπ(s,a)

然后从价值函数中推导策略。

这一讲将直接近似策略:

πθ(s,a)=P[a|s,θ]

这一讲的重点仍然是不基于模型的强化学习。

Policy Objective Functions

我们要找到好的策略πθ(s,a),就需要一个判断好坏的损失函数:

  • 在离散环境,我们可以使用初始价值

    J1(θ)=Vπθ(s1)=Eπθ[v1]
  • 在连续环境中,我们可以使用平均价值

    JavV(θ)=sdπθ(s)Vπθ(s)
  • 或者每个时间戳的平均回报

    JavR(θ)=sdπθ(s)aπθ(s,a)Rsa
  • 其中dπθ(s)是马尔可夫链关于πθ的平稳分布

后续将损失函数统一记录为J(θ)

Policy Gradient

利用梯度上升算法可以最大化J(θ),每一步的变换量为

Δθ=αθJ(θ)

其中θJ(θ)为策略梯度,计算式为

θJ(θ)=(J(θ)θ1J(θ)θn)

α是步长参数。

Score Function

现在解析的计算θπθ(s,a),我们有

θπθ(s,a)=πθ(s,a)θπθ(s,a)πθ(s,a)=πθ(s,a)θlogπθ(s,a)

我们称θlogπθ(s,a)为得分函数。

后续介绍两种常见的策略形式:

Softmax Policy

πθ(s,a)=eϕ(s,a)θaeϕ(s,a)θeϕ(s,a)θ

所以

θlogπθ(s,a)=θ(ϕ(s,a)θlogaeϕ(s,a)θ)=ϕ(s,a)aeϕ(s,a)θaeϕ(s,a)θϕ(s,a)=ϕ(s,a)Eπθ[ϕ(s,)]

Gaussian Policy

一个高斯策略为,aN(μ(s),σ2),其中μ(s)=ϕ(s)θσ2为常数,那么

θlogπθ(s,a)=θlog(12σ2exp((aμ(s))22σ2))=θ((aμ(s))22σ2)=(aμ(s))σ2θμ(s)=(aμ(s))ϕ(s)σ2

Policy Gradient Theorem

对于任意可微的策略πθ(s,a),对于之前介绍的三个策略目标函数J=J1,JavR,11γJavv,策略梯度为

θJ(θ)=Eπθ[θlogπθ(s,a)Qπθ(s,a)]

Monte-Carlo Policy Gradient (REINFORCE)

将上述内容总结即可得到REINFORCE算法:

Reducing Variance Using a Critic

上述算法有很高的方差,我们可以使用critic来估计动作价值函数来减少方差:

Qw(s,a)Qπθ(s,a)

Actor-critic算法保留两个集合的参数:

  • Critic:更新动作-价值函数的参数w
  • Actor:根据critic的建议更新策略参数θ

Actor-critic算法使用下式来近似策略梯度:

θJ(θ)Eπθ[θlogπθ(s,a)Qw(s,a)]Δθ=αθlogπθ(s,a)Qw(s,a)

Action-Value Actor-Critic

我们使用之前介绍的TD(0)算法优化Critic,结合本讲的内容得到QAC算法:

Compatible Function Approximation

定理(Compatible Function Approximation)

如果如下两个条件满足:

  1. 价值函数的近似函数满足

    wQw(s,a)=θlogπθ(s,a)
  2. 价值函数的参数w最小化均方误差

    ε=Eπθ[(Qπθ(s,a)Qw(s,a))2]

那么策略梯度是准确的,

θJ(θ)=Eπθ[θlogπθ(s,a)Qw(s,a)]

证明:

wε=0Eπθ[(Qθ(s,a)Qw(s,a))wQw(s,a)]=0Eπθ[(Qθ(s,a)Qw(s,a))θlogπθ(s,a)]=0Eπθ[Qθ(s,a)θlogπθ(s,a)]=Eπθ[Qw(s,a)θlogπθ(s,a)]

Reducing Variance Using a Baseline

我们可以通过减去baseline函数B(s)来减少方差,并且这样不会改变梯度:

Eπθ[θlogπθ(s,a)B(s)]=sSdπθ(s)aθπθ(s,a)B(s)=sSdπθB(s)θaAπθ(s,a)=0

一个好的baseline是

B(s)=Vπθ(s)

所以我们可以用advantage function Aπθ(s,a)重写策略梯度

Aπθ(s,a)=Qπθ(s,a)Vπθ(s)θJ(θ)=Eπθ[θlogπθ(s,a)Aπθ(s,a)]

Natural Policy Gradient

Natural Policy Gradient与参数设置无关,当以较小的固定量更改策略时,它会找到最接近原始梯度的上升方向

θnatπθ(s,a)=Gθ1θπθ(s,a)

其中Gθ是Fisher信息矩阵

Gθ=Eπθ[θlogπθ(s,a)θlogπθ(s,a)T]

利用compatible function approximation,我们要选择满足如下条件的A

wAw(s,a)=θlogπθ(s,a)

显然这里可以取

Aπθ(s,a)=θlogπθ(s,a)Tw

所以

θJ(θ)=Eπθ[θlogπθ(s,a)Aπθ(s,a)]=Eπθ[θlogπθ(s,a)θlogπθ(s,a)Tw]=GθwθnatJ(θ)=w

即根据critic参数更新actor参数。

Summary of Policy Gradient Algorithms

policy gradient有很多等价形式

θJ(θ)=Eπθ[θlogπθ(s,a)vt]REINFORCE=Eπθ[θlogπθ(s,a)Qw(s,a)]Q Actor-Critic=Eπθ[θlogπθ(s,a)Aw(s,a)]Advantage Actor-Critic=Eπθ[θlogπθ(s,a)δ]TD Actor-Critic=Eπθ[θlogπθ(s,a)δe]TD(λ) Actor-CriticGθ1θJ(θ)=wNatural Actor-Critic

Critic使用策略评估(例如MC或者TD)来估计Qπ(s,a),Aπ(s,a) or Vπ(s)