李宏毅深度强化学习笔记(一)Policy Gradient
参考jessie_weiqing博客:https://blog.youkuaiyun.com/cindy_1102/article/details/87905272
李宏毅深度强化学习课程 https://www.bilibili.com/video/av24724071
Policy Gradient
术语和基本思想
基本组成:
- actor (即policy gradient要学习的对象, 是我们可以控制的部分)
- 环境 environment (给定的,无法控制)
- 回报函数 reward function (无法控制)
Policy of actor π:
如下图所示,Policy 可以理解为一个包含参数 θ \thetaθ的神经网络,该网络将观察到的变量作为模型的输入,基于概率输出对应的行动action
Episode:
游戏从开始到结束的一个完整的回合
actor的目标:
最大化总收益reward
Trajectory
τ
\tau
τ:
行动action和状态state的序列
给定神经网络参数θ \的情况下,出现行动状态序列
τ
\tau
τ的概率:
以下概率的乘积:初始状态出现的概率;给定当前状态,采取某一个行动的概率;以及采取该行动之后,基于该行动以及当前状态返回下一个状态的概率,用公式表示为:
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
)
\begin{array} { l } { p _ { \theta } ( \tau ) } \\ { \quad = p \left( s _ { 1 } \right) p _ { \theta } \left( a _ { 1 } | s _ { 1 } \right) p \left( s _ { 2 } | s _ { 1 } , a _ { 1 } \right) p _ { \theta } \left( a _ { 2 } | s _ { 2 } \right) p \left( s _ { 3 } | s _ { 2 } , a _ { 2 } \right) } \\ { \quad = p \left( s _ { 1 } \right) \prod _ { t = 1 } ^ { T } p _ { \theta } \left( a _ { t } | s _ { t } \right) p \left( s _ { t + 1 } | s _ { t } , a _ { t } \right) } \end{array}
pθ(τ)=p(s1)pθ(a1∣s1)p(s2∣s1,a1)pθ(a2∣s2)p(s3∣s2,a2)=p(s1)∏t=1Tpθ(at∣st)p(st+1∣st,at)
给定一个行动状态序列 τ \tauτ, 我们可以得到它对应的收益reward,通过控制actor,我们可以得到不同的收益。由于actor采取的行动以及给定环境下出现某一个状态state是随机的,最终的目标是找到一个具有最大期望收益(即下述公式)的actor。
累积期望收益:采取某一个行动状态序列τ \tauτ的概率, 以及该行动状态序列对应的收益reward的乘积之和。
R
‾
θ
=
∑
τ
R
(
τ
)
p
θ
(
τ
)
=
E
τ
∼
p
θ
(
τ
)
[
R
(
τ
)
]
\overline { R } _ { \theta } = \sum _ { \tau } R ( \tau ) p _ { \theta } ( \tau ) = E _ { \tau \sim p _ { \theta } ( \tau ) } [ R ( \tau ) ]
Rθ=τ∑R(τ)pθ(τ)=Eτ∼pθ(τ)[R(τ)]
Policy Gradient
得出目标函数之后,就需要根据目标函数求解目标函数最大值以及最大值对应的policy的参数 θ。类比深度学习中的梯度下降求最小值的方法,由于我们这里需要求的是目标函数的最大值,因此需要采取的方法是梯度上升。也就是说,思想起点是一样的,即需要求出目标函数的梯度。
求解梯度的步骤如下,以前文所述目标函数为基础,对参数 θ 求导,其中,对概率加权的reward求和就是求reward的期望,因此有红框部分的改写,又因为训练的过程中会进行采样训练,采样个数为N,因此公式可以近似表示为N词采样得到的reward的平均。
Tip 1: 添加基准线
由于训练过程中采样是随机的,可能会出现某个行动不被采样的情况,这会导致采取该行动的概率下降;另外,由于采取的行动概率和为一,可能存在归一化之后,好的action的概率相对下降,坏的action概率相对上升的情况,因此需要引入一个基准线baseline b bb.
具体的例子:当policy决定采取的三个action a,b,c均有正的reward时,比如3,4,5,在计算各个action的概率的时候,本来应该给action c分配较大的概率,但是归一化之后,a的概率反而可能上升,c的概率可能会下降,与对应reward应该被分配的概率分布不符。但是引入baseline之后,可能a的reward会变为负,这样的话,采取该行动的概率就会下降。
∇
R
‾
θ
≈
1
N
∑
n
=
1
N
∑
t
=
1
T
n
(
R
(
τ
n
)
=
b
)
∇
log
p
θ
(
a
t
n
∣
s
t
n
)
b
≈
E
[
R
(
τ
)
]
\nabla \overline { R } _ { \theta } \approx \frac { 1 } { N } \sum _ { n = 1 } ^ { N } \sum _ { t = 1 } ^ { T _ { n } } \left( R \left( \tau ^ { n } \right) = b \right) \nabla \log p _ { \theta } \left( a _ { t } ^ { n } | s _ { t } ^ { n } \right) \quad b \approx E [ R ( \tau ) ]
∇Rθ≈N1n=1∑Nt=1∑Tn(R(τn)=b)∇logpθ(atn∣stn)b≈E[R(τ)]
Tip 2: 进一步考虑各个时间点的累积收益计算方式
考虑到在时间t采取的行动action与t时期之前的收益reward无关,因此只需要将t时刻开始到结束的reward进行加总。并且,由于行动action对随后各时间点的reward的影响会随着时间的推移而减小,因此加入折旧因子 γ。这样就得到了一个考虑比较全面,比较完善的梯度计算方式。