策略梯度方法介绍——蒙特卡洛策略梯度方法(REINFORCE)

目录

上一节介绍了 ∇ J ( θ ) \nabla \mathcal J(\theta) J(θ)的求解过程的推导,本节将基于上述推导进行补充,构建更加泛化的表达式,从而引出REINFORCE算法的更新方程。

回顾: ∇ J ( θ ) \nabla \mathcal J(\theta) J(θ)梯度求解结果

上一节介绍关于 ∇ J ( θ ) \nabla \mathcal J(\theta) J(θ)梯度方向的求解结果如下:
∇ J ( θ ) = ∇ V π ( s 0 ) ∝ ∑ s ∈ S μ ( s ) ∑ a ∈ A ( s ) ∇ π ( a ∣ s ) q π ( s , a ) \begin{aligned} \nabla \mathcal J(\theta) & = \nabla V_\pi(s_0) \\ & \propto \sum_{s \in \mathcal S} \mu(s) \sum_{a \in \mathcal A(s)} \nabla \pi(a \mid s)q_\pi(s,a) \end{aligned} J(θ)=Vπ(s0)sSμ(s)aA(s)π(as)qπ(s,a)
其中 s 0 s_0 s0表示情节的初始状态 μ ( s ) \mu(s) μ(s)表示某状态 s s s在情节中出现的概率
μ ( s ) = η ( s ) ∑ s ′ η ( s ′ ) \mu(s) = \frac{\eta(s)}{\sum_{s'}\eta(s')} μ(s)=sη(s)η(s)
η ( s ) \eta(s) η(s)表示某状态 s s s在情节中出现的平均次数

策略梯度定理的延伸

观察 ∇ J ( θ ) \nabla \mathcal J(\theta) J(θ)梯度方向的求解结果:
∇ J ( θ ) ∝ ∑ s ∈ S μ ( s ) ∑ a ∈ A ( s ) ∇ π ( a ∣ s ) q π ( s , a ) \nabla \mathcal J(\theta) \propto \sum_{s \in \mathcal S} \mu(s) \sum_{a \in \mathcal A(s)} \nabla \pi(a \mid s)q_\pi(s,a) J(θ)sSμ(s)aA(s)π(as)qπ(s,a)
发现 μ ( s ) \mu(s) μ(s)本身是状态 s s s出现概率 → \to 可以将 ∑ s ∈ S μ ( s ) \sum_{s \in \mathcal S} \mu(s) sSμ(s)表示为表示为期望形式
∑ s ∈ S μ ( s ) ∑ a ∈ A ( s ) ∇ π ( a ∣ s ) q π ( s , a ) = E ? [ ∑ a ∈ A ( s ) ∇ π ( a ∣ s ) q π ( s , a ) ] \sum_{s \in \mathcal S} \mu(s) \sum_{a \in \mathcal A(s)} \nabla \pi(a \mid s)q_\pi(s,a) = \mathbb E_{?}\left[\sum_{a \in \mathcal A(s)} \nabla \pi(a \mid s)q_\pi(s,a)\right] sSμ(s)aA(s)π(as)qπ(s,a)=E? aA(s)π(as)qπ(s,a)
问题:期望符号中的概率分布 是谁(上式中“?”部分);
既然是关于状态的概率分布,我们定义这样一个分布符号: ρ π θ \rho^{\pi_{\theta}} ρπθ,使得状态 s s s出现概率服从该分布。
需要注意的点:该分布不仅和策略函数 π ( a ∣ s ; θ ) \pi(a \mid s;\theta) π(as;θ)相关,因为‘状态转移过程’是系统内部的变化,因此这个出现概率的分布还与‘环境’相关。
∀ s ∈ S → s ∼ ρ π θ ( s ) = lim ⁡ t → ∞ P ( S t = s ∣ A 0 : t ∼ π ) \forall s \in \mathcal S \to s \sim \rho^{\pi_{\theta}}(s) = \mathop{\lim}\limits_{t \to \infty}P(S_t = s \mid A_{0:t} \sim \pi) sSsρπθ(s)=tlimP(St=sA0:tπ)
上述式子整理如下:
E s ∼ ρ π θ [ ∑ a ∈ A ( s ) ∇ π ( a ∣ s ) q π ( s , a ) ] \mathbb E_{s \sim \rho^{\pi_{\theta}}}\left[\sum_{a \in \mathcal A(s)} \nabla \pi(a \mid s)q_\pi(s,a)\right] Esρπθ aA(s)π(as)qπ(s,a)
为了使公式规范化:

  • 我们将所有的状态 s s s动作 a a a替换为 t t t时刻的状态 S t S_t St,状态 S t S_t St条件下的动作 A t A_t At
  • 上述公式中的 π ( a ∣ s ) \pi(a \mid s) π(as)策略函数,因此替换为 π ( a ∣ s ; θ ) \pi(a \mid s;\theta) π(as;θ)

