文章目录

  • Neural network as Actor
  • Gradient Ascent
  • Monte Carlo Policy Gradient
  • Add a Baseline
  • On-policy and Off-policy
    • importance Sampling
    • off-policy
    • TRPO
    • PPO(Proximal Policy Optimization)
  • Critic
  • Actor-Critic
    • RL书中的内容
    • Hung Yi Li的讲义
    • A2C(Advantage Actor-Critic)
    • Tips
    • DPG
    • DDPG(DeepDPG)
    • A3C
    • GA3C
    • Pathwise Derivative Policy Gradient

在值函数的方法中,我们迭代计算的是值函数,再根据值函数改善策略;而在策略搜索方法中,我们直接对策略进行迭代计算,也就是迭代更新策略的参数值,直到累积回报的期望最大,此时的参数所对应的策略为最优策略。

Neural network as Actor


用一个Actor(Policy)玩游戏,在一个episode中得到的Total reward:Rθ=∑t=1TrtR_{\theta}=\sum^T_{t=1}r_tRθ​=∑t=1T​rt​

即使是用同一个actor,总奖励每一次都是不一样的,我们定义Rθˉ\bar{R_\theta}Rθ​ˉ​为RθR_\thetaRθ​的期望值。该期望值衡量了一个Actor, πθ(s)\pi_\theta(s)πθ​(s), 的好坏。

  • 令τ\tauτ为一个episode,τ={s1,a1,r1,s2,a2,r2,…,sT,aT,rT}\tau=\{s_1,a_1,r_1,s_2,a_2,r_2,\dots,s_T,a_T,r_T\}τ={s1​,a1​,r1​,s2​,a2​,r2​,…,sT​,aT​,rT​}
  • R(τ)=∑n=1NrnR(\tau)=\sum^N_{n=1}r_nR(τ)=∑n=1N​rn​
  • 用一个Actor玩游戏,每个τ\tauτ都有一定的可能出现,这个出现的概率由Actor的参数θ\thetaθ决定:P(τ∣θ)P(\tau|\theta)P(τ∣θ)
  • Rθˉ=∑τR(τ)P(τ∣θ)\bar{R_\theta}=\sum_\tau R(\tau)P(\tau|\theta)Rθ​ˉ​=∑τ​R(τ)P(τ∣θ)
  • 用πθ\pi_\thetaπθ​玩N场游戏,获得{τ1,τ2,…,τN}\{ \tau^1,\tau^2,\dots,\tau^N\}{τ1,τ2,…,τN}

Rˉθ=∑rR(τ)P(τ∣θ)≈1N∑n=1NR(τn)\bar R_\theta=\sum_rR(\tau)P(\tau|\theta) \approx \frac{1}{N}\sum^N_{n=1}R(\tau^n)Rˉθ​=∑r​R(τ)P(τ∣θ)≈N1​∑n=1N​R(τn)

Gradient Ascent

  • 问题θ⋆=argmaxθRˉθ\theta^\star =arg\text{max}_\theta \bar R_\thetaθ⋆=argmaxθ​Rˉθ​ Rˉθ=∑rR(τ)P(τ∣θ)\bar R_\theta=\sum_rR(\tau)P(\tau|\theta)Rˉθ​=r∑​R(τ)P(τ∣θ)
    方法Gradient Ascent
  • 初始值θ0\theta^0θ0
  • θ1←θ0+η∇Rˉθ0\theta^1 \leftarrow \theta^0+\eta\nabla \bar R_{\theta_0}θ1←θ0+η∇Rˉθ0​​
  • θ2←θ1+η∇Rˉθ1\theta^2 \leftarrow \theta^1+\eta\nabla \bar R_{\theta_1}θ2←θ1+η∇Rˉθ1​​
  • …\dots…

那么∇Rˉθ=?\nabla \bar R_\theta=?∇Rˉθ​=?
∇Rˉθ=∑τR(τ)∇P(τ∣θ)=∑τR(τ)P(τ∣θ)∇P(τ∣θ)P(τ∣θ)=∑τR(τ)P(τ∣θ)∇lnP(τ∣θ)=Eτ∼pθ(τ)[R(τ)∇lnpθ(τ)]≈1N∑n=1NR(τn)∇lnP(τn∣θ)\begin{aligned} \nabla\bar R_\theta &= \sum_\tau R(\tau)\nabla P(\tau|\theta) \\ &= \sum_\tau R(\tau)P(\tau|\theta)\frac{\nabla P(\tau|\theta)}{P(\tau|\theta)} \\ &=\sum_\tau R(\tau) P(\tau|\theta)\nabla lnP(\tau|\theta) \\ &=E_{\tau \sim p_\theta(\tau)}[R(\tau)\nabla ln p_\theta(\tau)] \\ & \approx \frac{1}{N}\sum^N_{n=1}R(\tau^n)\nabla ln P(\tau^n|\theta) \end{aligned}∇Rˉθ​​=τ∑​R(τ)∇P(τ∣θ)=τ∑​R(τ)P(τ∣θ)P(τ∣θ)∇P(τ∣θ)​=τ∑​R(τ)P(τ∣θ)∇lnP(τ∣θ)=Eτ∼pθ​(τ)​[R(τ)∇lnpθ​(τ)]≈N1​n=1∑N​R(τn)∇lnP(τn∣θ)​

其中 τ={s1,a1,r1,s2,a2,r2,…,sT,rT}\tau=\{s_1,a_1,r_1,s_2,a_2,r_2,\dots,s_T,r_T\}τ={s1​,a1​,r1​,s2​,a2​,r2​,…,sT​,rT​},

P(τ∣θ)=p(s1)p(a1∣s1,θ)p(r1,s2∣s1,a1)p(a2∣s2,θ)p(r2,s3∣s2,a2)…=p(s1)∏t=1Tp(at∣st,θ)p(rt,st+1∣st,at)\begin{aligned}P(\tau|\theta)&=p(s_1)p(a_1|s_1,\theta)p(r_1,s_2|s_1,a_1)p(a_2|s_2,\theta)p(r_2,s_3|s_2,a_2)\dots \\ &=p(s_1)\prod^T_{t=1}p(a_t|s_t,\theta)p(r_t,s_{t+1}|s_t,a_t) \end{aligned}P(τ∣θ)​=p(s1​)p(a1​∣s1​,θ)p(r1​,s2​∣s1​,a1​)p(a2​∣s2​,θ)p(r2​,s3​∣s2​,a2​)…=p(s1​)t=1∏T​p(at​∣st​,θ)p(rt​,st+1​∣st​,at​)​

