强化学习简介(五):策略梯度Policy Gradient

DQN证明了深度学习在增强学习中的可行性。深度学习可以将复杂的概念隐含在网络之中。但是DQN并没有将所有的概念都隐含在网络之中,只是把Q值的计算放在了网络之中,比如ε-greedy动作选择策略。因为如何选择动作和如何通过Q值计算出目标值,都是DQN所面临的问题,而Q值的目的也是为了选择动作。我们可以将增加学习的问题简化为选择动作的问题。那么我们可否使用深度学习直接做出动作选择呢?显然,我们可以定义一个网络πθ,其中输入为状态s,输出为每个动作a的概率。

策略梯度

因为这个网络与策略函数的定义一样,所以被称为策略网络。πθ(as),表示在s状态下选择动作a的概率。只要这个网络能够收敛,我们就可以直接得到最佳策略。这个网络的奖励函数也就是最终游戏的总奖励。

J(θ)=sSdπ(s)Vπ(s)=sSdπ(s)aAπθ(as)Qπ(s,a)

dπ(s)指状态s在马尔科夫链上的稳定分布,dπ(s)=limtP(st=ss0,πθ)

但是这个表达式看上去是不可能计算的,因为状态的分布和Q值都是随着策略的更新而不断变化的。但是我们并不需要计算J(θ),在梯度下降法中我们只需要计算梯度θJ(θ)即可

θVπ(s)
=θ(aAπθ(as)Qπ(s,a))
根据导数乘法规则
=aA(θπθQπ(s,a)+πθ(as)θQπ(s,a))
展开Qπ(s,a)为各各种可能的下一状态奖励之和
=aA(θπθQπ(s,a)+πθ(as)θs,rP(s,rs,a)(r+Vπ(s)))
而其中状态转移函数P(s,rs,a)、奖励r由环境决定,与θ无关,所以
=aA(θπθQπ(s,a)+πθ(as)s,rP(s,rs,a)θVπ(s))
=aA(θπθQπ(s,a)+πθ(as)sP(ss,a)θVπ(s))

现在我们有了一个形式非常好的递归表达式:
θVπ(s)=aA(θπθQπ(s,a)+πθ(as)sP(ss,a)θVπ(s))

ρπ(sx,k) 表示在策略πθ下,k步以后状态s转移到状态x的概率。有:

  • ρπ(ss,k=0)=1
  • ρπ(ss,k=1)=aπθ(as)P(ss,a)
  • ρπ(sx,k+1)=sρπ(ss,k)ρπ(sx,1)

为了简化计算,令 ϕ(s)=aAθπθ(as)Qπ(s,a)

θVπ(s)
=ϕ(s)+aAπθ(as)sP(ss,a)θVπ(s)
=ϕ(s)+saAπθ(as)P(ss,a)θVπ(s)
=ϕ(s)+sρπ(ss,1)θVπ(s)
=ϕ(s)+sρπ(ss,1)(ϕ(s)+sρπ(ss,1)θVπ(s))
=ϕ(s)+sρπ(ss,1)ϕ(s)+sρπ(ss,2)θVπ(s)
=ϕ(s)+sρπ(ss,1)ϕ(s)+sρπ(ss,2)ϕ(s)+sρπ(ss,3)θVπ(s)
=
=xSk=0ρπ(sx,k)ϕ(x)

η(s)=k=0ρπ(s0s,k)

θJ(θ)=θVπ(s0)
=sk=0ρπ(s0s,k)ϕ(s)
=sη(s)ϕ(s)
=(sη(s))s(η(s)sη(s))ϕ(s)
sη(s) 属于常数,对于求梯度而言常数可以忽略。
s(η(s)sη(s))ϕ(s)
ηssη(s)表示s的稳定分布
=sdπ(s)aθπθ(as)Qπ(s,a)
=sdπ(s)aπθ(as)Qπ(s,a)θπθ(as)πθ(as)
(lnx)=1x
=Errπ[Qπ(s,a)θlnπθ(as)]

所以得出策略梯度最重要的定理:

θJ(θ)=Errπ[Qπ(s,a)θlnπθ(as)]

其中的Qπ(s,a)也就是状态s的累计收益,可以在一次完整的动作轨迹中累计计算得出。

算法描述

该算法被称为 REINFORCE

  • 随机初始化θ
  • 生成一个完整的策略πθ的轨迹: S1,A1,R2,S2,A2,,ST
  • For t=1, 2, … , T-1:
    • vt=i=0γiRt+i+1
    • θθ+αvtlnπθ(AtSt)

参考:
Lilian Weng:Policy Gradient Algorithms