强化学习-5 策略梯度、Actor-Critic 算法

文章目录

  • 1 基于价值( value-based \text{value-based} value-based )算法的缺点
  • 2 策略梯度算法
    • 2.1 解释
      • 2.1.1 分母和分子相消
      • 2.1.2 对数函数的导数
      • 2.1.3 组合公式
      • 2.1.4 总结
  • 3 REINFORCE算法
  • 4 策略梯度推导进阶
    • 4.1 平稳分布
    • 4.2 基于平稳分布的策略梯度推导
  • 5 策略函数的设计
    • 5.1 离散动作
    • 5.2 连续动作
  • 6 附
    • 6.1 式9.12各部分解释
      • 6.1.1 等式解释
        • 6.1.1.1 左侧等式
        • 6.1.1.2 右侧等式
      • 6.1.2 直观理解
      • 6.1.3 应用
    • 6.2 式9.13解释
      • 6.2.1 各部分解释
      • 6.2.2 逐步推导
      • 6.2.3 直观理解
      • 6.2.4 应用
  • 7 策略梯度算法的缺点
  • 8 Q Actor - Critic算法
  • 9 A2C 与 A3C 算法
  • 10 广义优势估计


基于策略梯度( policy-based \text{policy-based} policy-based )的算法。这类算法直接对策略本身进行近似优化。在这种情况下,我们可以将策略描述成一个带有参数 θ \theta θ的连续函数,该函数将某个状态作为输入,输出的不再是某个确定性( deterministic \text{deterministic} deterministic )的离散动作,而是对应的动作概率分布,通常用 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(as) 表示,称作随机性( stochastic \text{stochastic} stochastic )策略。

1 基于价值( value-based \text{value-based} value-based )算法的缺点

基于价值(DQN)蒙特卡洛策略梯度Actor-Critic
优点效果不错,有较好的收敛性适配连续动作空间;适配随机策略兼容两者的优点
缺点无法表示连续动作采样效率低
高方差。通过采样的方式估计价值函数,导致方差高,影响收敛性。高方差。估计梯度时蒙特卡洛算法引起的。
探索与利用的平衡问题。确定性策略和随机策略的平衡。收敛性差。容易陷入局部最优解。
难以处理高维离散动作空间

2 策略梯度算法

策略梯度算法的优化目标与基于价值的算法是一样的,都是累积的价值期望 V ∗ ( s ) V^{*}(s) V(s) 。通常用 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(as) 来表示策略,即在状态 s s s 下采取动作 a a a 的概率分布 p ( a ∣ s ) p(a|s) p(as),其中 θ \theta θ 是我们要去求出来的模型参数。

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θ(τ)[tr(st,at)](9.3)
我们的目标就是最大化策略的价值期望 J ( π θ ) J(\pi_{\theta}) J(πθ),因此 J ( π θ ) J(\pi_{\theta}) J(πθ) 又称作目标函数。有了目标函数之后,只要能求出梯度,就可以使用万能的梯度上升或下降的方法来求解对应的最优参数 θ ∗ \theta^* θ了,这里由于目标是最大化目标函数,因此我们使用梯度上升的方法。那么问题来了,我们发现策略梯度的目标函数过于复杂,这种情况下要怎么求梯度呢?这就是策略梯度算法的核心问题。

这个公式涉及到概率密度函数的梯度和对数梯度的转换,广泛应用于强化学习和其他概率模型中。公式如下:

∇ θ P θ ( τ ) = P θ ( τ ) ∇ θ P θ ( τ ) P θ ( τ ) = P θ ( τ ) ∇ θ log ⁡ P θ ( τ ) \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θ(τ)

2.1 解释

为了理解为什么这些表达式相等,我们需要理解以下几个步骤:

2.1.1 分母和分子相消

首先,我们来看中间的部分:

∇ θ P θ ( τ ) P θ ( τ ) \frac{\nabla_\theta P_\theta(\tau)}{P_\theta(\tau)} Pθ(τ)θPθ(τ)