下面分别阐述公式中的∇lnP(τn∣θ),R(τ)\nabla lnP(\tau^n|\theta), \ R(\tau)∇lnP(τn∣θ), R(τ):
第一项∇lnP(τn∣θ)\nabla lnP(\tau^n|\theta)∇lnP(τn∣θ)是轨迹τ\tauτ的概率随参数θ\thetaθ变化最陡的方向。参数在该方向更新时,若沿着正方向,则该轨迹τ\tauτ的概率会变大, 若沿着负方向更新,则该轨迹的概率会变小。
第二项R(τ)R(\tau)R(τ)控制了参数更新的方向和步⻓。R(τ)R(\tau)R(τ)为正且越大则参数更新后该轨迹的概率越大; R(τ)R(\tau)R(τ)为负,则降低该轨迹的概率,抑制该轨迹的发生。
因此,从直观上理解策略梯度时,我们发现策略梯度会增加高回报路径的概率,减小低回报路径的概率。

lnP(τ∣θ)=lnp(s1)+∑t=1Tlnp(at∣st,θ)+lnp(rt,st+1∣st,at)lnP(\tau|\theta)=lnp(s_1)+\sum^T_{t=1}lnp(a_t|s_t,\theta)+lnp(r_t,s_{t+1}|s_t,a_t)lnP(τ∣θ)=lnp(s1​)+∑t=1T​lnp(at​∣st​,θ)+lnp(rt​,st+1​∣st​,at​)

∇lnP(τ∣θ)=∑t=1T∇lnp(at∣st,θ)\nabla lnP(\tau|\theta)=\sum^T_{t=1}\nabla lnp(a_t|s_t,\theta)∇lnP(τ∣θ)=∑t=1T​∇lnp(at​∣st​,θ)


∇Rˉθ≈1N∑n=1NR(τn)∇lnP(τn∣θ)=1N∑n=1NR(τn)∑t=1Tn∇lnp(atn∣stn,θ)=1N∑n=1N∑t=1TnR(τn)∇lnp(atn∣stn,θ)\begin{aligned}\nabla \bar R_\theta &\approx \frac{1}{N}\sum^N_{n=1}R(\tau^n)\nabla lnP(\tau^n|\theta)\\ &=\frac{1}{N}\sum^N_{n=1}R(\tau^n)\sum^{T_n}_{t=1}\nabla ln p(a^n_t|s^n_t,\theta)\\ &=\frac{1}{N}\sum^N_{n=1}\sum^{T_n}_{t=1}R(\tau^n)\nabla lnp(a^n_t|s^n_t,\theta) \end{aligned}∇Rˉθ​​≈N1​n=1∑N​R(τn)∇lnP(τn∣θ)=N1​n=1∑N​R(τn)t=1∑Tn​​∇lnp(atn​∣stn​,θ)=N1​n=1∑N​t=1∑Tn​​R(τn)∇lnp(atn​∣stn​,θ)​
在《RL:An Introduction》中,p(atn∣stn,θ)p(a^n_t|s^n_t,\theta)p(atn​∣stn​,θ) 写作 π(At∣St,θ)\pi(A_t|S_t,\theta)π(At​∣St​,θ).

θnew←θold+η∇Rˉθold\theta^{new}\leftarrow \theta^{old}+\eta\nabla \bar R_{\theta^{old}}θnew←θold+η∇Rˉθold​

  • 为什么除以几率p(atn∣stn,θ)p(a^n_t|s^n_t,\theta)p(atn​∣stn​,θ)?

Monte Carlo Policy Gradient

pseudocode

Add a Baseline

有时候总奖励可能总是正的,比如说一般小奖励有很多而大奖励很少,那么PG的时候小reward的可能更新很多次,但是这样就不能很好的提高大奖励action的几率,那么有什么方法?
可以将回报减去一个Baseline, 形式:
∇Rˉθ≈1N∑n=1N∑t=1Tn(R(τn)−b)∇lnp(atn∣stn,θ)\nabla \bar R_\theta \approx \frac{1}{N}\sum^N_{n=1}\sum^{T_n}_{t=1} (R(\tau^n) -b)\nabla lnp(a^n_t|s^n_t,\theta)∇Rˉθ​≈N1​∑n=1N​∑t=1Tn​​(R(τn)−b)∇lnp(atn​∣stn​,θ)
θt+1←θt+α(Gt−b(St))∇π(At∣St,θt)π(At∣St,θt)\theta_{t+1} \leftarrow \theta_t+\alpha(G_t-b(S_t))\frac{\nabla \pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)}θt+1​←θt​+α(Gt​−b(St​))π(At​∣St​,θt​)∇π(At​∣St​,θt​)​
当总奖励好过baseline才将其几率增加。这样引入一个量,其策略梯度是不变的,证明提示:Eτ∼pθ(τ)[∇lnpθ(τ)⋅b]=0E_{\tau \sim p_\theta(\tau)}[\nabla ln p_\theta(\tau)\cdot b]=0Eτ∼pθ​(τ)​[∇lnpθ​(τ)⋅b]=0

理论上求使策略梯方差最小时的baseline:
令X=∇lnp⋅(R(τ(n)−b),则有Var(X)=EX2−EXˉ2X=\nabla lnp\cdot(R(\tau^{(n)}-b), 则有Var(X)=EX^2-E\bar X^2X=∇lnp⋅(R(τ(n)−b),则有Var(X)=EX2−EXˉ2,Var(X)对b求导:
∂Var(X)∂b=E(X∂X∂b)=0\frac{\partial Var(X)}{\partial b}=E(X\frac{\partial X}{\partial b})=0∂b∂Var(X)​=E(X∂b∂X​)=0
可推出:
b=∑n=1N[(∑t=1Tn∇lnp(atn∣stn,θ))2R(τn)]∑n=1N[∑t=1Tn∇lnp(atn∣stn,θ))2]b=\frac{\sum^N_{n=1}[(\sum^{T_n}_{t=1}\nabla lnp(a^n_t|s^n_t,\theta))^2R(\tau^n)]} {\sum^N_{n=1}[\sum^{T_n}_{t=1}\nabla lnp(a^n_t|s^n_t,\theta))^2]}b=∑n=1N​[∑t=1Tn​​∇lnp(atn​∣stn​,θ))2]∑n=1N​[(∑t=1Tn​​∇lnp(atn​∣stn​,θ))2R(τn)]​

