策略梯度的基本思想
以前,策略是通过表格表示的:
- 所有状态的动作概率存储在表格π(a|s)中。表格的每个条目由状态和动作索引。
a₁ | a₂ | a₃ | a₄ | a₅ | |
---|---|---|---|---|---|
s₁ | π(a₁|s₁) | π(a₂|s₁) | π(a₃|s₁) | π(a₄|s₁) | π(a₅|s₁) |
⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |
s₉ | π(a₁|s₉) | π(a₂|s₉) | π(a₃|s₉) | π(a₄|s₉) | π(a₅|s₉) |
- 我们可以直接访问或更改表格中的值。
现在,策略可以通过参数化函数表示:π(a∣s,θ)π(a|s, θ)π(a∣s,θ),其中θ∈Rmθ ∈ ℝᵐθ∈Rm是一个参数向量。
-
该函数可以是,例如,一个神经网络,其输入是s,输出是采取每个动作的概率,参数是θθθ。
-
优势:当状态空间很大时,表格表示在存储和泛化方面效率低下。
-
函数表示有时也写作π(a,s,θ)π(a, s, θ)π(a,s,θ)、πθ(a∣s)π_θ(a|s)πθ(a∣s)或πθ(a,s)π_θ(a, s)πθ(a,s)。
表格和函数表示之间的差异:
- 首先,如何定义最优策略?
- 当表示为表格时,如果它能最大化每个状态值,那么策略π是最优的。
- 当由函数表示时,如果它能最大化某些标量指标,那么策略π是最优的。
- 第二,如何获取动作概率?
- 在表格形式中,在sss处采取aaa的概率可以通过查找表格策略直接获取。
- 在函数表示的情况下,我们需要根据函数结构和参数计算π(a∣s,θ)π(a|s, θ)π(a∣s,θ)的值。
- 第三,如何更新策略?
- 当以表格表示时,策略πππ可以通过直接更改表格中的条目来更新。
- 当以参数化函数表示时,策略πππ不能再以这种方式更新。相反,它只能通过更改参数θθθ来更新。
策略梯度的基本思想很简单:
- 首先,定义最优策略的度量(或目标函数):J(θ)J(\theta)J(θ),它可以定义最优策略。
- 第二,基于梯度的优化算法来搜索最优策略:
θt+1=θt+α∇θJ(θt)\theta_{t+1} = \theta_t + \alpha\nabla_\theta J(\theta_t)θt+1=θt+α∇θJ(θt)
虽然这个想法很简单,但当我们尝试回答以下问题时,复杂性就出现了。
- 应该使用什么适当的度量?
- 如何计算度量的梯度?
定义最优策略的度量
有两种度量。
度量一:平均值
第一种度量是平均状态值或简称平均值。具体来说,该度量定义为
vˉπ=∑s∈Sd(s)vπ(s)\bar{v}_\pi = \sum_{s\in S} d(s)v_\pi(s)vˉπ=s∈S∑d(s)vπ(s)
- vˉπ\bar{v}_\pivˉπ 是状态值的加权平均。
- d(s)≥0d(s) \geq 0d(s)≥0 是状态 sss 的权重。
- 由于 ∑s∈Sd(s)=1\sum_{s\in S} d(s) = 1∑s∈Sd(s)=1,我们可以将 d(s)d(s)d(s) 解释为概率分布。那么,度量可以写为
vˉπ=E[vπ(S)]\bar{v}_\pi = \mathbb{E}[v_\pi(S)]vˉπ=E[vπ(S)]
其中 S∼dS \sim dS∼d。
向量积形式:
vˉπ=∑s∈Sd(s)vπ(s)=dTvπ\bar{v}_\pi = \sum_{s\in\mathcal{S}} d(s)v_\pi(s) = d^T v_\pivˉπ=s∈S∑d(s)vπ(s)=dTvπ
其中
vπ=[…,vπ(s),…]T∈R∣S∣v_\pi = [\ldots, v_\pi(s), \ldots]^T \in \mathbb{R}^{|\mathcal{S}|}vπ=[…,vπ(s),…]T∈R∣S∣
d=[…,d(s),…]T∈R∣S∣d = [\ldots, d(s), \ldots]^T \in \mathbb{R}^{|\mathcal{S}|}d=[…,d(s),…]T∈R∣S∣
这种表达方式在我们分析其梯度时特别有用。
分布d的选择
如何选择分布 ddd?有两种情况。
第一种情况是 ddd 独立于策略 π\piπ。
- 这种情况相对简单,因为度量的梯度计算更容易。
- 在这种情况下,我们特别将 ddd 表示为 d0d_0d0,将 vˉπ\bar{v}_\pivˉπ 表示为 vˉπ0\bar{v}_\pi^0vˉπ0。
- 如何选择 d0d_0d0?
- 一种简单的方法是将所有状态视为同等重要,因此选择 d0(s)=1/∣S∣d_0(s) = 1/|\mathcal{S}|d0(s)=1/∣S∣。
- 另一种重要的情况是我们只对特定状态 s0s_0s0 感兴趣。例如,在某些任务中,回合总是从同一个状态 s0s_0s0 开始。那么,我们只关心从 s0s_0s0 开始的长期回报。在这种情况下,
d0(s0)=1,d0(s≠s0)=0d_0(s_0) = 1,\quad d_0(s \neq s_0) = 0d0(s0)=1,d0(s=s0)=0。
第二种情况是 ddd 依赖于策略 π\piπ。
- 选择 ddd 的一种常见方法是使用 dπ(s)d_\pi(s)dπ(s),即在策略 π\piπ 下的平稳分布。
- dπd_\pidπ 的一个基本性质是它满足
dπTPπ=dπTd_\pi^T P_\pi = d_\pi^TdπTPπ=dπT
其中 PπP_\piPπ 是状态转移概率矩阵。 - 选择 dπd_\pidπ 的解释如下:
- 如果一个状态在长期内被频繁访问,那么它更重要,应该获得更多权重。
- 如果一个状态几乎不被访问,那么我们给它较少的权重。
度量二:平均单步奖励
第二种度量是平均单步奖励或简称平均奖励。具体来说,该度量是
rˉπ≐∑s∈Sdπ(s)rπ(s)=E[rπ(S)]\bar{r}_\pi \doteq \sum_{s\in S} d_\pi(s)r_\pi(s) = \mathbb{E}[r_\pi(S)]rˉπ≐s∈S∑dπ(s)rπ(s)=E[rπ(S)]
其中 S∼dπS \sim d_\piS∼dπ,表示状态SSS是根据分布dπd_\pidπ采样得到的。
- 正如其名称所示,rˉπ\bar{r}_\pirˉπ 只是单步即时奖励的加权平均
- 权重 dπd_\pidπ 是平稳分布。
- 在马尔可夫决策过程(MDP)的长期运行中,状态的分布会趋于平稳
- dπd_\pidπ描述了在策略π\piπ下,各个状态出现的长期概率分布
- 这里,rπ(s)≐∑a∈Aπ(a∣s)r(s,a)r_\pi(s) \doteq \sum_{a\in\mathcal{A}} \pi(a|s)r(s,a)rπ(s)≐∑a∈Aπ(a∣s)r(s,a)
- rπ(s)r_\pi(s)rπ(s)表示从状态sss开始可以获得的单步即时奖励的平均值
- 这里π(a∣s)\pi(a|s)π(a∣s)是策略π\piπ在状态sss下选择动作aaa的概率
- r(s,a)r(s,a)r(s,a)是在状态sss采取动作aaa后获得的即时奖励的期望。
- 具体地,r(s,a)=E[R∣s,a]=∑rrp(r∣s,a)r(s,a)=\mathbb{E}[R|s,a]=\sum_r rp(r|s,a)r(s,a)=E[R∣s,a]=∑rrp(r∣s,a),其中p(r∣s,a)p(r|s,a)p(r∣s,a)是在状态sss采取动作aaa后获得奖励rrr的概率。
- 这意味着r(s,a)r(s,a)r(s,a)是通过对所有可能的奖励rrr按照其出现的概率进行加权求和得到的
一个等价的定义!
- 假设一个智能体遵循给定的策略并生成一个轨迹,其奖励为 (Rt+1,Rt+2,⋯ )(R_{t+1}, R_{t+2}, \cdots)(Rt+1,Rt+2,⋯)。
- 沿着这个轨迹的平均单步奖励是
limn→∞1nE[Rt+1+Rt+2+⋯+Rt+n∣St=s0]=limn→∞1nE[∑k=1nRt+k∣St=s0]\lim_{n\to\infty} \frac{1}{n}\mathbb{E}[R_{t+1} + R_{t+2} + \cdots + R_{t+n}|S_t = s_0] \\ = \lim_{n\to\infty} \frac{1}{n}\mathbb{E}[\sum_{k=1}^{n} R_{t+k}|S_t = s_0]n→∞limn1E[Rt+1+Rt+2+⋯+Rt+n∣St=s0]=n→∞limn1E[k=1∑nRt+k∣St=s0]
其中 s0s_0s0 是轨迹的起始状态。
一个重要的性质是
limn→∞1nE[∑k=1nRt+k∣St=s0]=limn→∞1nE[∑k=1nRt+k]=∑sdπ(s)rπ(s)=rˉπ\begin{align} \lim_{n\to\infty} \frac{1}{n}\mathbb{E}\left[\sum_{k=1}^{n} R_{t+k}|S_t = s_0\right] &= \lim_{n\to\infty} \frac{1}{n}\mathbb{E}\left[\sum_{k=1}^{n} R_{t+k}\right]\\ &= \sum_{s} d_\pi(s)r_\pi(s)\\ &= \bar{r}_\pi \end{align}n→∞limn1E[k=1∑nRt+k∣St=s0]=n→∞limn1E[k=1∑nRt+k]=s∑dπ(s)rπ(s)=rˉπ
注意
- 起始状态 s0s_0s0 并不重要。
- rˉπ\bar{r}_\pirˉπ 的两个定义是等价的。
Remarks
- remark 1:
- 所有这些度量都是 π\piπ 的函数。
- 由于 π\piπ 由 θ\thetaθ 参数化,这些度量是 θ\thetaθ 的函数。
- 换句话说,θ\thetaθ 的不同值可以生成不同的度量值。
- 因此,我们可以搜索 θ\thetaθ 的最优值来最大化这些度量。
这就是策略梯度方法的基本思想。
-
remark 2:
- 一个复杂之处是度量可以在折扣情况下定义,其中 γ∈(0,1)\gamma \in (0,1)γ∈(0,1),或在无折扣情况下定义,其中 γ=1\gamma = 1γ=1。
-
remark 3:
- 直观上,rˉπ\bar{r}_\pirˉπ 更加短视,因为它仅考虑即时奖励,而 vˉπ\bar{v}_\pivˉπ 考虑所有步骤的总奖励。
- 然而,这两种度量是相互等价的。
- 在折扣情况下,其中 γ<1\gamma < 1γ<1,有
rˉπ=(1−γ)vˉπ.\bar{r}_\pi = (1 - \gamma)\bar{v}_\pi.rˉπ=(1−γ)vˉπ.
说明
以下度量:
J(θ)=E[∑t=0∞γtRt+1]J(\theta) = \mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t R_{t+1}\right]J(θ)=E[t=0∑∞γtRt+1]
它与我们刚刚介绍的度量有什么关系?
答案:首先,阐明并理解这个度量。
- 它从 S0∼dS_0 \sim dS0∼d 开始,然后 A0,R1,S1,A1,R2,S2,...A_0, R_1, S_1, A_1, R_2, S_2,...A0,R1,S1,A1,R2,S2,...
- At∼π(St)A_t \sim \pi(S_t)At∼π(St) 且 Rt+1,St+1∼p(Rt+1∣St,At),p(St+1∣St,At)R_{t+1}, S_{t+1} \sim p(R_{t+1}|S_t, A_t), p(S_{t+1}|S_t, A_t)Rt+1,St+1∼p(Rt+1∣St,At),p(St+1∣St,At)
然后,我们知道这个度量与平均值相同,因为
J(θ)=E[∑t=0∞γtRt+1]=∑s∈Sd(s)E[∑t=0∞γtRt+1∣S0=s]=∑s∈Sd(s)vπ(s)=vˉπ\begin{align} J(\theta) &= \mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t R_{t+1}\right] \\ &= \sum_{s\in\mathcal{S}} d(s)\mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t R_{t+1}|S_0 = s\right] \\ &= \sum_{s\in\mathcal{S}} d(s)v_\pi(s) \\ &= \bar{v}_\pi \end{align}J(θ)=E[t=0∑∞γtRt+1]=s∈S∑d(s)E[t=0∑∞γtRt+1∣S0=s]=s∈S∑d(s)vπ(s)=vˉπ
度量的梯度
原理说明
给定一个度量,我们接下来
- 推导其梯度
- 然后,应用基于梯度的方法来优化该度量。
梯度计算是策略梯度方法中最复杂的部分之一!这是因为
- 首先,我们需要区分不同的度量 vˉπ\bar{v}_\pivˉπ, rˉπ\bar{r}_\pirˉπ, vˉπ0\bar{v}_\pi^0vˉπ0
- 其次,我们需要区分折扣和无折扣情况。
梯度结果总结:
∇θJ(θ)=∑s∈Sη(s)∑a∈A∇θπ(a∣s,θ)qπ(s,a)\nabla_\theta J(\theta) = \sum_{s\in\mathcal{S}} \eta(s) \sum_{a\in\mathcal{A}} \nabla_\theta\pi(a|s,\theta)q_\pi(s,a)∇θJ(θ)=s∈S∑η(s)a∈A∑∇θπ(a∣s,θ)qπ(s,a)
-
背景知识
- 我们的目标是通过调整策略的参数θ\thetaθ来优化策略,使得累计奖励(用J(θ)J(\theta)J(θ)表示)达到最大。
- J(θ)J(\theta)J(θ)是策略性能指标
- 它依赖于策略π(a∣s,θ)\pi(a|s,\theta)π(a∣s,θ),其中aaa是动作,sss是状态,θ\thetaθ是策略的参数
- qπ(s,a)q_\pi(s,a)qπ(s,a)表示在策略π\piπ下,从状态sss采取动作aaa后的状态 - 动作价值函数,它代表了从该状态 - 动作对出发能获得的期望累积奖励。
-
公式说明
- ∇θJ(θ)\nabla_\theta J(\theta)∇θJ(θ):这是策略性能指标J(θ)J(\theta)J(θ)关于策略参数θ\thetaθ的梯度,可以是 vˉπ\bar{v}_\pivˉπ,rˉπ\bar{r}_\pirˉπ,或 vˉπ0\bar{v}_\pi^0vˉπ0
- "="可以表示严格相等、近似或成比例关系
- ∑s∈Sη(s)\sum_{s\in\mathcal{S}} \eta(s)∑s∈Sη(s):
- η(s)\eta(s)η(s)是状态分布相关的一个权重
- ∑s∈S\sum_{s\in\mathcal{S}}∑s∈S表示对所有可能的状态sss进行求和
- 在强化学习的上下文中,不同的状态可能对策略的整体性能有不同的贡献,η(s)\eta(s)η(s)可以看作是状态sss在评估策略性能时的重要性权重。
- 这个求和操作综合考虑了所有状态的影响。
- ∑a∈A∇θπ(a∣s,θ)qπ(s,a)\sum_{a\in\mathcal{A}} \nabla_\theta\pi(a|s,\theta)q_\pi(s,a)∑a∈A∇θπ(a∣s,θ)qπ(s,a):
- 对于每个状态sss,我们对所有可能的动作aaa进行求和。
- ∇θπ(a∣s,θ)\nabla_\theta\pi(a|s,\theta)∇θπ(a∣s,θ)是策略π(a∣s,θ)\pi(a|s,\theta)π(a∣s,θ)关于参数θ\thetaθ的梯度,它表示策略在状态sss下选择动作aaa的概率随参数θ\thetaθ变化的速率。
- qπ(s,a)q_\pi(s,a)qπ(s,a)是前面提到的状态 - 动作价值函数。
- 这个乘积∇θπ(a∣s,θ)qπ(s,a)\nabla_\theta\pi(a|s,\theta)q_\pi(s,a)∇θπ(a∣s,θ)qπ(s,a)表示在状态sss下,由于选择动作aaa的概率变化(由∇θπ(a∣s,θ)\nabla_\theta\pi(a|s,\theta)∇θπ(a∣s,θ)表示)对策略性能(由qπ(s,a)q_\pi(s,a)qπ(s,a)表示)产生的影响。
-
整体理解
- 整个公式∇θJ(θ)=∑s∈Sη(s)∑a∈A∇θπ(a∣s,θ)qπ(s,a)\nabla_\theta J(\theta)=\sum_{s\in\mathcal{S}} \eta(s)\sum_{a\in\mathcal{A}} \nabla_\theta\pi(a|s,\theta)q_\pi(s,a)∇θJ(θ)=∑s∈Sη(s)∑a∈A∇θπ(a∣s,θ)qπ(s,a)表示策略性能指标J(θ)J(\theta)J(θ)关于策略参数θ\thetaθ的梯度是通过综合考虑所有状态和动作来计算的。
- 对于每个状态sss,我们计算由于策略概率变化对每个动作aaa的性能影响(通过∇θπ(a∣s,θ)qπ(s,a)\nabla_\theta\pi(a|s,\theta)q_\pi(s,a)∇θπ(a∣s,θ)qπ(s,a)),并根据状态权重η(s)\eta(s)η(s)进行求和,最终得到策略性能指标关于参数的梯度,这个梯度可以用于更新策略参数
- 例如在梯度上升算法中,我们可以按照梯度的方向更新参数θ\thetaθ,以提高策略的性能。
具体梯度公式
一些具体结果:
-
∇θrˉπ≃∑sdπ(s)∑a∇θπ(a∣s,θ)qπ(s,a)\nabla_\theta\bar{r}_\pi \simeq \sum_{s} d_\pi(s) \sum_{a} \nabla_\theta\pi(a|s,\theta)q_\pi(s,a)∇θrˉπ≃s∑dπ(s)a∑∇θπ(a∣s,θ)qπ(s,a)
- rˉπ\bar{r}_\pirˉπ是平均单步奖励,∇θrˉπ\nabla_\theta\bar{r}_\pi∇θrˉπ表示平均单步奖励关于策略参数θ\thetaθ的梯度。
- dπ(s)d_\pi(s)dπ(s)是策略π\piπ下的平稳分布,表示在长期运行过程中状态sss出现的概率。
- ∑s\sum_{s}∑s表示对所有状态sss进行求和,这意味着我们要考虑所有可能状态的影响。对于每个状态sss
- ∇θπ(a∣s,θ)\nabla_\theta\pi(a|s,\theta)∇θπ(a∣s,θ)是策略π(a∣s,θ)\pi(a|s,\theta)π(a∣s,θ)关于参数θ\thetaθ的梯度,它描述了策略在状态sss下选择动作aaa的概率随参数θ\thetaθ变化的速率
- qπ(s,a)q_\pi(s,a)qπ(s,a)是状态 - 动作价值函数,表示在策略π\piπ下,从状态sss采取动作aaa后能获得的期望累积奖励。
- 这个乘积∇θπ(a∣s,θ)qπ(s,a)\nabla_\theta\pi(a|s,\theta)q_\pi(s,a)∇θπ(a∣s,θ)qπ(s,a)表示在状态sss下,由于选择动作aaa的概率变化(由∇θπ(a∣s,θ)\nabla_\theta\pi(a|s,\theta)∇θπ(a∣s,θ)表示)对期望累积奖励(由qπ(s,a)q_\pi(s,a)qπ(s,a)表示)产生的影响。
- 整个右边式子通过对所有状态和动作的这种影响进行求和,来近似计算平均单步奖励关于策略参数θ\thetaθ的梯度。
-
∇θvˉπ=11−γ∇θrˉπ\nabla_\theta\bar{v}_\pi = \frac{1}{1-\gamma} \nabla_\theta\bar{r}_\pi∇θvˉπ=1−γ1∇θrˉπ
- vˉπ\bar{v}_\pivˉπ通常是与策略π\piπ相关的价值函数(可能是某种折扣累积价值)
- γ\gammaγ是折扣因子(0≤γ<10\leq\gamma<10≤γ<1),用于衡量未来奖励的重要性。
- 当γ\gammaγ接近111时,未来奖励的重要性较高;
- 当γ\gammaγ接近000时,更注重当前奖励。
- 公式表明,策略π\piπ相关价值函数关于策略参数θ\thetaθ的梯度∇θvˉπ\nabla_\theta\bar{v}_\pi∇θvˉπ与平均单步奖励关于策略参数θ\thetaθ的梯度∇θrˉπ\nabla_\theta\bar{r}_\pi∇θrˉπ之间存在一个比例关系,比例系数是11−γ\frac{1}{1 - \gamma}1−γ1。
- 这意味着如果我们知道了∇θrˉπ\nabla_\theta\bar{r}_\pi∇θrˉπ,就可以很容易地计算出∇θvˉπ\nabla_\theta\bar{v}_\pi∇θvˉπ
- 反之亦然。这种关系在基于梯度的策略优化过程中非常有用。
-
∇θvˉπ0=∑s∈Sρπ(s)∑a∈A∇θπ(a∣s,θ)qπ(s,a)\nabla_\theta\bar{v}_\pi^0 = \sum_{s\in\mathcal{S}} \rho_\pi(s) \sum_{a\in\mathcal{A}} \nabla_\theta\pi(a|s,\theta)q_\pi(s,a)∇θvˉπ0=s∈S∑ρπ(s)a∈A∑∇θπ(a∣s,θ)qπ(s,a)
- vˉπ0\bar{v}_\pi^0vˉπ0可能是某种初始状态下或者特殊定义下的价值函数关于策略参数θ\thetaθ的梯度。
- ρπ(s)\rho_\pi(s)ρπ(s)可能是另一种状态分布相关的权重(与前面的dπ(s)d_\pi(s)dπ(s)类似,但可能有不同的定义或者用途)。
- 同样,右边式子是对所有状态sss和动作aaa进行求和。∑a∈A∇θπ(a∣s,θ)qπ(s,a)\sum_{a\in\mathcal{A}} \nabla_\theta\pi(a|s,\theta)q_\pi(s,a)∑a∈A∇θπ(a∣s,θ)qπ(s,a)的含义与第一个公式中的类似,是在状态sss下由于策略概率变化对期望累积奖励产生的影响。
- ∑s∈Sρπ(s)\sum_{s\in\mathcal{S}} \rho_\pi(s)∑s∈Sρπ(s)表示根据状态分布ρπ(s)\rho_\pi(s)ρπ(s)对所有状态的这种影响进行加权求和,从而得到∇θvˉπ0\nabla_\theta\bar{v}_\pi^0∇θvˉπ0,即这个特殊价值函数关于策略参数θ\thetaθ的梯度。
- 这种计算方式有助于我们在特定的条件或者假设下(由ρπ(s)\rho_\pi(s)ρπ(s)和vˉπ0\bar{v}_\pi^0vˉπ0的定义决定)来优化策略的参数。
紧凑的梯度公式形式
一种紧凑且实用的梯度形式:
∇θJ(θ)=∑s∈Sη(s)∑a∈A∇θπ(a∣s,θ)qπ(s,a)=E[∇θlnπ(A∣S,θ)qπ(S,A)]\begin{align}
\nabla_\theta J(\theta) &= \sum_{s\in\mathcal{S}} \eta(s) \sum_{a\in\mathcal{A}} \nabla_\theta\pi(a|s,\theta)q_\pi(s,a)\\
&= \mathbb{E}[\nabla_\theta \ln \pi(A|S,\theta)q_\pi(S,A)]
\end{align}∇θJ(θ)=s∈S∑η(s)a∈A∑∇θπ(a∣s,θ)qπ(s,a)=E[∇θlnπ(A∣S,θ)qπ(S,A)]
其中 S∼ηS \sim \etaS∼η 且 A∼π(A∣S,θ)A \sim \pi(A|S,\theta)A∼π(A∣S,θ)。
- 公式拆解
- ∇θJ(θ)=∑s∈Sη(s)∑a∈A∇θπ(a∣s,θ)qπ(s,a)\nabla_\theta J(\theta)=\sum_{s\in\mathcal{S}} \eta(s) \sum_{a\in\mathcal{A}} \nabla_\theta\pi(a|s,\theta)q_\pi(s,a)∇θJ(θ)=∑s∈Sη(s)∑a∈A∇θπ(a∣s,θ)qπ(s,a):上文已解释
- E[∇θlnπ(A∣S,θ)qπ(S,A)]\mathbb{E}[\nabla_\theta \ln \pi(A|S,\theta)q_\pi(S,A)]E[∇θlnπ(A∣S,θ)qπ(S,A)]
- ∇θlnπ(A∣S,θ)\nabla_\theta \ln \pi(A|S,\theta)∇θlnπ(A∣S,θ):这是对数策略 lnπ(A∣S,θ)\ln \pi(A|S,\theta)lnπ(A∣S,θ) 关于参数 θ\thetaθ 的梯度。
- 使用对数策略的梯度有很多好处,例如在数值计算上更稳定,并且在推导过程中可以简化计算。
- qπ(S,A)q_\pi(S,A)qπ(S,A):与前面的 qπ(s,a)q_\pi(s,a)qπ(s,a) 类似,只不过这里使用大写字母 SSS 和 AAA 表示随机变量,分别代表状态和动作。
- E[⋅]\mathbb{E}[\cdot]E[⋅]:数学期望运算符。
- S∼ηS \sim \etaS∼η 表示状态 SSS 是从分布 η\etaη 中采样得到的
- A∼π(A∣S,θ)A \sim \pi(A|S,\theta)A∼π(A∣S,θ) 表示动作 AAA 是在状态 SSS 下根据策略 π(A∣S,θ)\pi(A|S,\theta)π(A∣S,θ) 采样得到的。
- 整个式子表示对 ∇θlnπ(A∣S,θ)qπ(S,A)\nabla_\theta \ln \pi(A|S,\theta)q_\pi(S,A)∇θlnπ(A∣S,θ)qπ(S,A) 取数学期望,也就是考虑所有可能的状态 - 动作对的平均情况。
- ∇θlnπ(A∣S,θ)\nabla_\theta \ln \pi(A|S,\theta)∇θlnπ(A∣S,θ):这是对数策略 lnπ(A∣S,θ)\ln \pi(A|S,\theta)lnπ(A∣S,θ) 关于参数 θ\thetaθ 的梯度。
- 公式推导逻辑:从 ∑s∈Sη(s)∑a∈A∇θπ(a∣s,θ)qπ(s,a)\sum_{s\in\mathcal{S}} \eta(s) \sum_{a\in\mathcal{A}} \nabla_\theta\pi(a|s,\theta)q_\pi(s,a)∑s∈Sη(s)∑a∈A∇θπ(a∣s,θ)qπ(s,a) 到 E[∇θlnπ(A∣S,θ)qπ(S,A)]\mathbb{E}[\nabla_\theta \ln \pi(A|S,\theta)q_\pi(S,A)]E[∇θlnπ(A∣S,θ)qπ(S,A)] 的推导主要基于以下两个关键步骤:
- 利用对数求导法则
- 根据对数求导法则,对于函数 y=f(x)y = f(x)y=f(x),有 ∇lny=∇yy\nabla \ln y=\frac{\nabla y}{y}∇lny=y∇y。
- 将其应用到策略 π(a∣s,θ)\pi(a|s,\theta)π(a∣s,θ) 上,可得:∇θlnπ(a∣s,θ)=∇θπ(a∣s,θ)π(a∣s,θ)\nabla_\theta \ln \pi(a|s,\theta) = \frac{\nabla_\theta\pi(a|s,\theta)}{\pi(a|s,\theta)}∇θlnπ(a∣s,θ)=π(a∣s,θ)∇θπ(a∣s,θ)
- 移项得到:∇θπ(a∣s,θ)=π(a∣s,θ)∇θlnπ(a∣s,θ)\nabla_\theta\pi(a|s,\theta) = \pi(a|s,\theta) \nabla_\theta \ln \pi(a|s,\theta)∇θπ(a∣s,θ)=π(a∣s,θ)∇θlnπ(a∣s,θ)
- 引入数学期望
- 将 ∇θπ(a∣s,θ)=π(a∣s,θ)∇θlnπ(a∣s,θ)\nabla_\theta\pi(a|s,\theta) = \pi(a|s,\theta) \nabla_\theta \ln \pi(a|s,\theta)∇θπ(a∣s,θ)=π(a∣s,θ)∇θlnπ(a∣s,θ) 代入 ∑s∈Sη(s)∑a∈A∇θπ(a∣s,θ)qπ(s,a)\sum_{s\in\mathcal{S}} \eta(s) \sum_{a\in\mathcal{A}} \nabla_\theta\pi(a|s,\theta)q_\pi(s,a)s∈S∑η(s)a∈A∑∇θπ(a∣s,θ)qπ(s,a) 中,得到:
∑s∈Sη(s)∑a∈Aπ(a∣s,θ)∇θlnπ(a∣s,θ)qπ(s,a)\sum_{s\in\mathcal{S}} \eta(s) \sum_{a\in\mathcal{A}} \pi(a|s,\theta) \nabla_\theta \ln \pi(a|s,\theta)q_\pi(s,a)s∈S∑η(s)a∈A∑π(a∣s,θ)∇θlnπ(a∣s,θ)qπ(s,a) - 根据数学期望的定义,对于离散随机变量 XXX 和概率分布 p(x)p(x)p(x),有 E[X]=∑xp(x)X(x)\mathbb{E}[X]=\sum_{x} p(x)X(x)E[X]=∑xp(x)X(x)。
- 在这里,状态 SSS 按照分布 η\etaη 采样,动作 AAA 按照策略 π(A∣S,θ)\pi(A|S,\theta)π(A∣S,θ) 从状态 SSS 中采样,所以:
∑s∈Sη(s)∑a∈Aπ(a∣s,θ)∇θlnπ(a∣s,θ)qπ(s,a)=E[∇θlnπ(A∣S,θ)qπ(S,A)]\sum_{s\in\mathcal{S}} \eta(s) \sum_{a\in\mathcal{A}} \pi(a|s,\theta) \nabla_\theta \ln \pi(a|s,\theta)q_\pi(s,a)=\mathbb{E}[\nabla_\theta \ln \pi(A|S,\theta)q_\pi(S,A)]s∈S∑η(s)a∈A∑π(a∣s,θ)∇θlnπ(a∣s,θ)qπ(s,a)=E[∇θlnπ(A∣S,θ)qπ(S,A)]
- 在这里,状态 SSS 按照分布 η\etaη 采样,动作 AAA 按照策略 π(A∣S,θ)\pi(A|S,\theta)π(A∣S,θ) 从状态 SSS 中采样,所以:
- 将 ∇θπ(a∣s,θ)=π(a∣s,θ)∇θlnπ(a∣s,θ)\nabla_\theta\pi(a|s,\theta) = \pi(a|s,\theta) \nabla_\theta \ln \pi(a|s,\theta)∇θπ(a∣s,θ)=π(a∣s,θ)∇θlnπ(a∣s,θ) 代入 ∑s∈Sη(s)∑a∈A∇θπ(a∣s,θ)qπ(s,a)\sum_{s\in\mathcal{S}} \eta(s) \sum_{a\in\mathcal{A}} \nabla_\theta\pi(a|s,\theta)q_\pi(s,a)s∈S∑η(s)a∈A∑∇θπ(a∣s,θ)qπ(s,a) 中,得到:
- 利用对数求导法则
为什么这个表达式有用?
- 因为我们可以使用样本来近似梯度!即采样得到∇θJ≈∇θlnπ(a∣s,θ)qπ(s,a)\nabla_\theta J \approx \nabla_\theta \ln \pi(a|s,\theta)q_\pi(s,a)∇θJ≈∇θlnπ(a∣s,θ)qπ(s,a)
注意:由于我们需要计算 lnπ(a∣s,θ)\ln \pi(a|s,\theta)lnπ(a∣s,θ),我们必须确保对于所有的 s,a,θs,a,\thetas,a,θ
π(a∣s,θ)>0\pi(a|s,\theta) > 0π(a∣s,θ)>0
-
这可以通过使用 softmax 函数来实现,该函数可以将向量中的元素从 (−∞,+∞)(-\infty,+\infty)(−∞,+∞) 归一化到 (0,1)(0,1)(0,1)。
-
例如,对于任何向量 x=[x1,…,xn]Tx = [x_1,\ldots,x_n]^Tx=[x1,…,xn]T,
zi=exi∑j=1nexjz_i = \frac{e^{x_i}}{\sum_{j=1}^n e^{x_j}}zi=∑j=1nexjexi
其中 zi∈(0,1)z_i \in (0,1)zi∈(0,1) 且 ∑i=1nzi=1\sum_{i=1}^n z_i = 1∑i=1nzi=1。 -
然后,策略函数具有以下形式:
π(a∣s,θ)=eh(s,a,θ)∑a′∈Aeh(s,a′,θ)\pi(a|s,\theta) = \frac{e^{h(s,a,\theta)}}{\sum_{a'\in\mathcal{A}}e^{h(s,a',\theta)}}π(a∣s,θ)=∑a′∈Aeh(s,a′,θ)eh(s,a,θ)
其中 h(s,a,θ)h(s,a,\theta)h(s,a,θ) 是另一个函数。 -
这种基于softmax函数的形式可以通过神经网络实现,其输入是 sss 且参数是 θ\thetaθ。该网络有 ∣A∣|\mathcal{A}|∣A∣ 个输出,每个输出对应一个动作 aaa 的 π(a∣s,θ)\pi(a|s,\theta)π(a∣s,θ)。输出层的激活函数应为softmax。
-
由于对所有 aaa 都有 π(a∣s,θ)>0\pi(a|s,\theta) > 0π(a∣s,θ)>0,参数化的策略是随机的,因此具有探索性。
-
也存在确定性策略梯度(DPG)方法。
随机梯度上升(强化学习)
现在,我们准备介绍第一个策略梯度算法来寻找最优策略!
-
梯度上升算法最大化 J(θ)J(\theta)J(θ) 是:
θt+1=θt+α∇θJ(θ)=θt+αE[∇θlnπ(A∣S,θt)qπ(S,A)] \begin{align*} \theta_{t+1} &= \theta_t + \alpha \nabla_\theta J(\theta) \\ &= \theta_t + \alpha \mathbb{E} \left[ \nabla_\theta \ln \pi(A|S, \theta_t) q_\pi(S, A) \right] \end{align*} θt+1=θt+α∇θJ(θ)=θt+αE[∇θlnπ(A∣S,θt)qπ(S,A)] -
真正的梯度可以被随机梯度替代:
θt+1=θt+α∇θlnπ(at∣st,θt)qπ(st,at) \theta_{t+1} = \theta_t + \alpha \nabla_\theta \ln \pi(a_t|s_t, \theta_t) q_\pi(s_t, a_t) θt+1=θt+α∇θlnπ(at∣st,θt)qπ(st,at) -
此外,由于 qπq_\piqπ 是未知的,可以进行近似:
θt+1=θt+α∇θlnπ(at∣st,θt)qt(st,at) \theta_{t+1} = \theta_t + \alpha \nabla_\theta \ln \pi(a_t|s_t, \theta_t) q_t(s_t, a_t) θt+1=θt+α∇θlnπ(at∣st,θt)qt(st,at)
有不同的方法来近似 qπ(st,at)q_\pi(s_t, a_t)qπ(st,at)
- 在本文中,使用基于蒙特卡洛的方法,REINFORCE
remark1:如何进行采样?
ES∼d,A∼π[∇θlnπ(A∣S,θt)qπ(S,A)]⟶∇θlnπ(a∣s,θt)qπ(s,a)
\mathbb{E}_{S \sim d, A \sim \pi} \left[ \nabla_\theta \ln \pi(A|S, \theta_t) q_\pi(S, A) \right] \longrightarrow \nabla_\theta \ln \pi(a|s, \theta_t) q_\pi(s, a)
ES∼d,A∼π[∇θlnπ(A∣S,θt)qπ(S,A)]⟶∇θlnπ(a∣s,θt)qπ(s,a)
- 如何采样 SSS?
- S∼dS \sim dS∼d,其中分布 ddd 是 π\piπ 下的长期行为。
- 如何采样 AAA?
- A∼π(A∣S,θ)A \sim \pi(A|S, \theta)A∼π(A∣S,θ)。因此,ata_tat 应该在 sts_tst 下按照 π(θt)\pi(\theta_t)π(θt) 进行采样。
- 因此,策略梯度方法是on-policy。
remark2:如何解释这个算法?
由于
∇θlnπ(at∣st,θt)=∇θπ(at∣st,θt)π(at∣st,θt)
\nabla_\theta \ln \pi(a_t|s_t, \theta_t) = \frac{\nabla_\theta \pi(a_t|s_t, \theta_t)}{\pi(a_t|s_t, \theta_t)}
∇θlnπ(at∣st,θt)=π(at∣st,θt)∇θπ(at∣st,θt)
算法可以重写为
θt+1=θt+α∇θlnπ(at∣st,θt)qt(st,at)=θt+α(qt(st,at)π(at∣st,θt))∇θπ(at∣st,θt)
\begin{align*}
\theta_{t+1} &= \theta_t + \alpha \nabla_\theta \ln \pi(a_t|s_t, \theta_t) q_t(s_t, a_t) \\
&= \theta_t + \alpha \left( \frac{q_t(s_t, a_t)}{\pi(a_t|s_t, \theta_t)} \right) \nabla_\theta \pi(a_t|s_t, \theta_t)
\end{align*}
θt+1=θt+α∇θlnπ(at∣st,θt)qt(st,at)=θt+α(π(at∣st,θt)qt(st,at))∇θπ(at∣st,θt)
令βt=qt(st,at)π(at∣st,θt)\beta_t=\frac{q_t(s_t, a_t)}{\pi(a_t|s_t, \theta_t)}βt=π(at∣st,θt)qt(st,at) 则得到算法的重要表达式:
θt+1=θt+αβt∇θπ(at∣st,θt)
\theta_{t+1} = \theta_t + \alpha \beta_t \nabla_\theta \pi(a_t|s_t, \theta_t)
θt+1=θt+αβt∇θπ(at∣st,θt)
这是一个用于最大化 π(at∣st,θ)\pi(a_t|s_t, \theta)π(at∣st,θ) 的梯度上升算法:
θt+1=θt+αβt∇θπ(at∣st,θt)
\theta_{t+1} = \theta_t + \alpha \beta_t \nabla_\theta \pi(a_t|s_t, \theta_t)
θt+1=θt+αβt∇θπ(at∣st,θt)
当 αβt\alpha \beta_tαβt 充分小时
- 如果 βt>0\beta_t > 0βt>0,选择 (st,at)(s_t, a_t)(st,at) 的概率会增加:π(at∣st,θt+1)>π(at∣st,θt)\pi(a_t|s_t, \theta_{t+1}) > \pi(a_t|s_t, \theta_t)π(at∣st,θt+1)>π(at∣st,θt),βt\beta_tβt 越大,增强效果越强。
- 当 βt>0\beta_t>0βt>0 且学习率 α>0\alpha>0α>0 时,αβt\alpha\beta_tαβt 是一个正数。
- 因为 αβt\alpha\beta_tαβt 为正,所以更新后的参数 θt+1\theta_{t + 1}θt+1 相对于 θt\theta_tθt 的变化方向与 ∇θπ(at∣st,θt)\nabla_\theta\pi(a_t|s_t, \theta_t)∇θπ(at∣st,θt) 的方向是一致的,即参数 θ\thetaθ 沿着 ∇θπ(at∣st,θt)\nabla_\theta\pi(a_t|s_t, \theta_t)∇θπ(at∣st,θt) 的方向进行更新。
- 为什么梯度 ∇θπ(at∣st,θt)\nabla_\theta\pi(a_t|s_t, \theta_t)∇θπ(at∣st,θt) 表示函数 π(at∣st,θ)\pi(a_t|s_t, \theta)π(at∣st,θ) 在 θt\theta_tθt 处增长最快的方向
- 从数学角度来看,对于一个多元函数 f(θ)f(\theta)f(θ)(这里 f(θ)=π(at∣st,θ)f(\theta)=\pi(a_t|s_t, \theta)f(θ)=π(at∣st,θ)),在某一点 θt\theta_tθt 处的梯度 ∇f(θt)\nabla f(\theta_t)∇f(θt) 是一个向量。
- 设 θ\thetaθ 是一个 nnn 维向量,θ=[θ1,θ2,⋯ ,θn]T\theta = [\theta_1,\theta_2,\cdots,\theta_n]^Tθ=[θ1,θ2,⋯,θn]T,函数 f(θ)f(\theta)f(θ) 在 θt\theta_tθt 处的梯度 ∇f(θt)=[∂f∂θ1,∂f∂θ2,⋯ ,∂f∂θn]T∣θ=θt\nabla f(\theta_t)=\left[\frac{\partial f}{\partial \theta_1},\frac{\partial f}{\partial \theta_2},\cdots,\frac{\partial f}{\partial \theta_n}\right]^T|_{\theta = \theta_t}∇f(θt)=[∂θ1∂f,∂θ2∂f,⋯,∂θn∂f]T∣θ=θt。
- 考虑函数 f(θ)f(\theta)f(θ) 在 θt\theta_tθt 附近的一个小的变化 Δθ\Delta\thetaΔθ,根据泰勒展开式,f(θt+Δθ)≈f(θt)+∇f(θt)TΔθf(\theta_t+\Delta\theta)\approx f(\theta_t)+\nabla f(\theta_t)^T\Delta\thetaf(θt+Δθ)≈f(θt)+∇f(θt)TΔθ。这里 ∇f(θt)TΔθ=∥∇f(θt)∥∥Δθ∥cosθ\nabla f(\theta_t)^T\Delta\theta=\|\nabla f(\theta_t)\|\|\Delta\theta\|\cos\theta∇f(θt)TΔθ=∥∇f(θt)∥∥Δθ∥cosθ,其中 θ\thetaθ 是 ∇f(θt)\nabla f(\theta_t)∇f(θt) 与 Δθ\Delta\thetaΔθ 之间的夹角。
- 当 cosθ=1\cos\theta = 1cosθ=1 时,也就是 Δθ\Delta\thetaΔθ 与 ∇f(θt)\nabla f(\theta_t)∇f(θt) 方向相同时,∇f(θt)TΔθ\nabla f(\theta_t)^T\Delta\theta∇f(θt)TΔθ 取得最大值,此时 f(θt+Δθ)−f(θt)f(\theta_t+\Delta\theta)-f(\theta_t)f(θt+Δθ)−f(θt) 的值最大,意味着函数 f(θ)f(\theta)f(θ) 在 θt\theta_tθt 处沿着 ∇f(θt)\nabla f(\theta_t)∇f(θt) 的方向变化率最大,即增长最快。所以梯度 ∇θπ(at∣st,θt)\nabla_\theta\pi(a_t|s_t, \theta_t)∇θπ(at∣st,θt) 表示函数 π(at∣st,θ)\pi(a_t|s_t, \theta)π(at∣st,θ) 在 θt\theta_tθt 处增长最快的方向。
- 为什么 π(at∣st,θt+1)>π(at∣st,θt)\pi(a_t|s_t, \theta_{t+1}) > \pi(a_t|s_t, \theta_t)π(at∣st,θt+1)>π(at∣st,θt)
- 由于 θt+1=θt+αβt∇θπ(at∣st,θt)\theta_{t + 1}=\theta_t+\alpha\beta_t\nabla_\theta\pi(a_t|s_t, \theta_t)θt+1=θt+αβt∇θπ(at∣st,θt),且 α>0\alpha>0α>0,βt>0\beta_t>0βt>0。
- 当 αβt\alpha\beta_tαβt 充分小时,我们可以利用函数的一阶泰勒展开式来近似 π(at∣st,θt+1)\pi(a_t|s_t, \theta_{t+1})π(at∣st,θt+1)。设 f(θ)=π(at∣st,θ)f(\theta)=\pi(a_t|s_t, \theta)f(θ)=π(at∣st,θ),则 f(θt+1)≈f(θt)+∇f(θt)T(θt+1−θt)f(\theta_{t + 1})\approx f(\theta_t)+\nabla f(\theta_t)^T(\theta_{t + 1}-\theta_t)f(θt+1)≈f(θt)+∇f(θt)T(θt+1−θt)。
- 将 θt+1−θt=αβt∇θπ(at∣st,θt)\theta_{t + 1}-\theta_t=\alpha\beta_t\nabla_\theta\pi(a_t|s_t, \theta_t)θt+1−θt=αβt∇θπ(at∣st,θt) 代入上式,得到 π(at∣st,θt+1)≈π(at∣st,θt)+αβt∥∇θπ(at∣st,θt)∥2\pi(a_t|s_t, \theta_{t+1})\approx\pi(a_t|s_t, \theta_t)+\alpha\beta_t\|\nabla_\theta\pi(a_t|s_t, \theta_t)\|^2π(at∣st,θt+1)≈π(at∣st,θt)+αβt∥∇θπ(at∣st,θt)∥2。
- 因为 α>0\alpha>0α>0,βt>0\beta_t>0βt>0,∥∇θπ(at∣st,θt)∥2>0\|\nabla_\theta\pi(a_t|s_t, \theta_t)\|^2>0∥∇θπ(at∣st,θt)∥2>0(除非 ∇θπ(at∣st,θt)\nabla_\theta\pi(a_t|s_t, \theta_t)∇θπ(at∣st,θt) 是零向量,但在一般情况下,梯度不为零向量),所以 π(at∣st,θt+1)≈π(at∣st,θt)+αβt∥∇θπ(at∣st,θt)∥2>π(at∣st,θt)\pi(a_t|s_t, \theta_{t+1})\approx\pi(a_t|s_t, \theta_t)+\alpha\beta_t\|\nabla_\theta\pi(a_t|s_t, \theta_t)\|^2>\pi(a_t|s_t, \theta_t)π(at∣st,θt+1)≈π(at∣st,θt)+αβt∥∇θπ(at∣st,θt)∥2>π(at∣st,θt)。
- 也就是说,当 αβt\alpha\beta_tαβt 充分小时,参数沿着梯度方向进行小幅度更新后,函数 π(at∣st,θ)\pi(a_t|s_t, \theta)π(at∣st,θ) 的值会增大,即选择 (st,at)(s_t, a_t)(st,at) 的概率会增加。
- 如果 βt<0\beta_t < 0βt<0,那么 π(at∣st,θt+1)<π(at∣st,θt)\pi(a_t|s_t, \theta_{t+1}) < \pi(a_t|s_t, \theta_t)π(at∣st,θt+1)<π(at∣st,θt)。
- 这里反向考虑即可,把π(at∣st,θt+1)\pi(a_t|s_t, \theta_{t+1})π(at∣st,θt+1)当作上面推导过程中的π(at∣st,θt)\pi(a_t|s_t, \theta_t)π(at∣st,θt),把π(at∣st,θt)\pi(a_t|s_t, \theta_t)π(at∣st,θt)当作π(at∣st,θt+1)\pi(a_t|s_t, \theta_{t+1})π(at∣st,θt+1)
考虑系数 βt\beta_tβt,
θt+1=θt+α(qt(st,at)π(at∣st,θt))∇θπ(at∣st,θt)
\theta_{t+1} = \theta_t + \alpha \left( \frac{q_t(s_t, a_t)}{\pi(a_t|s_t, \theta_t)} \right) \nabla_\theta \pi(a_t|s_t, \theta_t)
θt+1=θt+α(π(at∣st,θt)qt(st,at))∇θπ(at∣st,θt)
系数 βt\beta_tβt 可以很好地平衡探索和开发。
-
首先,βt\beta_tβt 与 qt(st,at)q_t(s_t, a_t)qt(st,at) 成正比。
-
如果 qt(st,at)q_t(s_t, a_t)qt(st,at) 很大,那么 βt\beta_tβt 很大。
-
因此,算法倾向于增强具有更大值的动作。
-
其次,βt\beta_tβt 与 π(at∣st,θt)\pi(a_t|s_t, \theta_t)π(at∣st,θt) 成反比。
-
如果 π(at∣st,θt)\pi(a_t|s_t, \theta_t)π(at∣st,θt) 很小,那么 βt\beta_tβt 很大。
-
因此,算法倾向于探索具有较低概率的动作。
回忆一下
θt+1=θt+α∇θlnπ(at∣st,θt)qπ(st,at) \theta_{t+1} = \theta_t + \alpha \nabla_\theta \ln \pi(a_t|s_t, \theta_t) q_\pi(s_t, a_t) θt+1=θt+α∇θlnπ(at∣st,θt)qπ(st,at)
被替换为
θt+1=θt+α∇θlnπ(at∣st,θt)qt(st,at) \theta_{t+1} = \theta_t + \alpha \nabla_\theta \ln \pi(a_t|s_t, \theta_t) q_t(s_t, a_t) θt+1=θt+α∇θlnπ(at∣st,θt)qt(st,at)
其中 qt(st,at)q_t(s_t, a_t)qt(st,at) 是 qπ(st,at)q_\pi(s_t, a_t)qπ(st,at) 的近似。
- 如果 qπ(st,at)q_\pi(s_t, a_t)qπ(st,at) 通过蒙特卡洛估计进行近似,则该算法具有特定名称,REINFORCE。
- 蒙特卡洛估计:基于大数定律。大数定律表明,当样本数量足够大时,样本的均值会趋近于总体的均值。蒙特卡洛估计利用这一原理,通过大量的随机样本对目标进行估计。
- 例如:通过大量丢硬币的操作并记录硬币正反面出现的次数最终估计硬币正反面的概率
- REINFORCE 是最早和最简单的策略梯度算法之一。
- 许多其他策略梯度算法,例如actor-critic方法,可以通过扩展REINFORCE获得。
伪代码:通过蒙特卡洛进行策略梯度(REINFORCE)
- 初始化:一个参数化的函数 π(a∣s,θ)\pi(a|s, \theta)π(a∣s,θ),γ∈(0,1)\gamma \in (0, 1)γ∈(0,1),且 α>0\alpha > 0α>0。
- 目标:寻找最大化 J(θ)J(\theta)J(θ) 的最优策略。
- 对于第 kkk 次迭代,执行
- 选择 s0s_0s0 并生成一个遵循 π(θk)\pi(\theta_k)π(θk) 的episode。假设episode为 {s0,a0,r1,…,sT−1,aT−1,rT}\{s_0, a_0, r_1, \ldots, s_{T-1}, a_{T-1}, r_T\}{s0,a0,r1,…,sT−1,aT−1,rT}。
- 对于 t=0,1,…,T−1t = 0, 1, \ldots, T - 1t=0,1,…,T−1,执行
- 值更新:qt(st,at)=∑k=t+1Tγk−t−1rkq_t(s_t, a_t) = \sum_{k=t+1}^T \gamma^{k-t-1} r_kqt(st,at)=∑k=t+1Tγk−t−1rk
- 策略更新:θt+1=θt+α∇θlnπ(at∣st,θt)qt(st,at)\theta_{t+1} = \theta_t + \alpha \nabla_\theta \ln \pi(a_t|s_t, \theta_t) q_t(s_t, a_t)θt+1=θt+α∇θlnπ(at∣st,θt)qt(st,at)
- θk=θT\theta_k = \theta_Tθk=θT