这是一个简单的比值,其中分子是 P θ ( τ ) P_\theta(\tau) Pθ(τ) 对参数 θ \theta θ 的梯度,而分母是 P θ ( τ ) P_\theta(\tau) Pθ(τ) 自身。这相当于用 P θ ( τ ) P_\theta(\tau) Pθ(τ) 归一化其梯度。

2.1.2 对数函数的导数

接下来,我们引入对数函数。对数函数有一个重要的性质:

∇ θ log ⁡ P θ ( τ ) = ∇ θ P θ ( τ ) P θ ( τ ) \nabla_\theta \log P_\theta(\tau) = \frac{\nabla_\theta P_\theta(\tau)}{P_\theta(\tau)} θlogPθ(τ)=Pθ(τ)θPθ(τ)

这个性质来源于对数的导数公式:

如果 y = log ⁡ f ( x ) y = \log f(x) y=logf(x),那么 ∇ x y = ∇ x f ( x ) f ( x ) \nabla_x y = \frac{\nabla_x f(x)}{f(x)} xy=f(x)xf(x)

应用在这里,设 f ( θ ) = P θ ( τ ) f(\theta) = P_\theta(\tau) f(θ)=Pθ(τ),则:

∇ θ log ⁡ P θ ( τ ) = ∇ θ P θ ( τ ) P θ ( τ ) \nabla_\theta \log P_\theta(\tau) = \frac{\nabla_\theta P_\theta(\tau)}{P_\theta(\tau)} θlogPθ(τ)=Pθ(τ)θPθ(τ)

2.1.3 组合公式

现在我们将这个性质带回到原公式中:

P θ ( τ ) ∇ θ P θ ( τ ) P θ ( τ ) = P θ ( τ ) ∇ θ log ⁡ P θ ( τ ) 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θ(τ)θlogPθ(τ)

我们看到分母和分子 P θ ( τ ) P_\theta(\tau) Pθ(τ) 互相抵消,剩下的就是对数梯度:

∇ θ P θ ( τ ) = P θ ( τ ) ∇ θ log ⁡ P θ ( τ ) \nabla_\theta P_\theta(\tau) = P_\theta(\tau) \nabla_\theta \log P_\theta(\tau) θPθ(τ)=Pθ(τ)θlogPθ(τ)

2.1.4 总结

这个等式的关键在于对数函数的导数性质,即:

∇ θ log ⁡ P θ ( τ ) = ∇ θ P θ ( τ ) P θ ( τ ) \nabla_\theta \log P_\theta(\tau) = \frac{\nabla_\theta P_\theta(\tau)}{P_\theta(\tau)} θlogPθ(τ)=Pθ(τ)θPθ(τ)

这使得我们能够将梯度从概率密度函数的形式转换为对数概率密度函数的形式,从而简化计算并利用对数的性质进行分析和优化。这种转换在很多概率模型和强化学习算法中起到重要作用,例如策略梯度方法。

3 REINFORCE算法

利用蒙特卡洛的方法来近似求解了,即我们可以不必采样所有的轨迹,而是采样一部分且数量足够多的轨迹,然后利用这些轨迹的平均值来近似求解目标函数的梯度。这种方法就是蒙特卡洛策略梯度算法,也称作 REINFORCE \text{REINFORCE} REINFORCE 算法。

4 策略梯度推导进阶

问题:
解决方案:
更泛化更通用的策略梯度公式。

4.1 平稳分布

概念
本质:熵增原理的一种体现

4.2 基于平稳分布的策略梯度推导