一般情况下baseline选择状态函数v^(St,w)\hat v(S_t,w)v^(St​,w),其中www是函数中的参数。

pseudocode

On-policy and Off-policy

importance Sampling

Ex∼p[f(x)]≈1N∑i=1Nf(xi)E_{x \sim p}[f(x)]\approx \frac{1}{N}\sum^N_{i=1}f(x^i)Ex∼p​[f(x)]≈N1​∑i=1N​f(xi)
其中xix^ixi是从 p(x)p(x)p(x)这个分布中采样的。
现在问题是不能从p(x)p(x)p(x)里面采样,那么怎么办呢?
Ex∼p[f(x)]=∫f(x)p(x)dx=∫f(x)p(x)q(x)q(x)dx=Ex∼q[f(x)p(x)q(x)]\begin{aligned}E_{x \sim p}[f(x)]&=\int f(x)p(x)dx \\ &=\int f(x)\frac{p(x)}{q(x)}q(x)dx \\ &=E_{x \sim q}[f(x)\frac{p(x)}{q(x)}] \end{aligned}Ex∼p​[f(x)]​=∫f(x)p(x)dx=∫f(x)q(x)p(x)​q(x)dx=Ex∼q​[f(x)q(x)p(x)​]​
可以从与p(x)相似的分布q(x)中采样。p(x)与q(x)不能相差太多,
因为虽然Ex∼p[f(x)]=Ex∼q[f(x)p(x)q(x)]E_{x \sim p}[f(x)]=E_{x \sim q}[f(x)\frac{p(x)}{q(x)}]Ex∼p​[f(x)]=Ex∼q​[f(x)q(x)p(x)​],但是Varx∼p[f(x)]≠Varx∼q[f(x)p(x)q(x)]Var_{x\sim p}[f(x)] \neq Var_{x\sim q}[f(x)\frac{p(x)}{q(x)}]Varx∼p​[f(x)]​=Varx∼q​[f(x)q(x)p(x)​]

off-policy

