策略梯度算法(2024-1-18~2024-1-20)
策略梯度( p o l i c y − b a s e d policy-based policy−based)
1.基于价值算法的缺点
- 无法表示连续动作。DQN等算法通过学习状态和动作的价值函数来间接指导策略。只能处理离散动作问题。
- 高方差 。基于价值的方法通常是通过采样来估计价值函数,导致方差很高。
- 探索与利用的平衡问题 。 ϵ -greedy \epsilon\text{-greedy} ϵ-greedy 策略可以实现一定程度的随机但效果不理想。
2.策略梯度算法
累积的价值期望 V ∗ ( s ) V^{*}(s) V∗(s)
π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(a∣s) 来表示策略,即在状态 s s s 下采取动作 a a a 的概率分布 $ p(a|s)$,其中 θ \theta θ 是我们要去求出来的模型参数。
回合( e p i s o d e episode episode):环境首先会产生初始状态 s 0 s_0 s0然后智能体对应的执行动作 a 0 a_0 a0,然后转移到下一个状态 s 1 s_1 s1,并且奖励一个 r 1 r_1 r1,智能体再根据当前状态选择下一个动作,以此递推至终止状态。
轨迹(
t
r
a
j
e
c
t
o
r
y
trajectory
trajectory):把所有状态和动作按顺序组合起来。
τ
\tau
τ。
τ
=
{
s
0
,
a
0
,
s
1
,
a
1
,
⋯
,
s
T
,
a
T
}
(9.1)
\tag{9.1} \tau=\left\{s_{0}, a_{0}, s_{1}, a_{1}, \cdots, s_{T}, a_{T}\right\}
τ={s0,a0,s1,a1,⋯,sT,aT}(9.1)
T
T
T 表示回合的终止时刻。由于环境初始化是随机的,我们假设产生初始状态
s
0
s_0
s0 的概率为
p
(
s
0
)
p(s_0)
p(s0) ,那么给定策略函数
π
θ
(
a
∣
s
)
\pi_{\theta}(a|s)
πθ(a∣s) 的情况下,其实是很容易计算出轨迹
τ
\tau
τ 产生的概率的,用
P
θ
(
τ
)
P_{\theta}(\tau)
Pθ(τ) 表示。为了方便读者理解,我们假设有一个很短的轨迹
τ
0
=
{
s
0
,
a
0
,
s
1
}
\tau_0 = \{s_0,a_0,s_1\}
τ0={s0,a0,s1} ,即智能体执行一个动作之后就终止本回合了。
拆分一下在这条轨迹产生的过程中出现了那些概率事件,首先是环境初始化产生状态 s 0 s_0 s0 ,接着是智能体采取动作 a 0 a_0 a0 ,然后环境转移到状态 s 1 s_1 s1,即整个过程有三个概率事件,那么根据条件概率的乘法公式,该轨迹出现的概率应该为 环境初始化产生状态 s 0 s_0 s0 的概率 p ( s 0 ) p(s_0) p(s0) 乘以智能体采取动作 a 0 a_0 a0 的概率 π θ ( a 0 ∣ s 0 ) \pi_{\theta}(a_0|s_0) πθ(a0∣s0) 乘以环境转移到状态 s 1 s_1 s1 的概率 p ( s 1 ∣ s 0 , a 0 ) p(s_1|s_0,a_0) p(s1∣s0,a0),即 P θ ( τ 0 ) = π θ ( a 0 ∣ s 0 ) p ( s 1 ∣ s 0 , a 0 ) P_{\theta}(\tau_0) = \pi_{\theta}(a_0|s_0)p(s_1|s_0,a_0) Pθ(τ0)=πθ(a0∣s0)p(s1∣s0,a0) 。依此类推,对于任意轨迹 τ \tau τ ,其产生的概率如式 ( 9.2 ) \text(9.2) (9.2) 所示。
P
θ
(
τ
)
=
p
(
s
0
)
π
θ
(
a
0
∣
s
0
)
p
(
s
1
∣
s
0
,
a
0
)
π
θ
(
a
1
∣
s
1
)
p
(
s
2
∣
s
1
,
a
1
)
⋯
=
p
(
s
0
)
∏
t
=
0
T
π
θ
(
a
t
∣
s
t
)
p
(
s
t
+
1
∣
s
t
,
a
t
)
(9.2)
\tag{9.2} \begin{aligned} P_{\theta}(\tau) &=p(s_{0}) \pi_{\theta}(a_{0} | s_{0}) p(s_{1} | s_{0}, a_{0}) \pi_{\theta}(a_{1} | s_{1}) p(s_{2} | s_{1}, a_{1}) \cdots \\ &=p(s_{0}) \prod_{t=0}^{T} \pi_{\theta}\left(a_{t} | s_{t}\right) p\left(s_{t+1} | s_{t}, a_{t}\right) \end{aligned}
Pθ(τ)=p(s0)πθ(a0∣s0)p(s1∣s0,a0)πθ(a1∣s1)p(s2∣s1,a1)⋯=p(s0)t=0∏Tπθ(at∣st)p(st+1∣st,at)(9.2)
将环境在每一步状态和动作下产生的奖励记作一个函数
r
t
+
1
=
r
(
s
t
,
a
t
)
,
t
=
0
,
1
,
⋯
r_{t+1}=r(s_t,a_t),t=0,1,\cdots
rt+1=r(st,at),t=0,1,⋯,那么对于一条轨迹
τ
\tau
τ 来说,对应的累积奖励就可以计算为
R
(
τ
)
=
∑
t
=
0
T
r
(
s
t
,
a
t
)
R(\tau)=\sum_{t=0}^T r\left(s_t, a_t\right)
R(τ)=∑t=0Tr(st,at),注意这里出于简化考虑我们忽略了折扣因子
γ
\gamma
γ
那么在给定的策略下,即参数 θ \theta θ 固定,对于不同的初始状态,会形成不同的轨迹 τ 1 , τ 2 , ⋯ \tau_{1},\tau_{2},\cdots τ1,τ2,⋯,对应轨迹的出现概率前面已经推导出来为 P θ ( τ 1 ) , P θ ( τ 2 ) , ⋯ P_{\theta}(\tau_{1}),P_{\theta}(\tau_{2}),\cdots Pθ(τ1),Pθ(τ2),⋯,累积奖励则为 R ( τ 1 ) , R ( τ 2 ) , ⋯ R(\tau_{1}),R(\tau_{2}),\cdots R(τ1),R(τ2),⋯。结合概率论中的全期望公式,我们可以得到策略的价值期望公式,即式 ( 9.3 ) \text(9.3) (9.3) 。
J
(
π
θ
)
=
E
τ
∼
π
θ
[
R
(
τ
)
]
=
P
θ
(
τ
1
)
R
(
τ
1
)
+
P
θ
(
τ
2
)
R
(
τ
2
)
+
⋯
=
∫
τ
P
θ
(
τ
)
R
(
τ
)
=
E
τ
∼
P
θ
(
τ
)
[
∑
t
r
(
s
t
,
a
t
)
]
(9.3)
\tag{9.3} \begin{aligned} J(\pi_{\theta}) = \underset{\tau \sim \pi_\theta}{E}[R(\tau)] & = P_{\theta}(\tau_{1})R(\tau_{1})+P_{\theta}(\tau_{2})R(\tau_{2})+\cdots \\ &=\int_\tau P_{\theta}(\tau) R(\tau) \\ &=E_{\tau \sim P_\theta(\tau)}[\sum_t r(s_t, a_t)] \end{aligned}
J(πθ)=τ∼πθE[R(τ)]=Pθ(τ1)R(τ1)+Pθ(τ2)R(τ2)+⋯=∫τPθ(τ)R(τ)=Eτ∼Pθ(τ)[t∑r(st,at)](9.3)
只要能求出梯度,就可以使用万能的梯度上升或下降的方法来求解对应的最优参数
θ
∗
\theta^*
θ∗
目标是求关于参数 θ \theta θ 的梯度,而公式中的 R ( τ ) R(\tau) R(τ)跟 θ \theta θ其实是没有关联的,因此在求解梯度的时候可以将这一项看作常数。
算法领域默认使用 log x \log x logx 表示以 e e e 为底的对数即可。回到我们的问题,使用这个对数微分技巧,我们就可以将目标函数的梯度做一个转化,即式 ( 9.4 ) \text(9.4) (9.4) 。
∇
θ
P
θ
(
τ
)
=
P
θ
(
τ
)
∇
θ
P
θ
(
τ
)
P
θ
(
τ
)
=
P
θ
(
τ
)
∇
θ
log
P
θ
(
τ
)
(9.4)
\tag{9.4} \nabla_\theta P_{\theta}(\tau)= P_{\theta}(\tau) \frac{\nabla_\theta P_{\theta}(\tau)}{P_{\theta}(\tau) }= P_{\theta}(\tau) \nabla_\theta \log P_{\theta}(\tau)
∇θPθ(τ)=Pθ(τ)Pθ(τ)∇θPθ(τ)=Pθ(τ)∇θlogPθ(τ)(9.4)
根据
P
θ
(
τ
)
=
p
(
s
0
)
∏
t
=
0
T
π
θ
(
a
t
∣
s
t
)
p
(
s
t
+
1
s
t
,
a
t
)
P_{\theta}(\tau)=p(s_{0}) \prod_{t=0}^{T} \pi_{\theta}\left(a_{t} | s_{t}\right) p\left(s_{t+1} s_{t}, a_{t}\right)
Pθ(τ)=p(s0)∏t=0Tπθ(at∣st)p(st+1st,at),再根据对数公式
l
o
g
(
a
b
)
=
l
o
g
a
+
l
o
g
b
log (ab) = log a + log b
log(ab)=loga+logb,即可求出式
(
9.5
)
\text(9.5)
(9.5) 。
log
P
θ
(
τ
)
=
log
p
(
s
0
)
+
∑
t
=
0
T
(
log
π
θ
(
a
t
∣
s
t
)
+
log
p
(
s
t
+
1
∣
s
t
,
a
t
)
)
(9.5)
\tag{9.5} \log P_{\theta}(\tau)= \log p(s_{0}) + \sum_{t=0}^T(\log \pi_{\theta}(a_t \mid s_t)+\log p(s_{t+1} \mid s_t,a_t))
logPθ(τ)=logp(s0)+t=0∑T(logπθ(at∣st)+logp(st+1∣st,at))(9.5)
发现
log
P
θ
(
τ
)
\log P_{\theta}(\tau)
logPθ(τ)展开之后只有中间的项
log
π
θ
(
a
t
∣
s
t
)
\log \pi_{\theta}(a_t \mid s_t)
logπθ(at∣st)跟参数
θ
\theta
θ有关,也就是说其他项关于
θ
\theta
θ的梯度为
0
0
0 ,即式
(
9.6
)
\text(9.6)
(9.6) 。
∇ θ log P θ ( τ ) = ∇ θ log ρ 0 ( s 0 ) + ∑ t = 0 T ( ∇ θ log π θ ( a t ∣ s t ) + ∇ θ log p ( s t + 1 ∣ s t , a t ) ) = 0 + ∑ t = 0 T ( ∇ θ log π θ ( a t ∣ s t ) + 0 ) = ∑ t = 0 T ∇ θ log π θ ( a t ∣ s t ) (9.6) \tag{9.6} \begin{aligned} \nabla_\theta \log P_{\theta}(\tau) &=\nabla_\theta \log \rho_0\left(s_0\right)+\sum_{t=0}^T\left(\nabla_\theta \log \pi_\theta\left(a_t \mid s_t\right)+\nabla_\theta \log p\left(s_{t+1} \mid s_t, a_t\right)\right) \\ &=0+\sum_{t=0}^T\left(\nabla_\theta \log \pi_\theta\left(a_t \mid s_t\right)+0\right) \\ &=\sum_{t=0}^T \nabla_\theta \log \pi_\theta\left(a_t \mid s_t\right) \end{aligned} ∇θlogPθ(τ)=∇θlogρ0(s0)+t=0∑T(∇θlogπθ(at∣st)+∇θlogp(st+1∣st,at))=0+t=0∑T(∇θlogπθ(at∣st)+0)=t=0∑T∇θlogπθ(at∣st)(9.6)
\qquad 现在我们就可以很方便地求出目标函数的梯度了,如式 ( 9.7 ) \text(9.7) (9.7) 所示。
∇
θ
J
(
π
θ
)
=
∇
θ
E
τ
∼
π
θ
[
R
(
τ
)
]
=
∇
θ
∫
τ
P
θ
(
τ
)
R
(
τ
)
=
∫
τ
∇
θ
P
θ
(
τ
)
R
(
τ
)
=
∫
τ
P
θ
(
τ
)
∇
θ
log
P
θ
(
τ
)
R
(
τ
)
=
E
τ
∼
π
θ
[
∇
θ
log
P
θ
(
τ
)
R
(
τ
)
]
=
E
τ
∼
π
θ
[
∑
t
=
0
T
∇
θ
log
π
θ
(
a
t
∣
s
t
)
R
(
τ
)
]
(9.7)
\tag{9.7} \begin{aligned} \nabla_\theta J\left(\pi_\theta\right) &=\nabla_\theta \underset{\tau \sim \pi_\theta}{\mathrm{E}}[R(\tau)] \\ &=\nabla_\theta \int_\tau P_{\theta}(\tau) R(\tau) \\ &=\int_\tau \nabla_\theta P_{\theta}(\tau) R(\tau) \\ &=\int_\tau P_{\theta}(\tau) \nabla_\theta \log P_{\theta}(\tau) R(\tau) \\ &=\underset{\tau \sim \pi_\theta}{\mathrm{E}}\left[\nabla_\theta \log P_{\theta}(\tau) R(\tau)\right]\\ &= \underset{\tau \sim \pi_\theta}{\mathrm{E}}\left[\sum_{t=0}^T \nabla_\theta \log \pi_\theta\left(a_t \mid s_t\right) R(\tau)\right] \end{aligned}
∇θJ(πθ)=∇θτ∼πθE[R(τ)]=∇θ∫τPθ(τ)R(τ)=∫τ∇θPθ(τ)R(τ)=∫τPθ(τ)∇θlogPθ(τ)R(τ)=τ∼πθE[∇θlogPθ(τ)R(τ)]=τ∼πθE[t=0∑T∇θlogπθ(at∣st)R(τ)](9.7)
公式中出现累乘的项时,我们通常都会取对数简化,因为根据对数公式的性质可以将累乘的项转换成累加的项,这样一来问题会更加便于处理。
区别
3.REINFORCE算法
不必采样所有的轨迹,而是采样一部分且数量足够多的轨迹,然后利用这些轨迹的平均值来近似求解目标函数的梯度。这种方法就是蒙特卡洛策略梯度算法,也称作 REINFORCE \text{REINFORCE} REINFORCE 算法。
REINFORCE \text{REINFORCE} REINFORCE 算法的做法是每次采样 N N N 条轨迹,然后对这 N N N 条轨迹的梯度求平均,即式 ( 9.8 ) \text(9.8) (9.8) 。
∇
J
θ
≈
1
N
∑
n
=
1
N
∑
t
=
1
T
n
G
t
n
∇
log
π
θ
(
a
t
n
∣
s
t
n
)
(9.8)
\tag{9.8} \nabla J_{\theta} \approx \frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_{n}} G_{t}^{n} \nabla \log \pi_{\theta}\left(a_{t}^{n} \mid s_{t}^{n}\right)
∇Jθ≈N1n=1∑Nt=1∑TnGtn∇logπθ(atn∣stn)(9.8)
注意这里我们把奖励函数换成了带有折扣因子的回报
G
t
n
=
∑
k
=
t
T
n
γ
k
−
t
r
k
n
G_{t}^{n}=\sum_{k=t}^{T_{n}} \gamma^{k-t} r_{k}^{n}
Gtn=∑k=tTnγk−trkn,其中
T
n
T_n
Tn 表示第
n
n
n 条轨迹的长度,
γ
\gamma
γ 表示折扣因子,
r
k
n
r_{k}^{n}
rkn 表示第
n
n
n 条轨迹在第
k
k
k 步的奖励。
G
t
=
∑
k
=
t
+
1
T
γ
k
−
t
−
1
r
k
=
r
t
+
1
+
γ
G
t
+
1
(9.9)
\tag{9.9} \begin{aligned} G_{t} &=\sum_{k=t+1}^{T} \gamma^{k-t-1} r_{k} \\ &=r_{t+1}+\gamma G_{t+1} \end{aligned}
Gt=k=t+1∑Tγk−t−1rk=rt+1+γGt+1(9.9)
4.策略梯度推到进阶
我们假定了目标是使得每回合的累积价值最大,因此用对应的总奖励 R ( τ ) R(\tau) R(τ) 或回报 G ( τ ) G(\tau) G(τ) 来求解或者说评估价值。但实际使用过程中我们会发现这种价值的评估方法并不是很稳定,因为每回合的累积奖励或回报会受到很多因素的影响,比如回合的长度、奖励的稀疏性等等。
4.1平稳分布
马尔科夫链,在处于平稳分布下,我们会发现一些规律,一个是任意两个状态之间都是互相连通的,即任意两个状态之间都可以通过一定的步骤到达,这个性质称为连通性( connectedness \text{connectedness} connectedness)。
切换到其他状态的概率就变成 0 0 0 了,这个时候连通性就不成立了,我们把这个状态也叫做吸收状态。
马尔可夫链中,终止态不是吸收状态。只是方便计算把他的价值函数定义为0。类似于游戏中我们死亡并不代表结束,可以重新开始。
任意状态在平稳分布下的概率都是一样的,即任意状态的概率都是相等的,这个性质称为细致平稳( detailed balance \text{detailed balance} detailed balance)。
一个马尔科夫链满足连通性,那么它一定满足细致平稳性,反之亦然。
马尔可夫链的平稳分布了,对于任意马尔可夫链,如果满足以下两个条件:
- 非周期性:由于马尔可夫链需要收敛,那么就一定不能是周期性的,实际上我们处理的问题基本上都是非周期性的,这点不需要做过多的考虑。
- 状态连通性:即存在概率转移矩阵 P P P,能够使得任意状态 s 0 s_0 s0经过有限次转移到达状态 s s s,反之亦然。
\qquad 这样我们就可以得出结论,即该马氏链一定存在一个平稳分布,我们用 d π ( s ) d^{\pi}(s) dπ(s)表示,可得到式 ( 9.11 ) \text(9.11) (9.11) 。
d π ( s ) = lim t → ∞ P ( s t = s ∣ s 0 , π θ ) (9.11) \tag{9.11} d^\pi(s)=\lim _{t \rightarrow \infty} P\left(s_t=s \mid s_0, \pi_\theta\right) dπ(s)=t→∞limP(st=s∣s0,πθ)(9.11)
4.2基于平稳分布的策略梯度推导
J ( θ ) = ∑ s ∈ S d π ( s ) V π ( s ) = ∑ s ∈ S d π ( s ) ∑ a ∈ A π θ ( a ∣ s ) Q π ( s , a ) (9.12) \tag{9.12} J(\theta)=\sum_{s \in \mathcal{S}} d^\pi(s) V^\pi(s)=\sum_{s \in \mathcal{S}} d^\pi(s) \sum_{a \in \mathcal{A}} \pi_\theta(a \mid s) Q^\pi(s, a) J(θ)=s∈S∑dπ(s)Vπ(s)=s∈S∑dπ(s)a∈A∑πθ(a∣s)Qπ(s,a)(9.12)
\qquad 同样可以利用对数微分技巧求得对应的梯度,如式 ( 9.13 ) \text(9.13) (9.13) 所示。
∇ θ J ( θ ) ∝ ∑ s ∈ S d π ( s ) ∑ a ∈ A Q π ( s , a ) ∇ θ π θ ( a ∣ s ) = ∑ s ∈ S d π ( s ) ∑ a ∈ A π θ ( a ∣ s ) Q π ( s , a ) ∇ θ π θ ( a ∣ s ) π θ ( a ∣ s ) = E π θ [ Q π ( s , a ) ∇ θ log π θ ( a ∣ s ) ] (9.13) \tag{9.13} \begin{aligned} \nabla_\theta J(\theta) & \propto \sum_{s \in \mathcal{S}} d^\pi(s) \sum_{a \in \mathcal{A}} Q^\pi(s, a) \nabla_\theta \pi_\theta(a \mid s) \\ &=\sum_{s \in \mathcal{S}} d^\pi(s) \sum_{a \in \mathcal{A}} \pi_\theta(a \mid s) Q^\pi(s, a) \frac{\nabla_\theta \pi_\theta(a \mid s)}{\pi_\theta(a \mid s)} \\ &=\mathbb{E}_{\pi_{\theta}}\left[Q^\pi(s, a) \nabla_\theta \log \pi_\theta(a \mid s)\right] \end{aligned} ∇θJ(θ)∝s∈S∑dπ(s)a∈A∑Qπ(s,a)∇θπθ(a∣s)=s∈S∑dπ(s)a∈A∑πθ(a∣s)Qπ(s,a)πθ(a∣s)∇θπθ(a∣s)=Eπθ[Qπ(s,a)∇θlogπθ(a∣s)](9.13)
5.策略函数的设计
5.1离散动作的策略函数
将动作概率分布转化到有正有负,采用Softmax函数来处理,如下
π
θ
(
s
,
a
)
=
e
ϕ
(
s
,
a
)
T
θ
∑
b
e
ϕ
(
s
,
b
)
T
(9.14)
\tag{9.14} \pi_\theta(s, a)=\frac{e^{\phi(s, a)^T} \theta}{\sum_b e^{\phi(s, b)^T}}
πθ(s,a)=∑beϕ(s,b)Teϕ(s,a)Tθ(9.14)
其中
ϕ
(
s
,
a
)
\phi(s, a)
ϕ(s,a) 就是模型前面一层的输出。对应的梯度也可方便求得,如式
(
9.15
)
\text(9.15)
(9.15) 所示。
∇ θ log π θ ( s ∣ a ) = ϕ ( s , a ) − E π θ [ ϕ ( s , . ) ] (9.15) \tag{9.15} \nabla_\theta \log \pi_\theta(s \mid a)=\phi(s, a)-\mathbb{E}_{\pi_\theta}[\phi(s, .)] ∇θlogπθ(s∣a)=ϕ(s,a)−Eπθ[ϕ(s,.)](9.15)
\qquad 由于右边一项 E π θ [ ϕ ( s , . ) ] \mathbb{E}_{\pi_\theta}[\phi(s, .)] Eπθ[ϕ(s,.)] 表示的是动作层所有输出之和,也就是概率分布之和,即等于1,因此我们可以将其去掉,这样一来就可以得到更简单的梯度表达式,如式 ( 9.16 ) \text(9.16) (9.16) 所示。
∇ θ log π θ ( s ∣ a ) = ϕ ( s , a ) (9.16) \tag{9.16} \nabla_\theta \log \pi_\theta(s \mid a)= \phi(s, a) ∇θlogπθ(s∣a)=ϕ(s,a)(9.16)
\qquad 在实战中 ϕ ( s , a ) \phi(s, a) ϕ(s,a) 和 Softmax \text{Softmax} Softmax 函数层 一般是合并在一起的,即直接在模型最后一层输出 Softmax \text{Softmax} Softmax 函数的结果,即概率分布 p θ ( s , a ) p_\theta(s, a) pθ(s,a),这样就得到了最终的策略梯度,即式 ( 9.17 ) \text(9.17) (9.17) 。
∇
θ
log
π
θ
(
s
∣
a
)
=
log
p
θ
(
s
,
a
)
(9.17)
\tag{9.17} \nabla_\theta \log \pi_\theta(s \mid a)= \log p_\theta(s, a)
∇θlogπθ(s∣a)=logpθ(s,a)(9.17)
logits-p
\text{logits-p}
logits-p ,对应
p
θ
(
s
,
a
)
p_\theta(s, a)
pθ(s,a) 叫做
probs
\text{probs}
probs,
5.2连续动作的策略函数
对于连续动作空间,策略对应的动作从高斯分布
N
(
ϕ
(
s
)
T
θ
,
σ
2
)
{\mathbb{N}}\left(\phi(s)^{\mathbb{T}} \theta, \sigma^2\right)
N(ϕ(s)Tθ,σ2) ,对应梯度求得如下
∇
θ
log
π
θ
(
s
,
a
)
=
(
a
−
ϕ
(
s
)
T
θ
)
ϕ
(
s
)
σ
2
(9.18)
\tag{9.18} \nabla_\theta \log \pi_\theta(s, a)=\frac{\left(a-\phi(s)^T \theta\right) \phi(s)}{\sigma^2}
∇θlogπθ(s,a)=σ2(a−ϕ(s)Tθ)ϕ(s)(9.18)
动作从高斯分布
N
(
ϕ
(
s
)
T
θ
,
σ
2
)
{\mathbb{N}}\left(\phi(s)^{\mathbb{T}} \theta, \sigma^2\right)
N(ϕ(s)Tθ,σ2) ,对应梯度求得如下
∇
θ
log
π
θ
(
s
,
a
)
=
(
a
−
ϕ
(
s
)
T
θ
)
ϕ
(
s
)
σ
2
(9.18)
\tag{9.18} \nabla_\theta \log \pi_\theta(s, a)=\frac{\left(a-\phi(s)^T \theta\right) \phi(s)}{\sigma^2}
∇θlogπθ(s,a)=σ2(a−ϕ(s)Tθ)ϕ(s)(9.18)
只需要在模型最后一层输出两个值,一个是均值,一个是方差,然后再用这两个值来构建一个高斯分布,然后采样即可。