替换结果如下:
E S t ∼ ρ π θ [ ∑ A t ∈ A ( S t ) ∇ π ( A t ∣ S t ; θ ) q π ( S t , A t ) ] \mathbb E_{S_t \sim \rho^{\pi_{\theta}}}\left[\sum_{A_t \in \mathcal A(S_t)} \nabla \pi(A_t \mid S_t;\theta)q_\pi(S_t,A_t)\right] EStρπθ AtA(St)π(AtSt;θ)qπ(St,At)

继续观察:上式中存在一个 ∑ A t ∈ A ( S t ) \sum_{A_t \in \mathcal A(S_t)} AtA(St),因此存在一个想法是 将该部分也化成期望形式。但 ∇ π ( A t ∣ S t ; θ ) \nabla \pi(A_t \mid S_t;\theta) π(AtSt;θ)本身并不是策略函数,因此,我们需要引入一个策略函数 π ( A t ∣ S t ; θ ) \pi(A_t \mid S_t;\theta) π(AtSt;θ)。具体过程如下:
E S t ∼ ρ π θ [ ∑ A t ∈ A ( S t ) ∇ π ( A t ∣ S t ; θ ) q π ( S t , A t ) ] = E S t ∼ ρ π θ [ ∑ A t ∈ A ( S t ) π ( A t ∣ S t ; θ ) ∇ π ( A t ∣ S t ; θ ) π ( A t ∣ S t ; θ ) q π ( S t , A t ) ] \begin{split} & \mathbb E_{S_t \sim \rho^{\pi_{\theta}}} \left[\sum_{A_t \in \mathcal A(S_t)} \nabla \pi(A_t \mid S_t;\theta)q_\pi(S_t,A_t) \right] \\ & = \mathbb E_{S_t \sim \rho^{\pi_{\theta}}}\left[\sum_{A_t \in \mathcal A(S_t)} \pi(A_t \mid S_t;\theta) \frac{\nabla \pi(A_t \mid S_t;\theta)}{\pi(A_t \mid S_t;\theta)}q_\pi(S_t,A_t) \right] \end{split} EStρπθ AtA(St)π(AtSt;θ)qπ(St,At) =EStρπθ AtA(St)π(AtSt;θ)π(AtSt;θ)π(AtSt;θ)qπ(St,At)
此时,可以将 ∑ A t ∈ A ( S t ) π ( A t ∣ S t ; θ ) \sum_{A_t \in \mathcal A(S_t)} \pi(A_t \mid S_t;\theta) AtA(St)π(AtSt;θ)写成期望形式,并记策略函数符号为 π θ \pi_{\theta} πθ
注意:状态-动作价值函数服从的也是 π θ \pi_{\theta} πθ,因此同步修改为 q π θ ( S t , A t ) q_{\pi_{\theta}}(S_t,A_t) qπθ(St,At)
= E S t ∼ ρ π θ [ E A t ∼ π θ [ ∇ π ( A t ∣ S t ; θ ) π ( A t ∣ S t ; θ ) q π θ ( S t , A t ) ] ] = E S t ∼ ρ π θ ; A t ∼ π θ [ ∇ π ( A t ∣ S t ; θ ) π ( A t ∣ S t ; θ ) q π θ ( S t , A t ) ] \begin{split} & = \mathbb E_{S_t \sim \rho^{\pi_{\theta}}}\left[\mathbb E_{A_t\sim\pi_{\theta}}\left[\frac{\nabla \pi(A_t \mid S_t;\theta)}{\pi(A_t \mid S_t;\theta)}q_{\pi_{\theta}}(S_t,A_t)\right] \right] \\ & = \mathbb E_{S_t \sim \rho^{\pi_{\theta}};A_t\sim\pi_{\theta}}\left[\frac{\nabla \pi(A_t \mid S_t;\theta)}{\pi(A_t \mid S_t;\theta)}q_{\pi_{\theta}}(S_t,A_t)\right] \end{split} =EStρπθ[EAtπθ[π(AtSt;θ)π(AtSt;θ)qπθ(St,At)]]=EStρπθ;Atπθ[π(AtSt;θ)π(AtSt;θ)qπθ(St,At)]