∇Rˉθ=Eτ∼pθ(τ)[R(τ)∇lnpθ(τ)]\nabla \bar R_\theta=E_{\tau \sim p_\theta(\tau)}[R(\tau)\nabla ln p_\theta(\tau)]∇Rˉθ​=Eτ∼pθ​(τ)​[R(τ)∇lnpθ​(τ)]可换成:
∇Rˉθ=Eτ∼pθ′(τ)[pθ(τ)pθ′(τ)R(τ)∇lnpθ(τ)]\nabla \bar R_\theta=E_{\tau \sim p_{\theta'}(\tau)}[\frac{p_\theta(\tau)}{p_{\theta'}(\tau)} R(\tau)\nabla ln p_\theta(\tau)]∇Rˉθ​=Eτ∼pθ′​(τ)​[pθ′​(τ)pθ​(τ)​R(τ)∇lnpθ​(τ)]
即由E(st,at)∼πθ[Aθ(st,at)∇lnpθ(atn∣stn)]E_{(s_t,a_t)\sim \pi_\theta}[A^\theta(s_t,a_t)\nabla lnp_\theta(a^n_t|s^n_t)]E(st​,at​)∼πθ​​[Aθ(st​,at​)∇lnpθ​(atn​∣stn​)]换成
E(st,at)∼πθ′[pθ(st,at)pθ′(st,at)Aθ(st,at)∇lnpθ(atn∣stn)]E_{(s_t,a_t)\sim \pi_{\theta'}}[\frac{p_\theta (s_t,a_t)}{p_{\theta'}(s_t,a_t)}A^\theta(s_t,a_t)\nabla lnp_\theta(a^n_t|s^n_t)]E(st​,at​)∼πθ′​​[pθ′​(st​,at​)pθ​(st​,at​)​Aθ(st​,at​)∇lnpθ​(atn​∣stn​)]而实际上Advantage函数A(st,at)A(s_t,a_t)A(st​,at​)是由θ′\theta'θ′来的,则准确的式子应为:
E(st,at)∼πθ′[pθ(st,at)pθ′(st,at)pθ(st)pθ′(st)Aθ′(st,at)∇lnpθ(atn∣stn)]E_{(s_t,a_t)\sim \pi_{\theta'}}[\frac{p_\theta (s_t,a_t)}{p_{\theta'}(s_t,a_t)}\frac{p_\theta(s_t)}{p_{\theta'}(s_t)}A^{\theta'}(s_t,a_t)\nabla lnp_\theta(a^n_t|s^n_t)]E(st​,at​)∼πθ′​​[pθ′​(st​,at​)pθ​(st​,at​)​pθ′​(st​)pθ​(st​)​Aθ′(st​,at​)∇lnpθ​(atn​∣stn​)].
一般为计算方便,取E(st,at)∼πθ′[pθ(st,at)pθ′(st,at)Aθ′(st,at)∇lnpθ(atn∣stn)]E_{(s_t,a_t)\sim \pi_{\theta'}}[\frac{p_\theta (s_t,a_t)}{p_{\theta'}(s_t,a_t)}A^{\theta'}(s_t,a_t)\nabla lnp_\theta(a^n_t|s^n_t)]E(st​,at​)∼πθ′​​[pθ′​(st​,at​)pθ​(st​,at​)​Aθ′(st​,at​)∇lnpθ​(atn​∣stn​)].
Jθ′(θ)=E(st,at)∼πθ′[pθ(st,at)pθ′(st,at)Aθ′(st,at)]J^{\theta'}(\theta)=E_{(s_t,a_t)\sim \pi_{\theta'}}[\frac{p_\theta (s_t,a_t)}{p_{\theta'}(s_t,a_t)}A^{\theta'}(s_t,a_t)]Jθ′(θ)=E(st​,at​)∼πθ′​​[pθ′​(st​,at​)pθ​(st​,at​)​Aθ′(st​,at​)]

TRPO

#TODO
根据策略梯度的方法,参数更新方程式为:
θnew=˙θold+α∇θJ(θ)\theta_{new}\dot=\theta_{old}+\alpha \nabla_\theta J(\theta)θnew​=˙θold​+α∇θ​J(θ)

策略梯度算法的硬伤就在更新步⻓,当步⻓不合适时,更新的参数所对应的策略是一个更不好的策略,当利用这个更不好的策略采样学习时,再次更新的参数会更差,因此很容易导致越学越差,最后崩溃。所以,合适的步⻓对于强化学习非常关键。
什么才是合适的步⻓?
合适的步⻓是指当策略更新后,回报函数的值不能更差。那么如何选择步⻓?或者说,如何找到新的策略使新的回报函数的值单调增⻓,或单调不减?这就是TRPO要解决的问题。
考虑一个有限MDP,由元组 (S,A,P,r,ρ0,γ)(\mathcal {S,A,P,r,\rho_0,\gamma})(S,A,P,r,ρ0​,γ),其中S是状态有限集,A是动作的有限集,P:S×A×S→R\mathcal {P:S\times A\times S\rightarrow} \RP:S×A×S→R 是转移概率分布,r:S→R\mathcal {r:S\rightarrow\R}r:S→R是 奖励函数,ρ0:S→R\mathcal{\rho_0:S\rightarrow\R}ρ0​:S→R 是初始状态s0s_0s0​的分布,γ∈(0,1)\gamma\in(0,1)γ∈(0,1)是折扣因子。
π\piπ表示随机策略π:S×A→[0,1],令η(π)\mathcal{\pi:S\times A\rightarrow[0,1]}, 令\eta(\pi)π:S×A→[0,1],令η(π)表示其期望折扣奖励:
η(π)=Es0,a0,s1,…[∑t=0∞γtr(st)]\eta(\pi)=E_{s_0,a_0,s_1,\dots}[\sum^\infin_{t=0}\gamma^tr(s_t)]η(π)=Es0​,a0​,s1​,…​[t=0∑∞​γtr(st​)]

其中s0∼ρ0(so),at∼π(at∣st),st+1∼P(st+1,at)s_0\sim\rho_0(s_o),a_t\sim\pi(a_t|s_t),s_{t+1}\sim P(s_{t+1},a_t)s0​∼ρ0​(so​),at​∼π(at​∣st​),st+1​∼P(st+1​,at​),同时有以下状态动作函数QπQ_\piQπ​,值函数VπV_\piVπ​和优势函数AπA_\piAπ​:
Qπ(st,at)=Est+1,at+1,…[∑l=0∞γlr(st+k)],Q_\pi(s_t,a_t)=E_{s_{t+1},a_{t+1},\dots}[\sum^\infin_{l=0}\gamma^lr(s_{t+k})],Qπ​(st​,at​)=Est+1​,at+1​,…​[l=0∑∞​γlr(st+k​)],

Vπ(st)=Eat,st+1,…[∑l=0∞γlr(st+l],V_\pi(s_t)=E_{a_t,s_{t+1},\dots}[\sum^\infin_{l=0}\gamma^lr(s_{t+l}],Vπ​(st​)=Eat​,st+1​,…​[l=0∑∞​γlr(st+l​],

下面是新的优势策略π~\tilde \piπ~的期望回报表示:
η(π~)=η(π)+Es0,a0,s1,⋯∼π~[∑t=0∞γtAπ(st,at)](trpo-1)\eta(\tilde\pi)=\eta(\pi)+E_{s_0,a_0,s_1,\dots\sim\tilde\pi}[\sum^\infin_{t=0}\gamma^tA_\pi(s_t,a_t)]\tag{trpo-1}η(π~)=η(π)+Es0​,a0​,s1​,⋯∼π~​[t=0∑∞​γtAπ​(st​,at​)](trpo-1)

其中Es0,a0,s1,⋯∼π~E_{s_0,a_0,s_1,\dots\sim\tilde\pi}Es0​,a0​,s1​,⋯∼π~​表示动作都是从at∼π~(⋅∣st)a_t\sim\tilde\pi(\cdot|s_t)at​∼π~(⋅∣st​)采样的。

Aπ(s,a)=Qπ(s,a)−Vπ(s),A_\pi(s,a)=Q_\pi(s,a)-V_\pi(s),Aπ​(s,a)=Qπ​(s,a)−Vπ​(s),

其中at∼π(at∣st),st+1∼P(st+1∣st,at),fort≥0.a_t\sim\pi(a_t|s_t),s_{t+1}\sim P(s_{t+1}|s_t,a_t),for\ t\ge0.at​∼π(at​∣st​),st+1​∼P(st+1​∣st​,at​),for t≥0.
又是函数Aπ(s,a)=Qπ(s,a)−Vπ(s)A_\pi(s,a)=Q_\pi(s,a)-V_\pi(s)Aπ​(s,a)=Qπ​(s,a)−Vπ​(s)能评价当前动作值函数相对于平均值的大小。所以,这里的优势指的是动作值函数相比于当前状态的值函数的优势。如果优势函数大于零,则说明该动作比平均动作好,如果优势函数小于零,则说明当前动作不如平均动作好。
令 ρπ\rho_\piρπ​ 为折扣访问频率:
ρπ(s)=P(s0=s)+γP(s1=s)+γ2P(s2=s)+…,\rho_\pi(s)=P(s_0=s)+\gamma P(s_1=s)+\gamma^2P(s_2=s)+\dots,ρπ​(s)=P(s0​=s)+γP(s1​=s)+γ2P(s2​=s)+…,

其中s0∼ρ0s_0\sim\rho_0s0​∼ρ0​,动作都是根据π\piπ来选择的。现在用加权状态代替时间步长t重写更新等式(trpo-1):
η(π~)=η(π)+∑s∈SP(st=s∣π~)∑a∈A∑t=0∞γtAπ(s,a)π~(a∣s)=η(π)+∑t=0∞∑sP(st=s∣π~)∑aπ~(a∣s)γtAπ(s,a)=η(π)+∑s∑t=0∞γtP(st=s∣π~)∑aπ~(a∣s)Aπ(s,a)=η(π)+∑sρπ~(s)∑aπ~(a∣s)Aπ(s,a)(trpo-2)\begin{aligned} \eta(\tilde \pi) &= \eta(\pi)+\sum_{s\in\mathcal S}P(s_t=s|\tilde\pi)\sum_{a\in \mathcal A}\sum^\infin_{t=0}\gamma^tA_\pi(s,a)\tilde\pi(a|s) \\ &= \eta(\pi)+\sum^\infin_{t=0}\sum_sP(s_t=s|\tilde\pi)\sum_a\tilde\pi(a|s)\gamma^tA_\pi(s,a)\\ & = \eta(\pi)+\sum_s\sum^\infin_{t=0} \gamma^tP(s_t=s|\tilde\pi)\sum_a\tilde\pi(a|s)A_\pi(s,a)\\ &= \eta(\pi)+\sum_s\rho_{\tilde\pi}(s)\sum_a\tilde\pi(a|s)A_\pi(s,a)\\ \end{aligned}\tag{trpo-2}η(π~)​=η(π)+s∈S∑​P(st​=s∣π~)a∈A∑​t=0∑∞​γtAπ​(s,a)π~(a∣s)=η(π)+t=0∑∞​s∑​P(st​=s∣π~)a∑​π~(a∣s)γtAπ​(s,a)=η(π)+s∑​t=0∑∞​γtP(st​=s∣π~)a∑​π~(a∣s)Aπ​(s,a)=η(π)+s∑​ρπ~​(s)a∑​π~(a∣s)Aπ​(s,a)​(trpo-2)
这一等式说明了任何 π→π~\pi\rightarrow\tilde\piπ→π~ 每个状态s的非负期望优势的策略更新(即∑aπ~(a∣s)Aπ(s,a)≥0\sum_a\tilde\pi(a|s)A_\pi(s,a)\ge0∑a​π~(a∣s)Aπ​(s,a)≥0),能保证策略表现是递增的,或至少保持期望不变的其他位置.

在(trpo-2)中,第二项动作a是由新的策略π~\tilde\piπ~产生的,加入重要性采样,即:
∑aπ~(a∣s)Aπ~(s,a)=∑aπ(a,s)π~(a∣s)π(a,s)Aπ(a,s)\sum_a\tilde\pi(a|s)A_{\tilde\pi}(s,a)=\sum_a\pi(a,s)\frac{\tilde\pi(a|s)}{\pi(a,s)}A_{\pi}(a,s)a∑​π~(a∣s)Aπ~​(s,a)=a∑​π(a,s)π(a,s)π~(a∣s)​Aπ​(a,s)

Lπ(π~)=η(π)+∑sρπ(s)∑aπ~(a∣s)Aπ(s,a)(trpo-3)L_\pi(\tilde\pi)=\eta(\pi)+\sum_s\rho_\pi(s)\sum_a\tilde\pi(a|s)A_\pi(s,a)\tag{trpo-3}Lπ​(π~)=η(π)+s∑​ρπ​(s)a∑​π~(a∣s)Aπ​(s,a)(trpo-3)

注意到LπL_\piLπ​用的访问频率是ρπ\rho_\piρπ​而不是ρπ~\rho_{\tilde\pi}ρπ~​, 如果策略函数可微,那么Lπ,ηL_\pi,\etaLπ​,η是一阶匹配的,即
Lπθ0(πθ0)=η(πθ0),L_{\pi_{\theta_0}}(\pi_{\theta0})=\eta(\pi_{\theta_0}),Lπθ0​​​(πθ0​)=η(πθ0​​),

∇θLπθ0(πθ)∣θ=θ0=∇θη(πθ)∣θ=θ0.(trpo-4)\nabla_\theta L_{\pi_{\theta_0}(\pi_\theta)|_{\theta=\theta_0}}=\nabla_\theta\eta(\pi_\theta)|_{\theta=\theta_0}.\tag{trpo-4}∇θ​Lπθ0​​(πθ​)∣θ=θ0​​​=∇θ​η(πθ​)∣θ=θ0​​.(trpo-4)
式子(trpo-4)表明能够使LπθoldL_{\pi_{\theta_{old}}}Lπθold​​​改进的从πθ0→π~\pi_{\theta_0}\rightarrow\tilde\piπθ0​​→π~足够小的步长也会改进η\etaη,但是没有确定这个范围是多少。
。。。(to be continued)

JTRPOθ′(θ)=E(st,at)∼πθ′[pθ(st,at)pθ′(st,at)Aθ′(st,at)]J^{\theta'}_{TRPO}(\theta)=E_{(s_t,a_t)\sim \pi_{\theta'}}[\frac{p_\theta (s_t,a_t)}{p_{\theta'}(s_t,a_t)}A^{\theta'}(s_t,a_t)]JTRPOθ′​(θ)=E(st​,at​)∼πθ′​​[pθ′​(st​,at​)pθ​(st​,at​)​Aθ′(st​,at​)] ,KL(θ,θ′)<δKL(\theta,\theta')<\deltaKL(θ,θ′)<δ

PPO(Proximal Policy Optimization)

Critic

Q-function
Value function
Action-Value function

Actor-Critic

Actor-Critic算法是一种无模型的,off-policy的方法,其中critic充当价值函数近似器,而actor充当政策函数近似器。在训练时,critic会预测TD误差并指导自身和actor的学习。在实践中,我们使用Advantage函数估算TD误差。为了获得更高的稳定性,我们在两个网络之间使用了共享的计算主干,并采用了折价奖励的N步公式。我们还引入了熵正则化术语(“软”学习)以鼓励探索。尽管A2C简单高效,但由于计算时间长,因此在Atari Games上运行它很快变得棘手

RL书中的内容

尽管REINCORCE-with_baseline方法同时学习了一个policy和一个state-value函数,但是我们不认为它是一个actor-critic方法,因为其状态值函数只作为baseline而不作为critic,不是用作bootsrapping(从后续状态估计值来更新状态值函数)。
首先考虑一步的Actor-Critic情况,类似的TD方法有TD(0),Sarsa(0)和Q-learning. 一步的Actor-Critic方法(用已学习的状态值函数作为baseline)如下:
θt+1←θt+α(Gt:t+1−v^(St,w))∇π(At∣St,θt)π(At∣St,θt)=θt+α(Rt+1+γv^(St+1,w)−v^(St,w))∇π(At∣St,θt)π(At∣St,θt)=θt+αδt∇π(At∣St,θt)π(At∣St,θt)\begin{aligned} \theta_{t+1} &\leftarrow \theta_t+\alpha(G_{t:t+1}-\hat v(S_t,w))\frac{\nabla\pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)} \\ &=\theta_t +\alpha(R_{t+1}+\gamma \hat v(S_{t+1},w)-\hat v(S_t,w))\frac{\nabla\pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)} \\ &=\theta_t+\alpha \delta_t\frac{\nabla\pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)} \end{aligned}θt+1​​←θt​+α(Gt:t+1​−v^(St​,w))π(At​∣St​,θt​)∇π(At​∣St​,θt​)​=θt​+α(Rt+1​+γv^(St+1​,w)−v^(St​,w))π(At​∣St​,θt​)∇π(At​∣St​,θt​)​=θt​+αδt​π(At​∣St​,θt​)∇π(At​∣St​,θt​)​​

pseudocode

Hung Yi Li的讲义

在PG算法中,如果我们用Q函数来代替R,同时我们创建一个Critic网络来计算Q函数值,那么我们就得到了Actor-Critic方法。Actor参数的梯度变为

由于GtnG^n_tGtn​的期望就是Qπθ(stn,atn)Q^{\pi_\theta}(s^n_t,a^n_t)Qπθ​(stn​,atn​), baseline可用Vπθ(stn)V^{\pi_\theta}(s^n_t)Vπθ​(stn​)代替,那么括号内可写成Qπ(stn,atn)−Vπ(stn)Q^\pi(s^n_t,a^n_t)-V^\pi(s^n_t)Qπ(stn​,atn​)−Vπ(stn​), 又有
Qπ(stn,atn)=E[rtn+Vπ(st+1n)]Q^\pi(s^n_t,a^n_t)=E[r^n_t+V^\pi(s^n_{t+1})]Qπ(stn​,atn​)=E[rtn​+Vπ(st+1n​)],
在计算的时候每一次获取的QQQ值为 Qπ(stn,atn)=rtn+Vπ(st+1n)Q^\pi(s^n_t,a^n_t)=r^n_t+V^\pi(s^n_{t+1})Qπ(stn​,atn​)=rtn​+Vπ(st+1n​),则Qπ(stn,atn)−Vπ(stn)Q^\pi(s^n_t,a^n_t)-V^\pi(s^n_t)Qπ(stn​,atn​)−Vπ(stn​)可用rtn+Vπ(st+1n)−Vπ(stn)r^n_t + V^\pi(s^n_{t+1})-V^\pi(s^n_t)rtn​+Vπ(st+1n​)−Vπ(stn​)代替.

A2C(Advantage Actor-Critic)

那么Advantage Actor-Critic的∇Rˉθ≈1N∑n=1N∑t=1Tn(rtn+Vπ(st+1n)−Vπ(stn))∇lnpθ(atn∣stn)\nabla \bar R_\theta \approx \frac{1}{N}\sum^N_{n=1}\sum^{T_n}_{t=1}(r^n_t+V^\pi(s^n_{t+1})-V^\pi(s^n_t))\nabla lnp_\theta(a^n_t|s^n_t)∇Rˉθ​≈N1​∑n=1N​∑t=1Tn​​(rtn​+Vπ(st+1n​)−Vπ(stn​))∇lnpθ​(atn​∣stn​)

Tips

  • Actor π(s)\pi(s)π(s)和critic Vπ(s)V^\pi(s)Vπ(s)的参数能被共享

  • Assign Suitable Credit. 有时候整场游戏都是正奖励,但是某些action是不好的,怎么解决这样问题?

DPG

Silver, David, Lever, Guy, Heess, Nicolas, Degris, Thomas, Wierstra,Daan, and Riedmiller, Martin. Deterministic policy gradient algorithms. In ICML, 2014

DDPG(DeepDPG)

符号定义:
一个离散时步(discrete timesteps)的环境 EEE,
st=(x1,a1,…,at−1,xt)s_t=(x_1,a_1,\dots,a_{t-1},x_t)st​=(x1​,a1​,…,at−1​,xt​),
一个Agent的动作被定义成一个策略π\piπ,
一个初始状态分布p(s1)p(s_1)p(s1​),
状态转移概率p(st+1∣st,at)p(s_{t+1}|s_t,a_t)p(st+1​∣st​,at​),
reward function r(st,at)r(s_t,a_t)r(st​,at​)
在一个状态的回报return定义为折扣未来奖励之和Rt=∑i=tTγi−tr(si,ai),γ∈[0,1]R_t=\sum^T_{i=t}\gamma^{i-t}r(s_i,a_i),\gamma\in[0,1]Rt​=∑i=tT​γi−tr(si​,ai​),γ∈[0,1].
注意到回报取决于策略所选择的动作,是随机的。强化学习的目标是学一个策略使一下初始分布的期望回报最大:
J=Eri,si∼E,ai∼π[R1]J=\mathbb E_{r_i,s_i\sim E,a_i\sim\pi}[R_1]J=Eri​,si​∼E,ai​∼π​[R1​]

再令ρπ\rho^\piρπ表示一个策略π\piπ的折扣状态访问分布.
动作值函数在状态sts_tst​遵从策略π\piπ采取动作ata_tat​的期望回报:
Qπ(st,at)=Eri≥t,si>t∼E,ai>t∼π[Rt∣st,at](DDPG-1)Q^\pi(s_t,a_t)=\mathbb E_{r_{i\ge t},s_{i>t}\sim E,a_{i>t}\sim\pi}[R_t|s_t,a_t]\tag{DDPG-1}Qπ(st​,at​)=Eri≥t​,si>t​∼E,ai>t​∼π​[Rt​∣st​,at​](DDPG-1)

强化学习中的许多方法都使用称为Bellman方程的递归关系:
Qπ(st,at)=Ert,st+1∼E{r(st,at)+γEat+1∼π[Qπ(st+1,at+1)]}(DDPG-2)Q^\pi(s_t,a_t)=\mathbb E_{r_t,s_{t+1}\sim E}\{r(s_t,a_t)+\gamma\mathbb E_{a_{t+1}\sim\pi}[Q^\pi(s_{t+1},a_{t+1})]\}\tag{DDPG-2}Qπ(st​,at​)=Ert​,st+1​∼E​{r(st​,at​)+γEat+1​∼π​[Qπ(st+1​,at+1​)]}(DDPG-2)

如果目标策略是确定性的(发生的概率为1),我们可以将其描述为一个函数μ:S←A\mathcal{\mu:S\leftarrow A}μ:S←A以及避免内在期望:
Qμ(st,at)=Ert,st+1∼E{r(st,at)+γQμ(st+1,μ(st+1)]}(DDPG-3)Q^\mu(s_t,a_t)=\mathbb E_{r_t,s_{t+1}\sim E}\{r(s_t,a_t)+\gamma Q^\mu(s_{t+1},\mu(s_{t+1})]\}\tag{DDPG-3}Qμ(st​,at​)=Ert​,st+1​∼E​{r(st​,at​)+γQμ(st+1​,μ(st+1​)]}(DDPG-3)

这意味着可以去学习QμQ^\muQμ off-policy,运用一个不同的随机behavior策略β\betaβ产生转移对(s_t,a_t,s_{t+1}).
受到Q-learning的启发(使用一个off-policy算法,用贪婪策略μ(s)=argmaxaQ(s,a)\mu(s)=arg\ max_aQ(s,a)μ(s)=arg maxa​Q(s,a)),我们考虑一个近似函数,七参数为θQ,\theta^Q,θQ,我们去优化减小下面的loss函数:
L(θQ)=Est∼ρβ,at∼β,rt∼E[(Q(st,at∣θQ)−yt)2](DDPG-4)L(\theta^Q)=\mathbb E_{s_t\sim\rho^\beta,a_t\sim\beta,r_t\sim E}[(Q(s_t,a_t|\theta^Q)-y_t)^2]\tag{DDPG-4}L(θQ)=Est​∼ρβ,at​∼β,rt​∼E​[(Q(st​,at​∣θQ)−yt​)2](DDPG-4)

其中
yt=r(st,at)+γQ(st+1,μ(st+1)∣θQ)(DDPG-5)y_t=r(s_t,a_t)+\gamma Q(s_{t+1},\mu(s_{t+1})|\theta^Q)\tag{DDPG-5}yt​=r(st​,at​)+γQ(st+1​,μ(st+1​)∣θQ)(DDPG-5)

用基于DPG算法的actor-critic方法。DPG算法包括一个actor函数μ(s∣θμ)\mu(s|\theta^\mu)μ(s∣θμ),其critic函数Q(s,a)Q(s,a)Q(s,a)用Q-learning中的bellman等式去学习。actor更新,基于以下:
∇θμJ≈Est∼ρβ[∇θμQ(s,a∣θQ)∣s=st,a=μ(st∣θμ)]=Est∼ρβ[∇aQ(s,a∣θQ)∣s=st,a=μ(st)∇θμμ(s∣θμ)∣s=st]\begin{aligned}\nabla_{\theta^\mu}J &\approx \mathbb E_{s_t\sim\rho^\beta}[\nabla_{\theta^\mu}Q(s,a|\theta^Q)|_{s=s_t,a=\mu(s_t|\theta^\mu)}]\\ &=\mathbb E_{s_t\sim\rho^\beta}[\nabla_aQ(s,a|\theta^Q)|_{s=s_t,a=\mu(s_t)}\nabla_{\theta_\mu}\mu(s|\theta^\mu)|_{s=s_t}] \end{aligned}∇θμ​J​≈Est​∼ρβ​[∇θμ​Q(s,a∣θQ)∣s=st​,a=μ(st​∣θμ)​]=Est​∼ρβ​[∇a​Q(s,a∣θQ)∣s=st​,a=μ(st​)​∇θμ​​μ(s∣θμ)∣s=st​​]​

正如DQN中,用回放缓存R\mathcal RR,状态转移对从环境中根据探索策略来采集,(st,at,rt,st+1)(s_t,a_t,r_t,s_{t+1})(st​,at​,rt​,st+1​)被存到回放缓存中。当回放缓存满了最老的样本会被扔掉。在每个时间步长,actor和critic都会用缓存中采集的minibatch更新。因为DDPG是off-policy的,缓存可以较大,以允许算法从非相关 状态转移对 中学到东西。

直接将神经网络的Q-learning应用式子DDPG-4在多数环境下被证明是不稳定的,因为用于更新的网络Q(s,a∣θQ)Q(s,a|\theta^Q)Q(s,a∣θQ)也被用于计算目标值(DDPG-5), 其Q的更新容易产生分歧。我们的目标网络与DQN类似,但修改了actor-critic并且用了“soft“目标更新,而不是直接复制参数权值。分别复制actor和critic的网络Q′(s,a∣θQ′),μ′(s∣θμ′)Q'(s,a|\theta^{Q'}),\mu'(s|\theta^{\mu'})Q′(s,a∣θQ′),μ′(s∣θμ′), 用于计算目标值。
然后让网络缓慢跟踪学习的网络来更新这些目标网络的权值:θ′←τθ+(1−τ)θ′,withτ≪1\theta'\leftarrow\tau\theta+(1-\tau)\theta',\ with\ \tau\ll1θ′←τθ+(1−τ)θ′, with τ≪1.这使得目标值能被限制缓慢更新,极大改善学习的稳定性。这种简单的变化使学习动作值函数的相对不稳定的问题更接近于监督学习的情况。同时具有目标µ’和Q’必须具有稳定的目标y,以便一致地训练critic而不会产生分歧。这可能会减慢学习速度,因为目标网络会延迟值估计的传播。但是,在实践中,我们发现学习的稳定性远远超过了这一点。