回顾前面小节中计算轨迹概率的公式 P θ ( τ ) P_{\theta}(\tau) Pθ(τ),可以发现如果轨迹 τ \tau τ的初始状态是 s 0 s_0 s0并且终止状态是 s s s的话,轨迹概率公式 P θ ( τ ) P_{\theta}(\tau) Pθ(τ)跟平稳分布的 d π ( s ) d^\pi(s) dπ(s)是等效的,当然前提是该条轨迹必须“无限长”,即 t → ∞ t \rightarrow \infty t。但是平稳分布与轨迹概率公式相比,它的好处就是只涉及一个定量即初始状态 s 0 s_0 s0和一个变量 s s s。对于每个状态 s s s,我们用 V π ( s ) V^{\pi}(s) Vπ(s)表示策略 π \pi π下对应的价值。读者们现在可以往前回顾,为什么笔者说策略梯度算法跟基于价值函数的算法都是在计算累积状态的价值期望了,此时策略梯度算法目标函数就可以表示为式 ( 9.12 ) \text(9.12) (9.12)
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(θ)=sSdπ(s)Vπ(s)=sSdπ(s)aAπθ(as)Qπ(s,a)(9.12)

这个公式描述了强化学习中策略的目标函数 J ( θ ) J(\theta) J(θ),其作用是评估给定策略 π \pi π 的期望回报。我们通过求和得到在所有状态下的期望回报,并进一步通过策略 π \pi π 在每个状态下的动作来分解回报。以下是对该公式的详细解释:

同样可以利用对数微分技巧求得对应的梯度,如式 ( 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(θ)sSdπ(s)aAQπ(s,a)θπθ(as)=sSdπ(s)aAπθ(as)Qπ(s,a)πθ(as)θπθ(as)=Eπθ[Qπ(s,a)θlogπθ(as)](9.13)

这个公式描述了如何计算策略梯度,即策略参数 θ \theta θ 的目标函数 J ( θ ) J(\theta) J(θ) 的梯度。这个过程在策略梯度方法中非常重要,用于更新策略参数以最大化期望回报。我们将结合上个问题的公式进行解释。

到这里我们会发现, REINFORCE \text{REINFORCE} REINFORCE 算法只是利用蒙特卡洛的方式将公式中的 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 替换成了 G ( τ ) G(\tau) G(τ)。实际上读者们在学习了结合深度学习的 DQN 算法之后, Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 也是可以用神经网络模型来近似的,只是略有不同的是这里的 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 相比于 DQN \text{DQN} DQN 算法中的 Q Q Q 函数多了一个策略 π \pi π 作为输入,并且输出的不再是所有动作对应的 Q Q Q 值,而是针对当前状态和动作 ( s t , a t ) (s_t,a_t) (st,at) 的单个值,因此更多的像是在评判策略的价值而不是状态的价值,而用来近似 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 的模型我们一般称作 Critic \text{Critic} Critic
只包含策略梯度的一部分 ∇ θ log ⁡ π θ ( a ∣ s ) \nabla_\theta \log \pi_\theta(a \mid s) θlogπθ(as) 的模型我们一般称作 Actor \text{Actor} Actor 。这样一来已经不是单纯的策略梯度算法了,而是同时结合了基于价值和策略梯度的算法,我们一般把这类算法称之为 Actor-Critic \text{Actor-Critic} Actor-Critic 算法。

5 策略函数的设计

5.1 离散动作

5.2 连续动作

6 附

6.1 式9.12各部分解释

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(θ)=sSdπ(s)Vπ(s)=sSdπ(s)aAπθ(as)Qπ(s,a)(9.12)

  1. 目标函数 J ( θ ) J(\theta) J(θ)

    • J ( θ ) J(\theta) J(θ) 是策略 π θ \pi_\theta πθ 的性能度量,表示在策略参数 θ \theta θ 下的期望回报。
  2. 状态分布 d π ( s ) d^\pi(s) dπ(s)

    • d π ( s ) d^\pi(s) dπ(s) 是在策略 π \pi π 下状态 s s s 的稳态分布。它表示在无限时间步内,系统处于状态 s s s 的概率。
    • 通常通过马尔可夫链的状态转移概率计算得到。
  3. 状态值函数 V π ( s ) V^\pi(s) Vπ(s)

    • V π ( s ) V^\pi(s) Vπ(s) 是在策略 π \pi π 下,从状态 s s s 开始的期望回报。
    • 定义为从状态 s s s 开始,跟随策略 π \pi π 所能获得的期望回报。
  4. 动作值函数 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a)

    • Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 是在策略 π \pi π 下,从状态 s s s 采取动作 a a a 开始的期望回报。
    • 定义为在状态 s s s 采取动作 a a a,然后按照策略 π \pi π 继续行动所能获得的期望回报。
  5. 策略 π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ(as)

    • π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ(as) 是策略 π \pi π 在状态 s s s 选择动作 a a a 的概率。
    • 它依赖于策略的参数 θ \theta θ

