目录
Value-based RL vs Policy-based RL
基于策略函数的强化学习(Policy-based RL)学习的是策略函数,策略函数实际上跟机器学习领域中的分类模型(model)差不多。这跟基于价值函数的强化学习(Value-based RL)不同。
(1)基于价值函数的强化学习是基于一个确定的策略来计算
Q
Q
Q值,然后通过greedy算法计算
a
t
=
arg max
a
Q
(
a
,
s
t
)
a_t=\argmax_aQ(a,s_t)
at=argmaxaQ(a,st),确定最优的行为。
(2)基于策略函数的强化学习则通过参数化策略函数
π
θ
(
a
∣
s
)
\pi_\theta(a|s)
πθ(a∣s)来直接学习策略,其中
θ
\theta
θ是一个可学习的策略参数,并且策略函数的输出是各类行为的概率。
(3)Actor-critic(行动器-评判器):既学习策略函数,也学习价值函数,这样可以同时得到两种方法的好处。
Policy-based RL的优势与劣势
优势:
(1)有更好的收敛性(都能得到一个策略函数),能保证收敛于局部最优或全局最优。
(2)基于策略的梯度(策略梯度)在高维的动作空间中更有效。
(3)策略梯度可以学习随机策略,但是价值函数不行。
劣势:
(1)比较容易收敛到局部最优解。
(2)一个策略可能有较高的方差。
上图可以细化为
如上图所示。RL整体结构包括两个部分,Agent和Environment。
(1)Environment中的Dynamic model是由物理模型所确定的,Reward Function是人为设定的,Agent中的每个部分均为人为设定。
(2)Representation Model从输入的Observation中提取State。
(3)Expert Policy为模仿学习中的组成部分,表示专家的策略。
(4)MPC(Model predicative control)利用模型来寻找最优的动作。
(5)Policy function根据状态输出动作。
(6)Value function表示状态动作价值函数(Q)或者状态价值函数(V)。
(7)Learned reward function为拟合Reward function的函数。
(8)Learned dynamic model为拟合Dynamic model(输出为state)的函数。
(9)Exploration表示在输出动作基础上增加探索。
策略函数的类型
(1)返回确定的行为:给定一个状态,策略函数返回一个确定的行为。
(2)返回行为集合的概率:给定一个状态,策略函数返回所有行为的概率分布。(e.g.,40%的概率向左行走,60%的概率向右行走),又或者是对于连续行为的高斯分布。
策略优化
实际上策略优化的目标是:给定一个带有参数
θ
\theta
θ的策略近似
π
θ
(
s
,
a
)
\pi_\theta(s,a)
πθ(s,a),然后找到最好的
θ
\theta
θ
如何量化策略
π
θ
\pi_\theta
πθ?(在《reinforcement learning an introduction》一书中用的是“性能指标”这个词)
从环境的角度看:
(1)对于情节性环境,可以使用每一幕初始状态的价值来衡量:
J
(
θ
)
=
V
π
θ
(
s
0
)
J(\theta)=V_{\pi_\theta}(s_0)
J(θ)=Vπθ(s0)
(2)对于连续性环境,可以使用每个时刻上的平均收益:
J
(
θ
)
=
lim
h
→
∞
1
h
∑
t
=
1
h
E
[
R
t
∣
S
0
,
A
0
:
t
−
1
∽
π
]
=
∑
s
μ
(
s
)
∑
a
π
(
a
∣
s
)
∑
s
′
,
r
p
(
s
′
,
r
∣
s
,
a
)
r
\begin{aligned} J(\theta)&=\displaystyle\lim_{h\rightarrow\infty}\frac{1}{h}\sum_{t=1}^h\mathbb{E}[R_t|S_0,A_{0:t-1}\backsim\pi]\\ &=\displaystyle\sum_s\mu(s)\sum_a\pi(a|s)\sum_{s',r}p(s',r|s,a)r \end{aligned}
J(θ)=h→∞limh1t=1∑hE[Rt∣S0,A0:t−1∽π]=s∑μ(s)a∑π(a∣s)s′,r∑p(s′,r∣s,a)r
其中,
μ
\mu
μ是策略
π
\pi
π下的稳定状态的分布。
从轨迹的角度去看:
J
(
θ
)
=
E
τ
∽
π
θ
[
∑
t
r
(
s
t
,
a
t
τ
)
]
≈
1
m
∑
m
∑
t
r
(
s
t
,
m
,
a
t
,
m
)
\begin{aligned} J(\theta)&=\mathbb{E}_{\tau\backsim\pi_{\theta}}[\sum_tr(s_t,a_t^\tau)]\\ &\approx\frac{1}{m}\sum_m\sum_tr(s_{t,m},a_{t,m}) \end{aligned}
J(θ)=Eτ∽πθ[t∑r(st,atτ)]≈m1m∑t∑r(st,m,at,m)
不管是从哪种角度来考虑,基于策略的强化学习算法的目的都是求使得
J
(
θ
)
J(\theta)
J(θ)极大化的
θ
\theta
θ
θ
∗
=
arg max
θ
J
(
θ
)
\theta^*=\argmax_\theta J(\theta)
θ∗=θargmaxJ(θ)
如果
J
(
θ
)
J(\theta)
J(θ)是可微的,可以使用梯度方法。
(1)梯度上升,可以理解为机器学习中Gradient descend方法。
(2)共轭梯度。
(3)quasi-newton
如果
J
(
θ
)
J(\theta)
J(θ)是不可微的,可以使用无需计算导数的黑箱优化方法。
(1)Cross-Entropy Method(CEM,交叉熵)
(2)Hill climbing
(3)Evolution algorithm
基于Cross-Entropy Method的Policy-based RL
假设一个使用交叉熵方法来解决Policy-base RL问题的场景: max θ J ( θ ) = max θ E [ ∑ t = 0 T R ( s t ) ∣ π θ ] \max_\theta J(\theta)=\displaystyle\max_\theta E[\sum_{t=0}^TR(s_t)|\pi_\theta] θmaxJ(θ)=θmaxE[t=0∑TR(st)∣πθ]此时的 J J J就可以当做一个黑箱。伪代码如下:
Algorithm : CEM for black-box function optimization
1:for iter i = 1 to N do
2:
~~~~
C={}
3:
~~~~
for parameter set e = 1 to N do
4:
~~~~~~~~
sample
θ
e
∽
P
μ
i
(
θ
)
\theta_e\backsim P_{\mu_i}(\theta)
θe∽Pμi(θ)
5:
~~~~~~~~
execute roll-outs under
θ
e
\theta_e
θe to evaluate
J
(
θ
e
)
J(\theta_e)
J(θe)
6:
~~~~~~~~
store(
θ
e
,
J
(
θ
e
)
)
\theta_e,J(\theta_e))
θe,J(θe)) in C
7:
~~~~
end for
8:
~~~~
μ
i
+
1
=
arg max
μ
∑
k
∈
C
^
log
P
μ
(
θ
k
)
\mu_{i+1} = \argmax_\mu\sum_{k\in\hat{C}}\log P_\mu(\theta_k)
μi+1=argmaxμ∑k∈C^logPμ(θk)
~~~~
where
C
^
\hat{C}
C^ are the top 10% of
C
C
C renked by
J
(
θ
e
)
J(\theta_e)
J(θe)
9:end for
关于交叉熵的应用在神经网络中经常作为损失函数来使用,常用于表达为两个不同分布的差异。可以参考:https://blog.csdn.net/u014380165/article/details/77284921,但这里讨论的并不是我们熟知的监督学习中的交叉熵方法,它实际上是基于MC和进化策略的算法。
CEM算法的迭代训练过程可以分为两个阶段:
(1)根据采样概率分布进行重要度采样。
(2)通过最小化采样概率分布和目标概率分布的交叉熵来更新采样概率分布。(上面伪代码的8,但是感觉这里没有真正用上“交叉熵表达两个分布差异”的概念)
什么是cross-entropy method
假设需要估计一个时间
H
(
x
)
H(x)
H(x)发生的期望,并且它的真实概率密度函数
f
(
x
;
u
)
f(x;u)
f(x;u),最简单的方法就是利用MC sampling从真实概率密度函数中采集一些样本
x
′
x'
x′,然后通过求均值来估计期望,即:
E
u
[
H
(
x
)
]
=
1
N
∑
t
=
1
N
x
i
′
E_u[H(x)]=\frac{1}{N}\sum_{t=1}^Nx_i'
Eu[H(x)]=N1t=1∑Nxi′
但是如果很难从
f
(
x
;
u
)
f(x;u)
f(x;u)中采集到样本,MC的sampling则可以使用另外一个简单的分布中采集样本,所以这里引入了CEM算法的重要度采样(importance sampling)。它的思想如下:
希望通过一个类似于真实概率分布的采样概率分布
f
(
x
;
v
)
f(x;v)
f(x;v)(其中
v
v
v称为reference parameter)来进行采样。此时期望变为:
E
u
[
H
(
x
)
]
=
1
N
∑
t
=
1
N
x
i
′
f
(
x
;
u
)
f
(
x
;
v
)
E_u[H(x)]=\frac{1}{N}\sum_{t=1}^Nx_i'\frac{f(x;u)}{f(x;v)}
Eu[H(x)]=N1t=1∑Nxi′f(x;v)f(x;u)
所以此时问题的目标变成了,找到一个最优的采样概率函数
f
(
x
;
v
∗
)
f(x;v^*)
f(x;v∗),这个“最优”在上面伪代码中指的是:使得
J
(
θ
)
J(\theta)
J(θ)最大。关于重要度采样的定义可以参考https://mathpretty.com/12375.html
其他相关的方法
基于CEM的Policy-based RL算法有其他的变体。主要是上面伪代码中的第8步的改变,其中有很多其实更能体现交叉熵的含义。
(1)Reward weighted Regression(RWR)
Dayan & Hinton, NC 1997; Peters & Schaal,ICML2007
μ
i
+
1
=
arg max
μ
∑
e
q
(
J
(
e
)
,
P
μ
(
θ
e
)
)
log
P
μ
(
θ
e
)
\mu_{i+1}=\argmax_\mu\displaystyle\sum_eq(J(e),P_\mu(\theta_e))\log P_\mu(\theta_e)
μi+1=μargmaxe∑q(J(e),Pμ(θe))logPμ(θe)
(2)Policy improvement with Path Integrals(PI
2
^2
2)
PI2: Theodorou, Buchli, Schaal JMLR2010;Kappen,2007;(PI2-CMA:Stulp & Sigaud ICML2012)
μ
i
+
1
=
arg max
μ
∑
e
e
x
p
(
λ
J
(
e
)
)
log
P
μ
(
θ
e
)
\mu_{i+1}=\argmax_\mu\displaystyle\sum_eexp(\lambda J(e))\log P_\mu(\theta_e)
μi+1=μargmaxe∑exp(λJ(e))logPμ(θe)
(3)Covariance Matrix Adaptation Evolutionary Strategy(EMA-ES)
CMA:Hansen&Ostermeier1996;(CMA-ES:Hansen,Muller,Koumoutsakos 2003)
(
μ
i
+
1
,
Σ
i
+
1
)
=
arg max
μ
,
Σ
∑
e
‾
w
(
J
(
e
‾
)
)
log
N
(
θ
e
‾
;
μ
,
Σ
)
(\mu_{i+1},\Sigma_{i+1})=\argmax_{\mu,\Sigma}\sum_{\overline{e}}w(J(\overline{e}))\log\Nu(\theta_{\overline{e}};\mu,\Sigma)
(μi+1,Σi+1)=μ,Σargmaxe∑w(J(e))logN(θe;μ,Σ)
(4)PoWER
Kober&Peters, NIPS 2007(also applies importance sampling for sample re-use)
μ
i
+
1
=
μ
i
+
(
∑
e
(
θ
e
−
μ
i
)
)
/
(
∑
e
J
(
e
)
)
\mu_{i+1}=\mu_i+(\sum_e(\theta_e-\mu_i))/(\sum_eJ(e))
μi+1=μi+(e∑(θe−μi))/(e∑J(e))
CMA算法已经成为图形学方面的标准。相关应用场景如下:
Likelihood Ratio Policy Gradient
假设将一个情节的状态-动作轨迹表示为:
τ
=
(
s
0
,
a
0
,
r
1
,
⋯
,
s
T
−
1
,
a
T
−
1
,
r
T
,
s
T
)
∽
(
π
θ
,
P
(
s
t
+
1
∣
s
t
,
a
t
)
)
\tau=(s_0,a_0,r_1,\cdots,s_{T-1},a_{T-1},r_T,s_T)\backsim(\pi_\theta,P(s_{t+1}|s_t,a_t))
τ=(s0,a0,r1,⋯,sT−1,aT−1,rT,sT)∽(πθ,P(st+1∣st,at))
并且将
R
(
τ
)
=
∑
t
=
0
T
R
(
s
t
,
a
t
)
R(\tau)=\sum_{t=0}^TR(s_t,a_t)
R(τ)=∑t=0TR(st,at)作为轨迹
τ
\tau
τ的reward的和。则有
J
(
θ
)
=
E
π
θ
[
∑
t
=
0
T
R
(
s
t
,
a
t
)
]
=
∑
τ
P
(
τ
;
θ
)
R
(
τ
)
J(\theta)=E_{\pi_\theta}[\displaystyle\sum_{t=0}^TR(s_t,a_t)]=\sum_{\tau}P(\tau;\theta)R(\tau)
J(θ)=Eπθ[t=0∑TR(st,at)]=τ∑P(τ;θ)R(τ)其中:
(1)
P
(
τ
;
θ
)
=
μ
(
s
0
)
∏
t
=
0
T
−
1
π
θ
(
a
t
∣
s
t
)
p
(
s
t
+
1
∣
s
t
,
a
t
)
P(\tau;\theta)=\mu(s_0)\prod_{t=0}^{T-1}\pi_\theta(a_t|s_t)p(s_{t+1}|s_t,a_t)
P(τ;θ)=μ(s0)∏t=0T−1πθ(at∣st)p(st+1∣st,at),表示执行策略
π
θ
\pi_\theta
πθ的轨迹的概率。
(2)
μ
(
s
0
)
\mu(s_0)
μ(s0)表示初始化状态时,选到
s
0
s_0
s0的概率,
μ
(
s
)
\mu(s)
μ(s)表示on-policy分布。
(3)
π
θ
(
a
t
∣
s
t
)
\pi_\theta(a_t|s_t)
πθ(at∣st)表示根据随机性策略
π
\pi
π在状态
s
t
s_t
st下选取动作
a
t
a_t
at的概率。
(4)
p
(
s
t
+
1
∣
s
t
,
a
t
)
p(s_{t+1}|s_t,a_t)
p(st+1∣st,at)表示从状态
s
t
s_t
st采取动作
a
a
a,转换到
s
t
+
1
s_{t+1}
st+1的概率。
我们的目标是找到参数
θ
\theta
θ使得
J
(
θ
)
J(\theta)
J(θ)最大。
max
θ
J
(
θ
)
=
max
θ
∑
τ
P
(
τ
;
θ
)
R
(
τ
)
\max_\theta J(\theta)=\max_\theta\sum_{\tau}P(\tau;\theta)R(\tau)
θmaxJ(θ)=θmaxτ∑P(τ;θ)R(τ)
使用梯度方法:
∇
θ
J
(
θ
)
=
∇
θ
∑
τ
P
(
τ
;
θ
)
R
(
τ
)
=
∑
τ
P
(
τ
;
θ
)
R
(
τ
)
=
∑
τ
P
(
τ
;
θ
)
P
(
τ
;
θ
)
∇
θ
P
(
τ
;
θ
)
R
(
τ
)
=
∑
τ
P
(
τ
;
θ
)
∇
θ
P
(
τ
;
θ
)
P
(
τ
;
θ
)
R
(
τ
)
=
∑
τ
P
(
τ
;
θ
)
∇
θ
log
P
(
τ
;
θ
)
R
(
τ
)
=
∑
τ
P
(
τ
;
θ
)
R
(
τ
)
∇
θ
log
P
(
τ
;
θ
)
\begin{aligned} \nabla_\theta J(\theta)&=\nabla_\theta\sum_\tau P(\tau;\theta)R(\tau)\\ &=\sum_\tau P(\tau;\theta)R(\tau)\\ &=\sum_\tau\frac{P(\tau;\theta)}{P(\tau;\theta)}\nabla_\theta P(\tau;\theta)R(\tau)\\ &=\sum_\tau\ P(\tau;\theta)\frac{\nabla_\theta P(\tau;\theta)}{P(\tau;\theta)}R(\tau)\\ &=\sum_\tau\ P(\tau;\theta)\nabla_\theta\log P(\tau;\theta)R(\tau)\\ &=\sum_\tau\ P(\tau;\theta)R(\tau)\nabla_\theta\log P(\tau;\theta)\\ \end{aligned}
∇θJ(θ)=∇θτ∑P(τ;θ)R(τ)=τ∑P(τ;θ)R(τ)=τ∑P(τ;θ)P(τ;θ)∇θP(τ;θ)R(τ)=τ∑ P(τ;θ)P(τ;θ)∇θP(τ;θ)R(τ)=τ∑ P(τ;θ)∇θlogP(τ;θ)R(τ)=τ∑ P(τ;θ)R(τ)∇θlogP(τ;θ)
使用M个样本轨迹来近似(Importance Sampling):
∇
θ
J
(
θ
)
≈
1
M
∑
i
=
1
M
R
(
τ
i
)
∇
θ
log
P
(
τ
i
;
θ
)
\nabla_\theta J(\theta)\approx\frac{1}{M}\sum_{i=1}^MR(\tau_i)\nabla_\theta\log P(\tau_i;\theta)
∇θJ(θ)≈M1i=1∑MR(τi)∇θlogP(τi;θ)
分解
∇
θ
log
P
(
τ
;
θ
)
\nabla_\theta\log P(\tau;\theta)
∇θlogP(τ;θ)可得:
∇
θ
log
P
(
τ
;
θ
)
=
∇
θ
log
[
μ
(
s
0
)
∏
t
=
0
T
−
1
π
θ
(
a
t
∣
s
t
)
p
(
s
t
+
1
∣
s
t
,
a
t
)
]
=
∇
θ
[
log
μ
(
s
0
)
+
∑
t
=
0
T
−
1
log
π
θ
(
a
t
∣
s
t
)
+
l
o
g
p
(
s
t
+
1
∣
s
t
,
a
t
)
]
=
∑
t
=
0
T
−
1
∇
θ
log
π
θ
(
a
t
∣
s
t
)
\begin{aligned}\nabla_\theta\log P(\tau;\theta)&=\nabla_\theta\log[\mu(s_0)\prod_{t=0}^{T-1}\pi_\theta(a_t|s_t)p(s_{t+1}|s_t,a_t)]\\ &=\nabla_\theta[\log\mu(s_0)+\sum_{t=0}^{T-1}\log\pi_\theta(a_t|s_t)+logp(s_{t+1}|s_t,a_t)]\\ &=\sum_{t=0}^{T-1}\nabla_\theta\log\pi_\theta(a_t|s_t) \end{aligned}
∇θlogP(τ;θ)=∇θlog[μ(s0)t=0∏T−1πθ(at∣st)p(st+1∣st,at)]=∇θ[logμ(s0)+t=0∑T−1logπθ(at∣st)+logp(st+1∣st,at)]=t=0∑T−1∇θlogπθ(at∣st)
所以最后:
∇
θ
J
(
θ
)
≈
1
M
∑
i
=
1
M
R
(
τ
i
)
∑
t
=
0
T
−
1
∇
θ
log
π
θ
(
a
t
i
∣
s
t
i
)
\nabla_\theta J(\theta)\approx\frac{1}{M}\sum_{i=1}^MR(\tau_i)\sum_{t=0}^{T-1}\nabla_\theta\log\pi_\theta(a_t^i|s_t^i)
∇θJ(θ)≈M1i=1∑MR(τi)t=0∑T−1∇θlogπθ(ati∣sti)
这个梯度方法所得到的参数会使策略概率函数更容易得到收益比较高的路径。
与Maximum Likelihood比较
(1)policy gradient estimator:
∇
θ
J
(
θ
)
≈
1
M
∑
i
=
1
M
R
(
τ
i
)
∑
t
=
0
T
−
1
∇
θ
log
π
θ
(
a
t
i
∣
s
t
i
)
\nabla_\theta J(\theta)\approx\frac{1}{M}\sum_{i=1}^MR(\tau_i)\sum_{t=0}^{T-1}\nabla_\theta\log\pi_\theta(a_t^i|s_t^i)
∇θJ(θ)≈M1i=1∑MR(τi)t=0∑T−1∇θlogπθ(ati∣sti)
(2)Maximum likelihood estimator:
∇
θ
J
(
θ
)
≈
1
M
∑
i
=
1
M
(
∑
t
=
0
T
−
1
∇
θ
log
π
θ
(
a
t
i
∣
s
t
i
)
)
\nabla_\theta J(\theta)\approx\frac{1}{M}\sum_{i=1}^M(\sum_{t=0}^{T-1}\nabla_\theta\log\pi_\theta(a_t^i|s_t^i))
∇θJ(θ)≈M1i=1∑M(t=0∑T−1∇θlogπθ(ati∣sti))
Policy Gradient 优化
以下表达式提供了一个梯度方法的无偏估计,这个估计让我们可以不需要与动态模型(dynamic model)交互,如下:
∇
θ
J
(
θ
)
=
1
M
∑
i
=
1
M
R
(
τ
i
)
∇
θ
log
P
(
τ
i
;
θ
)
\nabla_\theta J(\theta)=\frac{1}{M}\sum_{i=1}^MR(\tau_i)\nabla_\theta\log P(\tau_i;\theta)
∇θJ(θ)=M1i=1∑MR(τi)∇θlogP(τi;θ)
其中,
∇
θ
log
P
(
τ
i
;
θ
)
=
∑
t
=
0
T
∇
θ
log
π
θ
(
a
t
i
∣
s
t
i
)
⏟
no dynamics model required!!
\nabla_\theta\log P(\tau_i;\theta)=\sum_{t=0}^T\underbrace{\nabla_\theta\log\pi_\theta(a_t^i|s_t^i)}_{\text{no dynamics model required!!}}
∇θlogP(τi;θ)=t=0∑Tno dynamics model required!!
∇θlogπθ(ati∣sti)
但是上述方法依然会存在问题:由于每一个trajectory都是使用MC算法采样得到,样本的方差较大时,会
R
(
τ
i
)
R(\tau_i)
R(τi)的方差也会很大(方差传播),从而进一步导致梯度上升(下降)过程不是很稳定(所以问题在于
R
(
τ
i
)
R(\tau_i)
R(τi)上)。此时,可以使用temporal causality方法或者是baseline方法进行优化。
Likelihood Ratio Gradient:Baseline
基于Baseline的方法,是让每一个
R
(
τ
i
)
R(\tau_i)
R(τi)都减去一个量
b
b
b,
∇
θ
J
(
θ
)
=
1
M
∑
i
=
1
M
∇
θ
log
P
(
τ
i
;
θ
)
(
R
(
τ
i
)
−
b
)
\nabla_\theta J(\theta)=\frac{1}{M}\sum_{i=1}^M\nabla_\theta\log P(\tau_i;\theta)(R(\tau_i)-b)
∇θJ(θ)=M1i=1∑M∇θlogP(τi;θ)(R(τi)−b)
其中
b
b
b是能代表样本的期望值,
b
=
E
[
R
(
τ
)
]
≈
1
M
∑
t
=
1
M
R
(
τ
i
)
b=E[R(\tau)]\approx\frac{1}{M}\sum_{t=1}^MR(\tau_i)
b=E[R(τ)]≈M1t=1∑MR(τi)
或者是
b
=
∑
i
(
∇
θ
log
P
(
τ
i
;
θ
)
2
)
R
(
τ
i
)
∑
i
(
∇
θ
log
P
(
τ
i
;
θ
)
)
2
b=\frac{\sum_i(\nabla_\theta\log P(\tau_i;\theta)^2)R(\tau_i)}{\sum_i(\nabla_\theta\log P(\tau_i;\theta))^2}
b=∑i(∇θlogP(τi;θ))2∑i(∇θlogP(τi;θ)2)R(τi)
Likelihood Ratio and Temporal Structure
假设经过baseline处理过后的policy gradient估计
∇
θ
J
(
θ
)
≈
1
M
∑
i
=
1
M
(
R
(
τ
i
)
−
b
)
∑
t
=
0
T
−
1
∇
θ
log
π
θ
(
a
t
i
∣
s
t
i
)
=
1
M
∑
i
=
1
M
(
∑
t
=
0
T
−
1
∇
θ
log
π
θ
(
a
t
i
∣
s
t
i
)
)
(
∑
t
=
0
T
−
1
R
(
s
t
i
,
a
t
i
)
−
b
)
\begin{aligned}\nabla_\theta J(\theta)&\approx\frac{1}{M}\sum_{i=1}^M(R(\tau_i)-b)\sum_{t=0}^{T-1}\nabla_\theta\log\pi_\theta(a_t^i|s_t^i)\\ &=\frac{1}{M}\sum_{i=1}^M(\sum_{t=0}^{T-1}\nabla_\theta\log\pi_\theta(a_t^i|s_t^i))(\sum_{t=0}^{T-1}R(s_t^i,a_t^i)-b) \end{aligned}
∇θJ(θ)≈M1i=1∑M(R(τi)−b)t=0∑T−1∇θlogπθ(ati∣sti)=M1i=1∑M(t=0∑T−1∇θlogπθ(ati∣sti))(t=0∑T−1R(sti,ati)−b)
由于未来的行为不依赖于过去的reward,所以可以使用以下表达式来替代,从而降低方差。
∇
θ
J
(
θ
)
=
1
M
∑
i
=
1
M
∑
t
=
0
T
−
1
∇
θ
log
π
θ
(
a
t
i
∣
s
t
i
)
(
∑
k
=
t
T
−
1
R
(
s
k
i
,
a
k
i
)
−
b
(
s
k
i
)
)
\nabla_\theta J(\theta)=\frac{1}{M}\sum_{i=1}^M\sum_{t=0}^{T-1}\nabla_\theta\log\pi_\theta(a_t^i|s_t^i)(\sum_{k=t}^{T-1}R(s_k^i,a_k^i)-b(s_k^i))
∇θJ(θ)=M1i=1∑Mt=0∑T−1∇θlogπθ(ati∣sti)(k=t∑T−1R(ski,aki)−b(ski))
其中,
b
(
s
t
)
=
E
[
r
t
+
r
t
+
1
+
⋯
+
r
T
−
1
]
b(s_t)=E[r_t+r_{t+1}+\cdots+r_{T-1}]
b(st)=E[rt+rt+1+⋯+rT−1]
Pseudo-code Vanilla Policy Gradient
Algorithm:Vanilla Policy Gradient Algorithm With Baseline
procedure Policy Gradient(
α
\alpha
α)
~~~~~
Initialize policy parameters
θ
\theta
θ and baseline value
b
(
s
)
b(s)
b(s) for all
s
s
s
~~~~~
for iteration=1,2,
⋯
\cdots
⋯ do
~~~~~
~~~~~
Collect a set of
m
m
m trajectories by executing the current policy
π
θ
\pi_\theta
πθ
~~~~~
~~~~~
for each time/step
t
t
t of each trajectory
τ
i
\tau_i
τi do
~~~~~
~~~~~
~~~~~
Compute the return
G
t
i
=
∑
k
=
t
T
−
1
R
k
G_t^i=\sum_{k=t}^{T-1}R_k
Gti=∑k=tT−1Rk
~~~~~
~~~~~
~~~~~
Compute the advantage estimate
A
^
t
i
=
G
t
i
−
b
(
s
t
)
\hat{A}_t^i=G_t^i-b(s_t)
A^ti=Gti−b(st)
~~~~~
~~~~~
Re-fit baseline to the empirical returns by updating
w
w
w to minimize
∑
i
=
1
M
∑
t
=
0
T
−
1
∣
∣
b
(
s
t
)
−
G
t
i
∣
∣
2
\sum_{i=1}^M\sum_{t=0}^{T-1}||b(s_t)-G_t^i||^2
i=1∑Mt=0∑T−1∣∣b(st)−Gti∣∣2
~~~~~
~~~~~
Update policy parameters
θ
\theta
θ using the policy gradient estimate
g
^
≈
∇
θ
J
(
θ
)
\hat{g}\approx\nabla_\theta J(\theta)
g^≈∇θJ(θ)
g
^
=
∑
i
=
1
M
∑
t
=
1
T
−
1
A
^
t
i
∇
θ
log
π
θ
(
a
t
i
∣
s
t
i
)
\hat{g}=\sum_{i=1}^{M}\sum_{t=1}^{T-1}\hat{A}_t^i\nabla_\theta\log\pi_{\theta}(a_t^i|s_t^i)
g^=i=1∑Mt=1∑T−1A^ti∇θlogπθ(ati∣sti)
~~~~~
~~~~~
with an optimizer like SGD(
θ
←
θ
+
α
⋅
g
^
\theta \leftarrow\theta+\alpha·\hat{g}
θ←θ+α⋅g^) or Adam
~~~~~
return
θ
\theta
θ and baseline values
b
(
s
)
b(s)
b(s)
Reducing Variance Using a Critic
假设
J
(
θ
)
J(\theta)
J(θ)的更新公式为:
∇
θ
J
(
θ
)
=
E
π
θ
[
∑
t
=
0
T
−
1
G
t
⋅
∇
θ
log
π
θ
(
a
t
∣
s
t
)
]
\nabla_\theta J(\theta)=E_{\pi_\theta}[\sum_{t=0}^{T-1}G_t·\nabla_\theta\log\pi_\theta(a_t|s_t)]
∇θJ(θ)=Eπθ[t=0∑T−1Gt⋅∇θlogπθ(at∣st)]
并且,
G
t
G_t
Gt由 MC policy gradient采样得到,它是动作价值函数
Q
π
θ
(
s
t
,
a
t
)
Q_{\pi_\theta}(s_t,a_t)
Qπθ(st,at)的无偏估计(但是方差比较大)。
Q
π
θ
(
s
t
,
a
t
)
Q_{\pi_\theta}(s_t,a_t)
Qπθ(st,at)可以使用评判器(critic)来估计。
Q
w
(
s
,
a
)
≈
Q
π
θ
(
s
t
,
a
t
)
Q_w(s,a)\approx Q_{\pi_\theta}(s_t,a_t)
Qw(s,a)≈Qπθ(st,at)
然后更新公式会变为
∇
θ
J
(
θ
)
=
E
π
θ
[
∑
t
=
0
T
−
1
Q
w
(
s
t
,
a
t
)
⋅
∇
θ
log
π
θ
(
a
t
∣
s
t
)
]
\nabla_\theta J(\theta)=E_{\pi_\theta}[\sum_{t=0}^{T-1}Q_w(s_t,a_t)·\nabla_\theta\log\pi_\theta(a_t|s_t)]
∇θJ(θ)=Eπθ[t=0∑T−1Qw(st,at)⋅∇θlogπθ(at∣st)]
上式实际上融合了value function和policy function两种方法,称为“Actor-Critic” Policy Gradient算法。
(1)Actor:指的是用于用于生成action的policy function。
(2)Critic:用于评估action的reward的的value function。
“Actor-Critic”算法需要维护两组参数。
(1)Actor:更新策略函数参数
θ
\theta
θ。会往Critic建议的方向更新。
(2)Critic:更新动作价值函数的参数
w
w
w。
Algorithm:Action-Value Actor-Critic Algorithm:Simple QAC
1:for each step do
2:
~~~~~
generate sample
s
,
a
,
r
,
s
′
,
a
′
s,a,r,s',a'
s,a,r,s′,a′ following
π
θ
\pi_\theta
πθ
3:
~~~~~
δ
=
r
+
γ
Q
w
(
s
′
,
a
′
)
−
Q
w
(
s
,
a
)
\delta=r+\gamma Q_w(s',a')-Q_w(s,a)~~~~~
δ=r+γQw(s′,a′)−Qw(s,a) #TD error
4:
~~~~~
w
←
w
+
β
δ
ψ
(
s
,
a
)
w\leftarrow w+\beta\delta\psi(s,a)
w←w+βδψ(s,a)
5:
~~~~~
θ
←
θ
+
α
∇
θ
log
π
θ
(
s
,
a
)
Q
w
(
s
,
a
)
\theta\leftarrow\theta+\alpha\nabla_\theta\log\pi_\theta(s,a)Q_w(s,a)
θ←θ+α∇θlogπθ(s,a)Qw(s,a)
6:end for
强化学习的两个不同学派
Value-based RL,通过dynamic programing来解决RL问题
(1)经典的RL和控制论
(2)有代表性的算法:Deep Q-learning以及它的扩展
(3)有代表性的学习:Rechard Sutton,David Silver,来自DeepMind
Policy-based RL,通过学习的方法解决RL问题
(1)机器学习和深度学习
(2)有代表性的算法:PG算法机器扩展,TRPO,PPO等
(3)有代表性的学者:Pieter Abbeel,Sergey Levine,John Schulman,来自OpenAI