继续观察期望中的第一项式子,可以将其 看成 log ⁡ \log log函数 的梯度结果。即:
这里的log函数如果没有声明,默认的底数均为‘自然对数’e
∇ π ( A t ∣ S t ; θ ) π ( A t ∣ S t ; θ ) = ∇ log ⁡ π ( A t ∣ S t ; θ ) \frac{\nabla \pi(A_t \mid S_t;\theta)}{\pi(A_t \mid S_t;\theta)} = \nabla \log \pi(A_t \mid S_t;\theta) π(AtSt;θ)π(AtSt;θ)=logπ(AtSt;θ)

至此,最终将策略梯度定理表示为如下形式:
∇ J ( θ ) = E S t ∼ ρ π θ ; A t ∼ π θ [ ∇ log ⁡ π ( A t ∣ S t ; θ ) q π θ ( S t , A t ) ] \nabla \mathcal J(\theta) = \mathbb E_{S_t \sim \rho^{\pi_{\theta}};A_t\sim\pi_{\theta}}\left[\nabla \log \pi(A_t \mid S_t;\theta)q_{\pi_{\theta}}(S_t,A_t)\right] J(θ)=EStρπθ;Atπθ[logπ(AtSt;θ)qπθ(St,At)]

蒙特卡洛策略梯度方法(REINFORCE)简单理解

之所以将 ∇ J ( θ ) \nabla \mathcal J(\theta) J(θ)化简为期望形式,是因为期望形式就可以通过 蒙特卡洛方法 采样的方式来近似求解 ∇ J ( θ ) \nabla \mathcal J(\theta) J(θ)