在连续动作空间中学习的主要挑战是探索。诸如DDPG之类的off-policy算法的优势在于,我们可以独立于学习算法来处理探索问题。我们通过将噪声过程N\mathcal NN中采样的噪声添加到我们的actor策略中,构造了探索策略µ’:
μ′(st)=μ(st∣θtμ)+N(DDPG-7)\mu'(s_t)=\mu(s_t|\theta^\mu_t)+\mathcal N\tag{DDPG-7}μ′(st​)=μ(st​∣θtμ​)+N(DDPG-7)

可以N\mathcal NN选择以适应环境
pseudocode:

A3C

异步地执行多个 agent, 通过并行的 agent 经历的不同状态,去除训练过程中产生的状态转移样本之间的关联性;
只需一个标准的多核CPU即可实现算法,在效果、时间和资源消耗上都优于传统方法

GA3C

使用gpu的a3c
https://openreview.net/forum?id=r1VGvBcxl&noteId=r1VGvBcxl
https://github.com/NVlabs/GA3C/tree/master/ga3c

Pathwise Derivative Policy Gradient


PolicyGradientMethods-强化学习相关推荐

  1. 机器学习概念 — 监督学习、无监督学习、半监督学习、强化学习、欠拟合、过拟合、后向传播、损失和优化函数、计算图、正向传播、反向传播

    1. 监督学习和无监督学习 监督学习 ( Supervised Learning ) 和无监督学习 ( Unsupervised Learning ) 是在机器学习中经常被提及的两个重要的学习方法. ...

  2. python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)

    [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...

  3. 读后感和机翻《人类因果迁移:深度强化学习的挑战》

    研究朱松纯FPICU体系的第1篇文章 <Human Causal Transfer: Challenges for Deep Reinforcement Learning>CogSci 2 ...

  4. ADPRL - 近似动态规划和强化学习 - Note 8 - 近似策略迭代 (Approximate Policy Iteration)

    Note 8 近似策略迭代 Approximate Policy Iteration 近似策略迭代 Note 8 近似策略迭代 Approximate Policy Iteration 8.1 通用框 ...

  5. ADPRL - 近似动态规划和强化学习 - Note 7 - Approximate Dynamic Programming

    Note 7 - 近似动态规划 Approximate Dynamic Programming 7. 近似动态规划 (Approximate Dynamic Programming) 7.1 近似架构 ...

  6. 强化学习(九)- 策略梯度方法 - 梯度上升,黑箱优化,REINFORCE算法及CartPole实例

    策略梯度方法 引言 9.1 策略近似和其优势 9.2 策略梯度定理 9.2.1 梯度上升和黑箱优化 9.2.2 策略梯度定理的证明 9.3 REINFORCE:蒙特卡洛策略梯度 9.3.1 轨迹上的R ...

  7. 强化学习(八) - 深度Q学习(Deep Q-learning, DQL,DQN)原理及相关实例

    深度Q学习原理及相关实例 8. 深度Q学习 8.1 经验回放 8.2 目标网络 8.3 相关算法 8.4 训练算法 8.5 深度Q学习实例 8.5.1 主程序 程序注释 8.5.2 DQN模型构建程序 ...

  8. 强化学习(七) - 函数近似方法 - 随机梯度下降, 半梯度下降,及瓦片编码(Tile Coding)实例

    函数近似方法 7.1 目标预测(VE‾\overline{VE}VE) 7.2 随机梯度下降和半梯度下降 例7.1: 1000态随机行走的状态收敛 7.3 线性近似 7.4 线性方法的特征构造 7.4 ...

  9. 强化学习(六) - 连续空间中的强化学习(RL in Continuous Spaces)及相关实例

    强化学习(六) - 连续空间中的强化学习 6.1 连续空间中的强化学习 6.2 离散空间和连续空间 6.3 离散化 实例:小车上山 6.3.1 相关程序 6.3.2 程序注解 (1) 环境测试 (2) ...

  10. 强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例----Sarsa算法, Q学习, 期望Sarsa算法

    强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例 5.1 TD预测 例5.1 回家时间的估计 5.2 TD预测方法的优势 例5.2 随机移动 5.3 ...

最新文章

  1. 7号团队:团队任务3-每日任务(2018-11-26)
  2. 从Pix2Code到CycleGAN:2017年深度学习重大研究进展全解读
  3. Android点击图标重新启动问题
  4. 再谈select, iocp, epoll,kqueue及各种I/O复用机制 - Shallway - 博客频道 - CSDN.NET
  5. C语言二叉查找树练习:单词查找
  6. 想写总结,却变成了胡诌。。。
  7. 面试奇葩——交换两变量值的一些邪门歪道
  8. linux父设备,linux 设备模型---学习记录(二)
  9. 巴塞尔大学合作项目博士招生,医学图像分析领域
  10. 面试热问——你在前一份工作(实习)学到什么?
  11. python I/O原理
  12. java求最大值时i的值_java 输入一组数组,求最大值。
  13. [Android] android:visibility属性应用
  14. Zircon DDK入门指南
  15. Python一元二次方程求根
  16. 在Linux环境下通过百度网盘下载并安装matlab2017a
  17. 用JSP构建三层管理信息系统
  18. HDU 4417 Super Mario(划分树)
  19. 弹幕 mysql_3、Flask构建弹幕微电影网站-安装mysql数据库及配置
  20. 单片机编程入门学习 这几问你能回答吗?

热门文章

  1. thinkphp5 获取当前的域名
  2. 无网络访问权限怎么办_解决无Internet访问权限
  3. mysql 魔术设置_详解php魔术方法(Magic methods)的使用方法
  4. PHP实现弹出消息提示框的两种方法
  5. 软件测试和系统试验,实验四 软件系统性测试
  6. form表单上传文件_SpringBoot中如何使用SpringMVC上传文件?
  7. java nio socket长连接_netty学习实战—实现websocket长连接和socket之间进程通信
  8. rp软件app流程图_Axure RP 9 for Mac交互原型设计软件
  9. mysql php加速_mysql存储过程加速 - mysql数据库栏目 - 自学php
  10. win10虚拟机怎么连接服务器,Win10系统虚拟机尝试连接到服务器出错怎么办