6.1.1 等式解释

6.1.1.1 左侧等式

J ( θ ) = ∑ s ∈ S d π ( s ) V π ( s ) J(\theta) = \sum_{s \in S} d^\pi(s) V^\pi(s) J(θ)=sSdπ(s)Vπ(s)

  • 表示在所有状态 s s s 的稳态分布 d π ( s ) d^\pi(s) dπ(s) 下,状态值函数 V π ( s ) V^\pi(s) Vπ(s) 的加权和。
  • 直观上,这表示在策略 π \pi π 下系统处于不同状态时的期望回报的总和。
6.1.1.2 右侧等式

J ( θ ) = ∑ s ∈ S d π ( s ) ∑ a ∈ A π θ ( a ∣ s ) Q π ( s , a ) J(\theta) = \sum_{s \in S} d^\pi(s) \sum_{a \in A} \pi_\theta(a \mid s) Q^\pi(s, a) J(θ)=sSdπ(s)aAπθ(as)Qπ(s,a)

  • 将状态值函数 V π ( s ) V^\pi(s) Vπ(s) 展开为动作值函数 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 和策略 π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ(as) 的加权和。
  • 这一步利用了以下关系:
    V π ( s ) = ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) V^\pi(s) = \sum_{a \in A} \pi(a \mid s) Q^\pi(s, a) Vπ(s)=aAπ(as)Qπ(s,a)
    即在状态 s s s 下,状态值函数等于在该状态下所有可能动作的值函数的期望。

6.1.2 直观理解

  • 第一部分:我们在状态 s s s 的稳态分布 d π ( s ) d^\pi(s) dπ(s) 下,计算所有状态的期望回报 V π ( s ) V^\pi(s) Vπ(s)
  • 第二部分:通过引入策略 π θ \pi_\theta πθ,将期望回报展开为每个状态下的所有可能动作的值函数的期望。
  • 这种展开形式有助于进一步分析和优化策略,因为我们可以直接看到每个状态和动作对总回报的贡献。

6.1.3 应用

这个公式在强化学习中非常重要,尤其在策略梯度方法中,通过优化 J ( θ ) J(\theta) J(θ) 来改进策略参数 θ \theta θ。策略梯度算法通过计算 J ( θ ) J(\theta) J(θ) θ \theta θ 的梯度,调整策略参数以最大化期望回报。

总结来说,这个公式提供了一种计算和优化策略性能的方法,通过状态分布、状态值函数和动作值函数的结合,反映了策略在不同状态和动作下的期望回报。

6.2 式9.13解释

6.2.1 各部分解释

  1. 目标函数的梯度 ∇ θ J ( θ ) \nabla_\theta J(\theta) θJ(θ)

    • 目标是计算策略参数 θ \theta θ 的梯度,以便在策略优化中使用。
  2. 状态分布 d π ( s ) d^\pi(s) dπ(s)

    • d π ( s ) d^\pi(s) dπ(s) 是在策略 π \pi π 下,系统处于状态 s s s 的稳态分布。
  3. 动作值函数 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a)

    • Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 是在策略 π \pi π 下,从状态 s s s 采取动作 a a a 开始的期望回报。
  4. 策略 π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ(as)

    • π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ(as) 是策略 π \pi π 在状态 s s s 选择动作 a a a 的概率。