观察策略梯度定理
∇ J ( θ ) = E S t ∼ ρ π θ ; A t ∼ π θ [ ∇ log ⁡ π ( A t ∣ S t ; θ ) q π θ ( S t , A t ) ] \nabla \mathcal J(\theta) = \mathbb E_{S_t \sim \rho^{\pi_{\theta}};A_t\sim\pi_{\theta}}\left[\nabla \log \pi(A_t \mid S_t;\theta)q_{\pi_{\theta}}(S_t,A_t)\right] J(θ)=EStρπθ;Atπθ[logπ(AtSt;θ)qπθ(St,At)]
本质上, q π θ ( S t , A t ) q_{\pi_{\theta}}(S_t,A_t) qπθ(St,At)表示 π θ \pi_{\theta} πθ条件下,给定 S t , A t S_t,A_t St,At后回报(Return) G t G_t Gt的期望。即:
q π θ ( S t , A t ) = E A t ∼ π θ [ G t ∣ S t , A t ] q_{\pi_{\theta}}(S_t,A_t) = \mathbb E_{A_t \sim\pi_{\theta}}[G_t \mid S_t,A_t] qπθ(St,At)=EAtπθ[GtSt,At]
因此,策略梯度定理表示如下
E A t ∼ π θ [ G t ∣ S t , A t ] \mathbb E_{A_t \sim\pi_{\theta}}[G_t \mid S_t,A_t] EAtπθ[GtSt,At]中的分布和前面重复,消掉了,只留一个~
∇ J ( θ ) = E S t ∼ ρ π θ ; A t ∼ π θ [ ∇ log ⁡ π ( A t ∣ S t ; θ ) E A t ∼ π θ [ G t ∣ S t , A t ] ] = E S t ∼ ρ π θ ; A t ∼ π θ [ ∇ log ⁡ π ( A t ∣ S t ; θ ) G t ] \begin{aligned} \nabla \mathcal J(\theta) & = \mathbb E_{S_t \sim \rho^{\pi_{\theta}};A_t\sim\pi_{\theta}}\left[\nabla \log \pi(A_t \mid S_t;\theta)\mathbb E_{A_t \sim\pi_{\theta}}[G_t \mid S_t,A_t]\right] \\ & = \mathbb E_{S_t \sim \rho^{\pi_{\theta}};A_t\sim\pi_{\theta}}\left[\nabla \log \pi(A_t \mid S_t;\theta)G_t\right] \end{aligned} J(θ)=EStρπθ;Atπθ[logπ(AtSt;θ)EAtπθ[GtSt,At]]=EStρπθ;Atπθ[logπ(AtSt;θ)Gt]

至此,我们可以通过采样 ∇ log ⁡ π ( A t ∣ S t ; θ ) G t \nabla \log \pi(A_t \mid S_t;\theta)G_t logπ(AtSt;θ)Gt对策略函数的参数 θ \theta θ进行 增量更新
θ t + 1 = θ t + α ∇ log ⁡ π ( A t ∣ S t ; θ ) G t \theta_{t+1} = \theta_{t} + \alpha \nabla \log \pi(A_t \mid S_t;\theta)G_t θt+1=θt+αlogπ(AtSt;θ)Gt

用于估计最优策略的REINFORCE算法表示如下:

REINFORCE算法(用于估计最优策略)
输入
(Input)
可微策略函数 π ( a ∣ s ; θ ) \pi(a \mid s;\theta) π(as;θ),衰减因子 γ \gamma γ,学习率 α \alpha α
初始化操作
(Initialization operation)
初始化策略函数的参数 θ \theta θ
算法过程
(Algorithmic Process)
1. repeat 对每一个情节: k = 0 , 1 , 2 , . . . k=0,1,2,... k=0,1,2,...
2. 根据策略函数 π ( a ∣ s ; θ ) \pi(a \mid s;\theta) π(as;θ),生成一组情节:
S 0 , A 0 , R 1 , S 1 , A 1 , ⋯   , S T − 1 , A T − 1 , S T , R T S_0,A_0,R_1,S_1,A_1,\cdots,S_{T-1},A_{T-1},S_T,R_T S0,A0,R1,S1,A1,,ST1,AT1,ST,RT
3. G ← \gets 0
(后向前遍历)
4.   repeat t = T − 1 , T − 2 , ⋯ 0 t =T-1,T-2,\cdots0 t=T1,T2,0
5.        G ← γ G + R t + 1 G \gets \gamma G + R_{t+1} GγG+Rt+1
6.        θ ← θ + α γ t ∇ ln ⁡ π ( A t ∣ S t ; θ ) G \theta \gets \theta + \alpha \gamma^t \nabla \ln \pi(A_t \mid S_t;\theta)G θθ+αγtlnπ(AtSt;θ)G

θ \theta θ在迭代过程中,通过学习率 α \alpha α配合衰减因子 γ \gamma γ,随着迭代次数的增加,逐渐减小参数更新幅度(即步长(step))。从而找到最优参数。

下一节将介绍蒙特卡洛梯度方法(REINFORCE)的其他变形方式

相关参考:
【强化学习】策略梯度方法-REINFORCE
深度强化学习原理、算法pytorch实战 —— 刘全,黄志刚编著

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静静的喝酒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值