文章目录
1、基本组成部分
\qquad
Policy Gradient由3部分组成,分别是actor,environment和reward function,其中actor是可以控制的,但是environment和reward function是在学习之前事先给定的,不能控制。
\qquad
不同于Q-Learning基于值函数来决定下一个策略,policy gradient通过一个神经网络来决定下一个策略
π
\pi
π,神经网络的输入是特征向量或者矩阵,表示当前状态和环境,如在游戏中为游戏画面(图像pixel);神经网络的输出为:所有可选动作的概率分布。根据输出的概率来选择最优的动作
π
\pi
π进行执行。执行完选定的动作之后,会产生一个执行动作之后的收益
r
r
r。【这里区分一下Policy Gradient和DQN:在DQN中,神经网络的作用是计算Bellman方程的后效收益,最终还是基于值函数来选择下一个策略,不同于policy gradient直接输出选择所有策略的一个概率。】
2、policy gradient执行过程
\qquad
从开始输入状态
s
1
s_1
s1,选择执行动作
a
1
a_1
a1,得到收益
r
1
r_1
r1,依次类推直到
T
T
T个时间步之后到达结束状态,这么一个过程叫做一个episode,一个episode的总收益表示为:
R
=
∑
t
=
1
T
r
t
R=\sum_{t=1}^{T}r_t
R=∑t=1Trt,actor的目标是为了最大化总收益
R
R
R。
\qquad
令
τ
=
{
s
1
,
a
1
,
s
2
,
a
2
,
.
.
.
,
s
T
,
a
T
}
\tau = \{ s_1,a_1,s_2,a_2,...,s_T,a_T\}
τ={s1,a1,s2,a2,...,sT,aT}表示一个trajectory,即所有的状态的动作的串联concatanation。从而,在给定参数
θ
\theta
θ条件下,可以计算一个trajectory出现的概率:
p
θ
(
τ
)
=
p
(
s
1
)
p
θ
(
a
1
∣
s
1
)
p
(
s
2
∣
s
1
,
a
1
)
p
θ
(
a
2
∣
s
2
)
p
(
s
3
∣
s
2
,
a
2
)
.
.
.
=
p
(
s
1
)
∏
t
=
1
T
p
θ
(
a
t
∣
s
t
)
p
(
s
t
+
1
∣
s
t
,
a
t
)
p_{\theta}(\tau)=p(s_1)p_{\theta}(a_1|s_1)p(s_2|s_1,a_1)p_{\theta}(a_2|s_2)p(s_3|s_2,a_2)...\\ =p(s_1)\prod_{t=1}^Tp_{\theta}(a_t|s_t)p(s_{t+1}|s_t,a_t)
pθ(τ)=p(s1)pθ(a1∣s1)p(s2∣s1,a1)pθ(a2∣s2)p(s3∣s2,a2)...=p(s1)t=1∏Tpθ(at∣st)p(st+1∣st,at)
\qquad
上式中,
p
(
s
t
+
1
∣
s
t
,
a
t
)
p(s_{t+1}|s_t,a_t)
p(st+1∣st,at)属于环境控制的部分,某些情况下可能是确定的,即给定一个状态动作,下一个状态时确定的;但某些情况下,如游戏情境中,通常是不确定的。
\qquad
上述介绍了一个episode对应的收益
R
R
R,即每一个trajectory对应一个收益
R
R
R,而由于在动作选择,甚至状态更新的时候都是有随机性的,所以更可靠,更有代表性的收益值是期望收益值,如下所示:
R
ˉ
θ
=
∑
τ
R
(
τ
)
p
θ
(
τ
)
=
E
τ
∼
p
θ
(
τ
)
[
R
(
τ
)
]
\bar{R}_{\theta}=\sum_{\tau}R(\tau)p_{\theta}(\tau)\\ =E_{\tau\sim p_{\theta}(\tau)}[R(\tau)]
Rˉθ=τ∑R(τ)pθ(τ)=Eτ∼pθ(τ)[R(τ)]
\qquad
即每一个trajectory出现的概率乘上它的收益,即为所有trajectory的期望收益值。
\qquad
若想对参数
θ
\theta
θ进行训练,需要求期望收益
R
ˉ
θ
\bar{R}_{\theta}
Rˉθ的导数
∇
R
ˉ
θ
\nabla\bar{R}_{\theta}
∇Rˉθ,因为收益值
R
(
τ
)
R(\tau)
R(τ)与参数
θ
\theta
θ 无关,同时有公式
∇
f
(
x
)
=
f
(
x
)
∇
l
o
g
(
f
(
x
)
)
\nabla f(x)=f(x)\nabla log(f(x))
∇f(x)=f(x)∇log(f(x))成立,所以推导过程如下所示:
∇
R
ˉ
θ
=
∑
τ
R
(
τ
)
∇
p
θ
(
τ
)
=
∑
τ
R
(
τ
)
p
θ
(
τ
)
∇
p
θ
(
τ
)
p
θ
(
τ
)
=
∑
τ
R
(
τ
)
p
θ
(
τ
)
∇
l
o
g
(
p
θ
(
τ
)
)
=
E
τ
∼
p
θ
(
τ
)
[
R
(
τ
)
∇
l
o
g
(
p
θ
(
τ
)
)
]
=
1
N
∑
n
=
1
N
R
(
τ
n
)
∇
l
o
g
(
p
θ
(
τ
n
)
)
=
1
N
∑
n
=
1
N
∑
t
=
1
T
n
R
(
τ
n
)
∇
l
o
g
(
p
θ
(
a
t
n
∣
s
t
n
)
)
\nabla\bar{R}_{\theta}=\sum_{\tau}R(\tau)\nabla p_{\theta}(\tau)= \sum_{\tau}R(\tau)p_{\theta}(\tau) \frac{\nabla p_{\theta}(\tau)}{ p_{\theta}(\tau)}=\\ \sum_{\tau}R(\tau) p_{\theta}(\tau)\nabla log(p_{\theta}(\tau))=E_{\tau\sim p_{\theta}(\tau)}[R(\tau) \nabla log(p_{\theta}(\tau))] =\\ \frac{1}{N}\sum_{n=1}^{N}R(\tau^n) \nabla log(p_{\theta}(\tau^n))=\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}R(\tau^n) \nabla log(p_{\theta}(a_t^n|s_t^n))
∇Rˉθ=τ∑R(τ)∇pθ(τ)=τ∑R(τ)pθ(τ)pθ(τ)∇pθ(τ)=τ∑R(τ)pθ(τ)∇log(pθ(τ))=Eτ∼pθ(τ)[R(τ)∇log(pθ(τ))]=N1n=1∑NR(τn)∇log(pθ(τn))=N1n=1∑Nt=1∑TnR(τn)∇log(pθ(atn∣stn))
\qquad
policy gradient数据集获取通过和环境进行交互来获取在一次episode下执行一系列动作之后的收益,将训练数据集中的trajectory和reward进行梯度上升(gradient ascent,因为是最大化收益)参数训练,之后更新模型,过程示意如下图所示:
3、执行policy gradient的Tips
3.1 增加一个baseline
\qquad
增加baseline的缘由是:由于在进行模型训练时,只是对sample的部分样本数据进行了参数学习,所以某些动作可能不能被sample到;同时在很多情况下,收益值没有负值的情况存在,这就会导致所有sample到的动作被选择的概率均一直上升。为了克服上述问题,在计算期望收益值的梯度的时候,在每一个sample的期望收益之后都减去一个baseline系数,这个系数可以取值为:
b
=
E
[
R
(
τ
)
]
b=E[R(\tau)]
b=E[R(τ)],添加baseline的policy gradient的计算方法如下所示:
∇
R
ˉ
θ
=
1
N
∑
n
=
1
N
∑
t
=
1
T
n
(
R
(
τ
n
)
−
b
)
∇
l
o
g
(
p
θ
(
a
t
n
∣
s
t
n
)
)
\nabla\bar{R}_{\theta}=\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}(R(\tau^n)-b)\nabla log(p_{\theta}(a_t^n|s_t^n))
∇Rˉθ=N1n=1∑Nt=1∑Tn(R(τn)−b)∇log(pθ(atn∣stn))
\qquad
添加baseline之后,导致收益值项
R
(
τ
n
)
−
b
R(\tau^n)-b
R(τn)−b有正有负,从而次优的动作被选择到的概率就会减小。
3.2 分配合理的reward权重
\qquad
上述在计算梯度的时候还有一个问题,就是在一个trajectory中的所有状态动作对,他们的权重系数项(即
R
(
τ
n
)
−
b
R(\tau^n)-b
R(τn)−b)都相同,但这样做是不公平的,因为一个trajectory中的不同状态动作对可能有的好,有的差。若在sample的次数够多时,上述问题其他可以被解决,但是通常在训练模型时,sample的次数都是有限的,所以为了克服上述问题,在计算权重系数项,即reward项时,只考虑当前状态动作对之后的所有reward的累和,而不是整个trajectory所有reward的累和。示意图如下所示:
\qquad
所以上述添加了baseline的梯度计算式可以进一步改进为:
∇
R
ˉ
θ
=
1
N
∑
n
=
1
N
∑
t
=
1
T
n
(
∑
t
′
=
t
T
n
r
t
′
n
−
b
)
∇
l
o
g
(
p
θ
(
a
t
n
∣
s
t
n
)
)
\nabla\bar{R}_{\theta}=\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}(\sum_{t'=t}^{T_n}r_{t'}^n-b)\nabla log(p_{\theta}(a_t^n|s_t^n))
∇Rˉθ=N1n=1∑Nt=1∑Tn(t′=t∑Tnrt′n−b)∇log(pθ(atn∣stn))
\qquad
进一步改进上式,可以将未来的reward再添加一个折减系数
γ
<
1
\gamma<1
γ<1,说明当前的决策对于未来的影响随着时间的加长会逐渐减弱:
∇
R
ˉ
θ
=
1
N
∑
n
=
1
N
∑
t
=
1
T
n
(
∑
t
′
=
t
T
n
γ
t
′
−
t
r
t
′
n
−
b
)
∇
l
o
g
(
p
θ
(
a
t
n
∣
s
t
n
)
)
\nabla\bar{R}_{\theta}=\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}(\sum_{t'=t}^{T_n}\gamma ^{t'-t}r_{t'}^n-b)\nabla log(p_{\theta}(a_t^n|s_t^n))
∇Rˉθ=N1n=1∑Nt=1∑Tn(t′=t∑Tnγt′−trt′n−b)∇log(pθ(atn∣stn))
\qquad
令
A
θ
(
s
t
,
a
t
)
=
∑
t
′
=
t
T
n
γ
t
′
−
t
r
t
′
n
−
b
A^{\theta}(s_t,a_t)=\sum_{t'=t}^{T_n}\gamma ^{t'-t}r_{t'}^n-b
Aθ(st,at)=∑t′=tTnγt′−trt′n−b表示Advantage Function,其表示的意思是在状态
s
t
s_t
st下,采取动作
a
t
a_t
at有多好,他可以由一个
c
r
i
t
i
c
n
e
t
w
o
r
k
critic \ network
critic network来进行估计。
4、Proximal Policy Optimization
4.1 On policy 和 Off Policy
\qquad
On Policy下,用于学习的agent和与环境进行互动的agent是同一个agent,即agent一遍和环境进行互动,一边进行学习;Off Policy下,用于学习的agent和与环境进行互动的agent不是同一个agent,即另外一个agent通过观察其他agent与环境的互动进行学习。
\qquad
由On Policy到Off Policy的原因在于:根据梯度的计算公式:
R
ˉ
θ
=
∑
τ
R
(
τ
)
p
θ
(
τ
)
=
E
τ
∼
p
θ
(
τ
)
[
R
(
τ
)
]
\bar{R}_{\theta}=\sum_{\tau}R(\tau)p_{\theta}(\tau)\\ =E_{\tau\sim p_{\theta}(\tau)}[R(\tau)]
Rˉθ=τ∑R(τ)pθ(τ)=Eτ∼pθ(τ)[R(τ)]
\qquad
在上述On Policy学习时,每一次更新参数
θ
\theta
θ之后,每一个trajectory的概率分布
τ
∼
p
θ
(
τ
)
\tau\sim p_{\theta}(\tau)
τ∼pθ(τ)就会发生改变,所以训练数据需要重新使用新的
θ
\theta
θ进行sample生成,这样就会浪费大量的时间在sample数据上面。为了节省数据sample的效率,同时提高数据的使用效率,采用一个额外的参数
θ
′
\theta'
θ′,使用
θ
′
\theta'
θ′进行sample数据来训练
θ
\theta
θ,因为
θ
′
\theta'
θ′在一定训练次数下是固定的,所以可以多次使用
θ
′
\theta'
θ′sample的数据。
4.1.1 Importance Sampling
\qquad
Importance Sampling: 根据大数定理,可以知道下式成立:
E
x
∼
p
[
f
(
x
)
]
=
1
N
∑
i
=
1
N
f
(
x
i
)
E_{x\sim p}[f(x)]=\frac{1}{N}\sum_{i=1}^{N}f(x^i)
Ex∼p[f(x)]=N1i=1∑Nf(xi)
\qquad
即在数据满足独立同分布的条件下,若
x
x
x服从
p
p
p分布,在样本数量
N
N
N足够大的条件下,
f
(
x
)
f(x)
f(x)的数学期望近似等于
1
N
∑
i
=
1
N
f
(
x
i
)
\frac{1}{N}\sum_{i=1}^{N}f(x^i)
N1∑i=1Nf(xi)。若现在不能从
p
p
p分布下取样本,只能从另外一个
q
q
q分布下取样本,则可以对上式进行下述改进:
E
x
∼
p
[
f
(
x
)
]
=
∫
f
(
x
)
p
(
x
)
d
x
=
∫
f
(
x
)
p
(
x
)
q
(
x
)
q
(
x
)
d
x
=
E
x
∼
q
[
f
(
x
)
p
(
x
)
q
(
x
)
]
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)}]
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)]
\qquad
即在
q
q
q分布下取样的数学期望相对于在
p
p
p分布下的属性期望,需要乘以一个权重系数
p
(
x
)
q
(
x
)
\frac{p(x)}{q(x)}
q(x)p(x)。
\qquad
由上述推导可以知道,可以使用某个分布
q
q
q来代替原始分布
p
p
p,在sample样本数量足够多的情况下,二者的属性期望通过上式近似恒等。但是,方差
V
a
r
x
∼
p
[
f
(
x
)
]
Var_{x\sim p}[f(x)]
Varx∼p[f(x)]和
V
a
r
x
∼
q
[
f
(
x
)
p
(
x
)
q
(
x
)
]
Var_{x\sim q}[f(x)\frac{p(x)}{q(x)}]
Varx∼q[f(x)q(x)p(x)]通过推导可以得出,在分布
p
p
p和
q
q
q的差别很大时,方差差别很大。下图直观表达了Importance Sampling的缺陷:
4.1.2 Off Policy下的PPO梯度计算
\qquad
根据Importance Sampling的规则,通过
θ
′
\theta'
θ′来sample数据,通过这些sample的数据来训练
θ
\theta
θ,期望收益关于参数
θ
\theta
θ的导数如下所示:
∇
R
ˉ
θ
=
E
τ
∼
p
θ
′
(
τ
)
[
R
(
τ
)
∇
l
o
g
p
θ
(
τ
)
p
θ
(
τ
)
p
θ
′
(
τ
)
]
\nabla\bar{R}_{\theta}=E_{\tau\sim p_{\theta'}(\tau)}[R(\tau)\nabla logp_{\theta}(\tau)\frac{p_{\theta}(\tau)}{p_{\theta'}(\tau)}]
∇Rˉθ=Eτ∼pθ′(τ)[R(τ)∇logpθ(τ)pθ′(τ)pθ(τ)]
\qquad
即使用
θ
′
\theta'
θ′sample出一组数据,使用这组数据对
θ
\theta
θ进行多次训练,在
θ
\theta
θ训练时,梯度计算时要采用上式进行。
\qquad
将3.1和3.2中的改进措施应用在off Policy中,梯度计算方式如下所示:
∇
R
ˉ
θ
=
E
(
s
t
,
a
t
)
∼
π
θ
[
A
θ
(
s
t
,
a
t
)
∇
l
o
g
p
θ
(
a
t
∣
s
t
)
]
J
θ
′
(
θ
)
=
E
(
s
t
,
a
t
)
∼
π
θ
′
[
p
θ
(
a
t
∣
s
t
)
p
θ
′
(
a
t
∣
s
t
)
A
θ
′
(
s
t
,
a
t
)
∇
l
o
g
p
θ
(
a
t
∣
s
t
)
]
=
E
(
s
t
,
a
t
)
∼
π
θ
′
[
p
θ
(
a
t
∣
s
t
)
p
θ
′
(
a
t
∣
s
t
)
A
θ
′
(
s
t
,
a
t
)
]
≈
∑
s
t
,
a
t
p
θ
(
a
t
∣
s
t
)
p
θ
′
(
a
t
∣
s
t
)
A
θ
′
(
s
t
,
a
t
)
\nabla\bar{R}_{\theta}=E_{(s_t,a_t)\sim\pi_{\theta}} [A^{\theta}(s_t,a_t) \nabla logp_{\theta}(a_t|s_t)]\\ J^{\theta'}(\theta)=E_{(s_t,a_t)\sim\pi_{\theta'}}[\frac{p_{\theta}(a_t|s_t)}{p_{\theta'}(a_t|s_t)}A^{\theta'}(s_t,a_t)\nabla logp_{\theta}(a_t|s_t)] \\ =E_{(s_t,a_t)\sim\pi_{\theta'}}[\frac{p_{\theta}(a_t|s_t)}{p_{\theta'}(a_t|s_t)}A^{\theta'}(s_t,a_t)]\\ \approx\sum_{s_t,a_t}\frac{p_{\theta}(a_t|s_t)}{p_{\theta'}(a_t|s_t)}A^{\theta'}(s_t,a_t)
∇Rˉθ=E(st,at)∼πθ[Aθ(st,at)∇logpθ(at∣st)]Jθ′(θ)=E(st,at)∼πθ′[pθ′(at∣st)pθ(at∣st)Aθ′(st,at)∇logpθ(at∣st)]=E(st,at)∼πθ′[pθ′(at∣st)pθ(at∣st)Aθ′(st,at)]≈st,at∑pθ′(at∣st)pθ(at∣st)Aθ′(st,at)
\qquad
上述有提到,当
θ
\theta
θ和
θ
′
\theta'
θ′差距过大时,通过importance sample方法得到的结果会变差,为了防止
θ
\theta
θ和
θ
′
\theta'
θ′差距过大,提出PPO。通过PPO计算梯度的方式如下所示:
J
P
P
O
θ
′
(
θ
)
=
J
θ
′
(
θ
)
−
β
∗
K
L
(
θ
,
θ
′
)
J_{PPO}^{\theta'}(\theta)=J^{\theta'}(\theta)-\beta*KL(\theta, \theta')
JPPOθ′(θ)=Jθ′(θ)−β∗KL(θ,θ′)
\qquad
其中,
β
K
L
(
θ
,
θ
′
)
\beta KL(\theta, \theta')
βKL(θ,θ′)表示一个约束,用来计算
θ
\theta
θ和
θ
′
\theta'
θ′两个不同model输出action的KL divergence,即来衡量
θ
\theta
θ和
θ
′
\theta'
θ′的相似程度。这里
θ
\theta
θ和
θ
′
\theta'
θ′之间的KL 的divergence不是
θ
\theta
θ和
θ
′
\theta'
θ′值的差距,而是他们输出行为上的差距,即在同一个给定状态下,输出不同动作概率分布之间的差距。
\qquad
PPO的算法流程如下所示:
\qquad
其中,
θ
k
\theta^{k}
θk表示前面某次训练的参数,本人认为
θ
k
\theta^k
θk应该更一定次数之后通过
θ
\theta
θ进行更新。
\qquad
由于上述计算KL divergence比较麻烦,所以提出了PPO2方法来简化PPO,PPO2也是为了使得
θ
\theta
θ和
θ
′
\theta'
θ′的差距尽可能的小。PPO2的计算方法如下所示:
J
P
P
O
2
θ
′
(
θ
)
≈
m
i
n
(
p
θ
(
a
t
∣
s
t
)
p
θ
k
(
a
t
∣
s
t
)
A
θ
k
(
s
t
,
a
t
)
,
c
l
i
p
(
p
θ
(
a
t
∣
s
t
)
p
θ
k
(
a
t
∣
s
t
)
,
1
−
ϵ
,
1
+
ϵ
)
A
θ
k
(
s
t
,
a
t
)
)
J_{PPO2}^{\theta'}(\theta)\approx min(\frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)}A^{\theta^k}(s_t,a_t),\\ clip(\frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)},1-\epsilon,1+\epsilon)A^{\theta^k}(s_t,a_t))
JPPO2θ′(θ)≈min(pθk(at∣st)pθ(at∣st)Aθk(st,at),clip(pθk(at∣st)pθ(at∣st),1−ϵ,1+ϵ)Aθk(st,at))
\qquad
通过图像可以直观了解PPO2:
\qquad
其中,横轴表示
p
θ
(
a
t
∣
s
t
)
p
θ
k
(
a
t
∣
s
t
)
\frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)}
pθk(at∣st)pθ(at∣st),纵轴表示
A
θ
k
(
s
t
,
a
t
)
A^{\theta^k}(s_t,a_t)
Aθk(st,at)前面的系数。蓝线表示
c
l
i
p
clip
clip函数,绿线表示
p
θ
(
a
t
∣
s
t
)
p
θ
k
(
a
t
∣
s
t
)
\frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)}
pθk(at∣st)pθ(at∣st),红线表示取
m
i
n
min
min之后的效果。当收益
A
>
0
A>0
A>0为正时,需要训练
θ
\theta
θ增大
s
t
,
a
t
s_t,a_t
st,at对被选择的几率,即
p
θ
k
(
a
t
∣
s
t
)
p_{\theta^k}(a_t|s_t)
pθk(at∣st)应该增大。但是为了防止
θ
\theta
θ和
θ
′
\theta'
θ′差距过大,
p
θ
(
a
t
∣
s
t
)
p
θ
k
(
a
t
∣
s
t
)
\frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)}
pθk(at∣st)pθ(at∣st)最大为
1
+
ϵ
1+\epsilon
1+ϵ;当收益
A
<
0
A<0
A<0为负时,需要训练
θ
\theta
θ减小
s
t
,
a
t
s_t,a_t
st,at对被选择的几率,即
p
θ
k
(
a
t
∣
s
t
)
p_{\theta^k}(a_t|s_t)
pθk(at∣st)应该j减小。但是为了防止
θ
\theta
θ和
θ
′
\theta'
θ′差距过大,
p
θ
(
a
t
∣
s
t
)
p
θ
k
(
a
t
∣
s
t
)
\frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)}
pθk(at∣st)pθ(at∣st)最小为
1
−
ϵ
1-\epsilon
1−ϵ。