6.2.2 逐步推导

  1. 初始形式

    ∇ θ J ( θ ) ∝ ∑ s ∈ S d π ( s ) ∑ a ∈ A Q π ( s , a ) ∇ θ π θ ( a ∣ s ) \nabla_\theta J(\theta) \propto \sum_{s \in S} d^\pi(s) \sum_{a \in A} Q^\pi(s, a) \nabla_\theta \pi_\theta(a \mid s) θJ(θ)sSdπ(s)aAQπ(s,a)θπθ(as)

    这是目标函数梯度的初始形式,我们希望计算期望回报的梯度。

  2. 引入对数梯度技巧

    ∇ θ π θ ( a ∣ s ) = π θ ( a ∣ s ) ∇ θ π θ ( a ∣ s ) π θ ( a ∣ s ) = π θ ( a ∣ s ) ∇ θ log ⁡ π θ ( a ∣ s ) \nabla_\theta \pi_\theta(a \mid s) = \pi_\theta(a \mid s) \frac{\nabla_\theta \pi_\theta(a \mid s)}{\pi_\theta(a \mid s)} = \pi_\theta(a \mid s) \nabla_\theta \log \pi_\theta(a \mid s) θπθ(as)=πθ(as)πθ(as)θπθ(as)=πθ(as)θlogπθ(as)

    通过引入对数梯度技巧,将梯度转换为对数的形式。这一步利用了对数函数的导数性质。

  3. 替换并简化

    ∇ θ J ( θ ) ∝ ∑ s ∈ S d π ( s ) ∑ a ∈ A π θ ( a ∣ s ) Q π ( s , a ) ∇ θ log ⁡ π θ ( a ∣ s ) \nabla_\theta J(\theta) \propto \sum_{s \in S} d^\pi(s) \sum_{a \in A} \pi_\theta(a \mid s) Q^\pi(s, a) \nabla_\theta \log \pi_\theta(a \mid s) θJ(θ)sSdπ(s)aAπθ(as)Qπ(s,a)θlogπθ(as)

    这里,我们将原始的梯度形式替换为对数梯度形式,进一步简化表达式。

  4. 期望形式

    ∇ θ J ( θ ) = E π θ [ Q π ( s , a ) ∇ θ log ⁡ π θ ( a ∣ s ) ] \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} [Q^\pi(s, a) \nabla_\theta \log \pi_\theta(a \mid s)] θJ(θ)=Eπθ[Qπ(s,a)θlogπθ(as)]

    最后一步,将求和形式转换为期望形式,这样可以更直观地表示在策略 π θ \pi_\theta πθ 下的期望梯度。

6.2.3 直观理解

  • 梯度的期望:公式的最终形式表明,目标函数 J ( θ ) J(\theta) J(θ) 的梯度是动作值函数 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 与策略 π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ(as) 的对数梯度的乘积的期望值。
  • 策略改进:通过计算这个梯度,我们可以更新策略参数 θ \theta θ,使得期望回报 J ( θ ) J(\theta) J(θ) 最大化。

6.2.4 应用

这个公式在策略梯度方法(如REINFORCE算法)中至关重要,通过计算和使用这个梯度,我们可以不断改进策略,以在给定环境中获得更高的回报。

总结来说,该公式通过引入对数梯度技巧,将策略参数的目标函数梯度转换为一个更加易于计算和理解的形式,使得在强化学习中策略优化变得更加高效和可行。

7 策略梯度算法的缺点

结合了策略梯度和值函数的 Actor-Critic \text{Actor-Critic} Actor-Critic 算法则能同时兼顾两者的优点,并且甚至能缓解两种方法都很难解决的高方差问题。可能读者会奇怪为什么各自都有高方差的问题,结合了之后反而缓解了这个问题呢?我们再仔细分析一下两者高方差的根本来源:

  1. 策略梯度算法是因为直接对策略参数化,相当于既要利用策略去与环境交互采样,又要利用采样去估计策略梯度,
  2. 而基于价值的算法也是需要与环境交互采样来估计值函数的,因此也会有高方差的问题。
    而结合之后呢, Actor \text{Actor} Actor 部分还是负责估计策略梯度和采样,但 Critic \text{Critic} Critic 即原来的值函数部分就不需要采样而只负责估计值函数了,并且由于它估计的值函数指的是策略函数的值,相当于带来了一个更稳定的估计,来指导 Actor \text{Actor} Actor 的更新,反而能够缓解策略梯度估计带来的方差。
    当然尽管 Actor-Critic \text{Actor-Critic} Actor-Critic 算法能够缓解方差问题,但并不能彻底解决问题,在接下来的章节中我们也会展开介绍一些改进的方法。

