在开始说基于Stochastic Policy
的方法之前,我们需要了解一下Policy Gradient
的方法。在Policy Gradient里面有一个非常重要的定理:Policy Gradient Theorem。
For any differentiable policy
πθ(a∣s), for any of policy objective function
J=J1,JavR,JavV, the policy gradient is:
∂θ∂J(θ)=Eπθ[∂θ∂logπθ(a∣s)Qπθ(s,a)]
上面这个式子也是Stochastic Policy
里面的核心梯度公式,你可以不需要证明怎么来的,但是需要理解它背后的思想。
Policy Network Gradients
如果我们的Policy
用Neural Network
来近似拟合,最后一层使用Softmax的话,那输出的动作概率可表示为如下函数形式:
πθ(a∣s)=∑a′efθ(s,a′)efθ(s,a)
其中
fθ(s,a) is the score function of a state-action pair parametrized by
θ, which can be implemented with a neural net。
The gradient of its log-form可表示为:
∂θ∂logπθ(a∣s)=∂θ∂fθ(s,a)−∑a′efθ,a′)1a′′∑efθ(s,a′′)∂θ∂fθ(s,a′′)=∂θ∂fθ(s,a)−Ea′∼πθ(a′∣s)[∂θ∂fθ(s,a′)]
上述公式中最后一个等式很有意思,它是score function
对某一个具体的动作
a 求梯度,然后减去对所有动作的梯度的期望。(可以思考一下其背后的含义)。
Looking into Policy Gradient
在Policy Network Gradients
里面我们将策略引入Softmax
函数进行了拆解求导,得到一个梯度,这个梯度还需要去乘上优势函数再拿去做更新,所以这里需要回顾一下Policy Gradient
方法。
- Let
R(π) denote the expected return of
π:
R(π)=Es0∼ρ0,at∼π(⋅∣st)[t=0∑∞γtrt]
- We collect experience data with another policy
πold ,and want to optimize some objective to get a new better policy
π。
由于强化学习的学习过程需要大量数据,所以我们必须从提高数据使用率,因此过去的policy
采集所得到的数据,还是要拿过来用,由此也是off-policy
的一种方法。
- Note that a useful identity
R(π)=R(πold)+Eτ∼π[t=0∑∞γtAπold(st,at)]
其中的
Eτ∼π可以Trajectories sampled from
π。
Aπold 表示的是优势函数。
Advantage function展开表示如下:
Aπold(s,a)=Es′∼ρ(s′∣s,a)[r(s)+γVπold(s′)−Vπold(s)]
很多时候你也会看到一些简洁的表达,比如
A(s,a)=Q(s,a)−V(s),其中
V(s)描述的是baseline的思想,而
A(s,a)表达的是每个动作选择的好坏,而
Vπ(s)=∑aπ(a∣s)Qπ(s,a)。
Proof
R(π)=R(πold)+Eτ∼π[t=0∑∞γtAπold(st,at)]
对上述等式证明:
Eτ∼π[t=0∑∞γtAπold(st,at)]=Eτ∼π[t=0∑∞γt(r(st)+γVπold(st+1)−Vπold(st))]=Eτ∼π[−Vπold(s0)+t=0∑∞γtr(st)]=−Es0[Vπold(s0)]+Eτ∼π[t=0∑∞γtr(st)]=−R(πold)+R(π)
那上述公式的直观理解是什么样子的呢?相当于是在老的policy基础之上做一点改进,而改进的优势函数又是基于old policy所得出来的,但action是基于新的策略
π选出来的,所以及时奖励会去修正原来Old policy得出来的
V。
- S. Kakadeand J. Langford. Approximately optimal approximate reinforcement learning. ICML. 2002.
More for the Policy Expected Return
我们再来分析一下advantage function:
Aπold(s,a)=Es′∼ρ(s′∣s,a)[r(s)+γVπold(s′)−Vπold(s)]
Want to manipulate
R(π) into an objective that can be estimated from data :
R(π)=R(πold )+Eτ∼π[t=0∑∞γtAπold (st,at)]=R(πold )+t=0∑∞s∑P(st=s∣π)a∑π(a∣s)γtAπold (s,a)=R(πold )+s∑t=0∑∞γtP(st=s∣π)a∑π(a∣s)Aπold (s,a)=R(πold )+s∑ρπ(s)a∑π(a∣s)Aπold (s,a)
其中
ρπ(s)表示的是基于当前策略
π,
s被采样采中的概率,乘以它是哪一次被采中的概率
γt。
但是上述等式依然要从新的策略
π里面去sample
数据,当策略改变之后,要重新sample
数据才可以更新。为了解决这个问题,引入重要性采样。
R(π)=R(πold )+s∑ρπ(s)a∑π(a∣s)Aπold (s,a)=R(πold )+Es∼π,a∼π[Aπold (s,a)]=R(πold )+Es∼π,a∼πold [πold (a∣s)π(a∣s)Aπold (s,a)]
也就是state
s 从新的policy采样,
a从old policy
采样。上面这一步是完全恒等,但是
s 依然需要从新的policy上面来采样。
Surrogate Loss Function
- Define a surrogate loss function based on sampled data that ignores change in state distribution :
L(π)=Es∼πold,a∼πold [πold (a∣s)π(a∣s)Aπold (s,a)]
此时数据可以完全由old ploicy
采样得到。这个可替代(surrogate)的loss function
与之前的loss function
区别就在于state
是从哪个policy sample
出来的。上述等式能够替代的条件是old policy
和新的policy
差距不要太大。
现在我们来对上述过程做一个小结:
开始我们是有一个Target function
:
R(π)=R(πold )+Es∼π,a∼π[π(a∣s)Aπold (s,a)]
之后通过重要性采样,使得其在old policy
上采样:
L(π)=Es∼πold,a∼πold [πold (a∣s)π(a∣s)Aπold (s,a)]
然后我们对其进行求导:
∇θL(πθ)∣θold =Es∼πold ,a∼πold [πold (a∣s)∇θπθ(a∣s)Aπold (s,a)]∣∣∣∣θold =Es∼πold ,a∼πold [πold (a∣s)πθ(a∣s)∇θlogπθ(a∣s)Aπold (s,a)]∣∣∣∣θold =Es∼πold ,a∼πθ[∇θlogπθ(a∣s)Aπold (s,a)]∣θold =∇θR(πθ)∣θold
我的微信公众号名称:深度学习与先进智能决策
微信公众号ID:MultiAgent1024
公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!