参考资料
[1] 强化学习进阶 第六讲 策略梯度方法
本文主要是对该资料学习的笔记,并且加入了一些自己的想法,如有错误欢迎指出。
Value based 与 Policy based
Value based
值函数方法包括策略评估与策略改善两个步骤。最典型的为前面学习的DQN方法。
其优化目标为:
- 寻找最优θ,拟合值函数 Q θ ( s , a ) Q_{\theta}(s,a) Qθ(s,a)(策略评估);
- 在值函数基础上选择最佳策略 a r g m a x a Q θ ( s , a ) argmax_a Q_{\theta}(s,a) argmaxaQθ(s,a)(贪婪策略,策略改善)。
当值函数为最优时策略也是最优的。这种方法得到的策略为状态空间到有限集动作空间的映射。策略空间受限。
该方法需要迭代计算值函数,再根据值函数优化策略。
Policy based
策略方法时将策略参数化,建立 π θ ( s ) \pi_{\theta}(s) πθ(s),利用参数化的线性函数或非线性函数表示策略。策略空间可以很大或者连续。
其优化目标为:寻找最优θ, m i n E [ ∑ t = 0 N R ( s t ) ∣ π θ ] min \ E\lbrack \sum_{t=0}^{N}R(s_t)|\pi_{\theta} \rbrack min E[∑t=0NR(st)∣πθ]
该方法直接迭代计算策略函数。
优缺点比较
Policy based与Value based相比优点有:
- 策略参数化简单,收敛性更好;
- 可以求解连续或者很大的动作空间;
- 采用随机策略,将探索直接集成到策略之中;
Policy based与Value based相比缺点有:
- 容易收敛到局部最小值;
- 评估单个策略并不充分,方差较大;
策略搜索方法
分类
本节笔记策略梯度方法中的内容。
策略梯度
用τ表示一组状态-行为序列: s 0 , u 0 , ⋯ , s H , u H s_0, u_0, \cdots , s_H, u_H s0,u0,⋯,sH,uH,该序列长度为H。
该序列回报为:
R
(
τ
)
=
∑
t
=
0
H
R
(
s
t
,
u
t
)
R(\tau)=\sum_{t=0}^{H}R(s_t , u_t)
R(τ)=t=0∑HR(st,ut)
轨迹τ出现概率记为: P ( τ ; θ ) P(\tau;\theta) P(τ;θ),θ为参数。
目标函数记为:
U
(
θ
)
=
E
(
∑
t
=
0
H
R
(
s
t
,
u
t
)
;
π
θ
)
=
∑
τ
P
(
τ
;
θ
)
R
(
τ
)
(1)
U(\theta) = E(\sum_{t=0}^{H}R(s_t , u_t);\pi_{\theta}) = \sum_{\tau}P(\tau;\theta)R(\tau) \tag{1}
U(θ)=E(t=0∑HR(st,ut);πθ)=τ∑P(τ;θ)R(τ)(1)
强化学习目标为:
m
a
x
θ
U
(
θ
)
=
m
a
x
θ
∑
τ
P
(
τ
;
θ
)
R
(
τ
)
max_{\theta} U(\theta) = max_{\theta} \sum_{\tau}P(\tau;\theta)R(\tau)
maxθU(θ)=maxθτ∑P(τ;θ)R(τ)
求解该优化问题采用梯度下降法:
θ
n
e
w
=
θ
o
l
d
+
α
∇
θ
U
(
θ
)
\theta_{new} = \theta_{old} + \alpha \nabla_{\theta}U(\theta)
θnew=θold+α∇θU(θ)
经过推导,由m条已知的轨迹求解策略梯度公式为:
∇
θ
U
(
θ
)
≈
1
m
∑
i
=
0
m
∇
θ
l
o
g
P
(
τ
;
θ
)
R
(
τ
)
≈
1
m
∑
i
=
1
m
(
∑
t
=
0
H
∇
θ
l
o
g
π
θ
(
u
t
(
i
)
∣
s
t
(
i
)
)
R
(
τ
(
i
)
)
)
(2)
\begin{aligned} \nabla_{\theta}U(\theta) & \approx \frac{1}{m}\sum_{i=0}^{m}\nabla_{\theta}logP(\tau;\theta)R(\tau) \\ & \approx \frac{1}{m}\sum_{i=1}^{m} \left( \sum_{t=0}^{H}\nabla_{\theta}log\pi_{\theta}(u_{t}^{(i)}|s_{t}^{(i)})R(\tau^{(i)}) \right) \end{aligned} \tag{2}
∇θU(θ)≈m1i=0∑m∇θlogP(τ;θ)R(τ)≈m1i=1∑m(t=0∑H∇θlogπθ(ut(i)∣st(i))R(τ(i)))(2)
其中:
- ∇ θ l o g P ( τ ; θ ) \nabla_{\theta}logP(\tau;\theta) ∇θlogP(τ;θ)为轨迹τ下logP随参数θ变化最陡的方向,沿着该方向更新θ会增大选取轨迹τ的概率;
- R ( τ ) R(\tau) R(τ)控制更新θ的程度,为正且越大则选择该轨迹的概率越大,反之亦然;
- m为路径条数;H为每个路径状态数;
- π θ ( u t ( i ) ∣ s t ( i ) ) \pi_{\theta}(u_{t}^{(i)}|s_{t}^{(i)}) πθ(ut(i)∣st(i))为给定状态s下按参数为θ的策略选择u的概率,关于θ的函数;
- R ( τ ( i ) ) R(\tau^{(i)}) R(τ(i))为第i条路径的累计回报;
小结:
策略梯度优化会增加高回报路径的概率,减小低回报路径的概率。
同时,策略
π
θ
(
u
∣
s
)
\pi_{\theta}(u|s)
πθ(u∣s)是一个以θ为参数,s为输入的函数,输出为各状态的选择概率!其参数更新方式为梯度下降,很自然想到使用神经网络进行方便的求解!只要给定多组轨迹,即可根据(2)更新参数。
(2)存在的问题:梯度是无偏的,但方差很大!
解决方法:引入常数基线b:
修改后的方法应用方式仍然不变:根据轨迹数据,带入公式进行计算求解。
采用神经网络的实现思路
这里假定动作空间是有限的。
神经网络设计
梯度策略算法中未修正方差的策略梯度为:
∇
θ
U
(
θ
)
≈
1
m
∑
i
=
1
m
(
∑
t
=
0
H
∇
θ
l
o
g
π
θ
(
u
t
(
i
)
∣
s
t
(
i
)
)
R
(
τ
(
i
)
)
)
(3)
\nabla_{\theta}U(\theta) \approx \frac{1}{m}\sum_{i=1}^{m} \left( \sum_{t=0}^{H}\nabla_{\theta}log\pi_{\theta}(u_{t}^{(i)}|s_{t}^{(i)})R(\tau^{(i)}) \right) \tag{3}
∇θU(θ)≈m1i=1∑m(t=0∑H∇θlogπθ(ut(i)∣st(i))R(τ(i)))(3)
其中策略 π θ ( u t ( i ) ∣ s t ( i ) ) \pi_{\theta}(u_{t}^{(i)}|s_{t}^{(i)}) πθ(ut(i)∣st(i))使用神经网络实现,该网络输入为:状态s时的特征向量,输出为各个动作的概率分布,网络示意如下:
假定如下:
- 输入特征向量维数为6;
- 可用动作数量为4,输出还需经过softmax层处理!
经过softmax处理后,神经网络输出为在当前输入的特征向量下,选取各个动作的概率!
策略选择
在探索过程中,给定环境特征s下得到的是当前各个动作选择的概率,agent根据该概率随机选择动作。
训练方法
探索阶段
采用参数
θ
o
l
d
\theta_{old}
θold作为策略参数,在进行多个episode的探索获得多条样本轨迹,设第i条为:
s
0
(
i
)
,
u
0
(
i
)
,
r
0
(
i
)
⋯
,
s
H
(
i
)
,
u
H
(
i
)
,
r
H
(
i
)
s^{(i)}_0, u^{(i)}_0, r^{(i)}_0 \cdots , s^{(i)}_H, u^{(i)}_H, r^{(i)}_H
s0(i),u0(i),r0(i)⋯,sH(i),uH(i),rH(i)
优化阶段
定义损失函数:
L
=
−
∫
p
o
l
d
l
o
g
q
π
θ
Q
(
s
,
a
)
(4)
L = -\int p_{old}logq_{\pi_{\theta}}Q(s,a) \tag{4}
L=−∫poldlogqπθQ(s,a)(4)
其中:
-
−
∫
p
o
l
d
l
o
g
q
π
θ
-\int p_{old}logq_{\pi_{\theta}}
−∫poldlogqπθ为实际动作选择分布与策略概率分布的交叉熵;
- p o l d p_{old} pold为实际选择的动作,如[0 0 1];
- q π θ q_{\pi_{\theta}} qπθ为当前状态s下预测各动作的概率,如[0.1 0.5 0.4]
- Q ( s , a ) Q(s,a) Q(s,a)为当前状态s下实际采取动作a后的累计回报函数;
利用该损失函数,即可对神经网络应用反向传播计算参数梯度并更新参数。