8 Q Actor - Critic算法

Actor-Critic \text{Actor-Critic} Actor-Critic 算法的目标函数10.1
∇ θ J ( θ ) ∝ E π θ [ Q π ( s , a ) ∇ θ log ⁡ π θ ( a ∣ s ) ] (10.1) \tag{10.1} \begin{aligned} \nabla_\theta J(\theta) \propto \mathbb{E}_{\pi_{\theta}}\left[Q^\pi(s, a) \nabla_\theta \log \pi_\theta(a \mid s)\right] \end{aligned} θJ(θ)Eπθ[Qπ(s,a)θlogπθ(as)](10.1)

Q Actor-Critic \text{Q Actor-Critic} Q Actor-Critic 算法的目标函数10.2
∇ θ J ( θ ) ∝ E π θ [ Q ϕ ( s t , a t ) ∇ θ log ⁡ π θ ( a t ∣ s t ) ] (10.2) \tag{10.2} \begin{aligned} \nabla_\theta J(\theta) \propto \mathbb{E}_{\pi_{\theta}}\left[Q_{\phi}(s_t, a_t) \nabla_\theta \log \pi_\theta(a_t \mid s_t)\right] \end{aligned} θJ(θ)Eπθ[Qϕ(st,at)θlogπθ(atst)](10.2)

我们通常将 Actor 和 Critic 分别用两个模块来表示,即图中的 策略函数( Policy )和价值函数( Value Function )。Actor 与环境交互采样,然后将采样的轨迹输入 Critic 网络,Critic 网络估计出当前状态-动作对的价值,然后再将这个价值作为 Actor 网络的梯度更新的依据,这也是所有 Actor-Critic 算法的基本通用架构。
在这里插入图片描述

9 A2C 与 A3C 算法

10 广义优势估计

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HSP_13章 Python_魔术方法

文章目录 P132 魔术方法1. 魔术方法的基本介绍2. 常见的魔术方法2.1 __str__2.2 __eq__2.3 其它的几个魔术方法 P132 魔术方法 参考文档 1. 魔术方法的基本介绍 2. 常见的魔术方法 2.1 str # 请输出Monster[name,job,sal]对象的属性信息 #可以根据需要…

竞赛选题 交通目标检测-行人车辆检测流量计数 - 竞赛选题

文章目录 0 前言1\. 目标检测概况1.1 什么是目标检测?1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计…

OtterTune dead,参数调优还有DBdoctor

前言 数据库性能调优这块必不可少的环节是进行参数调优,数据库的参数很多,比如Oracle甚至有上千个参数,如何进行参数设置非常关键。参数调优需要基于业务的负载模型、硬件配置等多种因素,好的参数调优可以让数据库性能整体吞吐提…

植物大战僵尸杂交版,最新安装包(PC+手机+苹果)+ 修改器+高清工具

植物大战僵尸杂交版:全新游戏体验与创意碰撞 游戏简介 《植物大战僵尸杂交版》是由B站知名UP主潜艇伟伟迷基于经典游戏《植物大战僵尸》进行的一次大胆且富有创意的二次创作。这款游戏不仅保留了原版游戏的经典玩法,还融入了植物杂交的全新概念&#x…

Qt扫盲-QRect矩形描述类

QRect矩形描述总结 一、概述二、常用函数1. 移动类2. 属性函数3. 判断4. 比较计算 三、渲染三、坐标 一、概述 QRect类使用整数精度在平面中定义一个矩形。在绘图的时候经常使用,作为一个二维的参数描述类。 一个矩形主要有两个重要属性,一个是坐标&am…

同步互斥与通信

目录 一、同步与互斥的概念 二、同步与互斥并不简单 三、各类方法的对比 一、同步与互斥的概念 一句话理解同步与互斥:我等你用完厕所,我再用厕所。 什么叫同步?就是:哎哎哎,我正在用厕所,你等会。 什…

【实战场景】记一次UAT jvm故障排查经历

【实战场景】记一次UAT jvm故障排查经历 开篇词:干货篇:1.查看系统资源使用情况2.将十进制进程号转成十六进制3.使用jstack工具监视进程的垃圾回收情况4.输出指定线程的堆内存信息5.观察日志6.本地环境复现 总结篇:我是杰叔叔,一名…

线下促销折扣视频介绍

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

什么是定时器?

前言👀~ 上一章我们介绍了阻塞队列以及生产者消息模式,今天我们来讲讲定时器 定时器 标准库中的定时器 schedule()方法 扫描线程 手动实现定时器 任务类 存储任务的数据结构 定时器类 如果各位对文章的内容感兴趣的话,请点点小赞&am…

【Python】列表

目录 一、列表的概念 二、列表的创建 1.变量名 [ ] ..... 2.通过Python内置 的I ist类的构造函数来创建列表 三、操作列表元素的方法 1. 修改 2. 增加元素 3. 删除 4. 其他操作 四、遍历列表 五、列表排序 六、列表切片(list slicing) 七、…

值得细读的8个视觉大模型生成式预训练方法

作者:vasgaowei(已授权原创) 编辑: AI生成未来 链接:https://zhuanlan.zhihu.com/p/677794719 大语言模型的进展催生出了ChatGPT这样的应用,让大家对“第四次工业革命”和“AGI”的来临有了一些期待,也作为…

Linux基础指令介绍与详解——原理学习

前言:本节内容标题虽然为指令,但是并不只是讲指令, 更多的是和指令相关的一些原理性的东西。 如果友友只想要查一查某个指令的用法, 很抱歉, 本节不是那种带有字典性质的文章。但是如果友友是想要来学习的,…

深入浅出:npm常用命令详解与实践【保姆级教程】

大家好,我是CodeQi! 在我刚开始学习前端开发的时候,有一件事情让我特别头疼:管理和安装各种各样的依赖包。 那时候,我还不知道 npm 的存在,手动下载和管理这些库简直是噩梦。 后来,我终于接触到了 npm(Node Package Manager),它不仅帮我解决了依赖管理问题,还让我…

Python深度理解系列之【排序算法——冒泡排序】

读者大大们好呀!!!☀️☀️☀️ 👀期待大大的关注哦❗️❗️❗️ 🚀欢迎收看我的主页文章➡️木道寻的主页 文章目录 🔥前言🚀冒泡排序python实现算法实现图形化算法展示 ⭐️⭐️⭐️总结 🔥前…

Apache POI、EasyPoi、EasyExcel

目录 ​编辑 (一)Apache PoI 使用 (二)EasyPoi使用 (三)EasyExcel使用 写 读 最简单的读​ 最简单的读的excel示例​ 最简单的读的对象​ (一)Apache PoI 使用 (二&…

Git 安装

目录 Git 安装 Git 安装 在使用 Git 前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac 和 Windows 平台上运行。Git 各平台安装包下载地址为:http://git-scm.com/downloads 在 Linux 平台上安装(包管理工具安装) 首先&#xff0…

IIS在Windows上的搭建

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 目录 一 概念: 二网络…

深入理解C++中的锁

目录 1.基本互斥锁(std::mutex) 2.递归互斥锁(std::recursive_mutex) 3.带超时机制的互斥锁(std::timed_mutex) 4.带超时机制的递归互斥锁(std::recursive_timed_mutex) 5.共享…

【python脚本】批量检测sql延时注入

文章目录 前言批量检测sql延时注入工作原理脚本演示 前言 SQL延时注入是一种在Web应用程序中利用SQL注入漏洞的技术,当传统的基于错误信息或数据回显的注入方法不可行时,例如当Web应用进行了安全配置,不显示任何错误信息或敏感数据时&#x…

【TS】TypeScript 原始数据类型深度解析

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 TypeScript 原始数据类型深度解析一、引言二、基础原始数据类型2.1 boolean2.2 …