强化学习-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,一经查实,立即删除!

相关文章

Python游戏脚本开发之大漠插件

自动化 文章目录 自动化前言一、开发环境二、免注册调用三、创建大漠对象四、注册五、大漠功能调用六、整体代码 前言 大漠插件是集前后台,文字识别,图色,键鼠,窗口,内存,DX,Call等功能于一身的…

HSP_13章 Python_魔术方法

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

(1, ‘[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1124)

WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLError(1, [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1124))): /pypi/simple/urllib3/ pip install的时候遇到这个错误 第一步…

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

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

OtterTune dead,参数调优还有DBdoctor

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

Symfony配置管理深度解析:构建可维护项目的秘诀

Symfony是一个高度灵活且功能丰富的PHP框架,它提供了一套强大的配置管理系统,使得开发者能够轻松定制和优化应用程序的行为。本文将深入探讨Symfony中的配置管理机制,包括配置的结构、来源、加载过程以及最佳实践。 一、配置管理的重要性 在…

Scala类型类(Type Classes):灵活而强大的类型增强术

🌟 Scala类型类(Type Classes):灵活而强大的类型增强术 在Scala编程语言中,类型类是一种强大的特性,它允许开发者以类型安全的方式扩展语言。类型类提供了一种机制,可以将行为与类型关联起来,类似于Java中…

【笔记】Android Settings 应用设置菜单的界面代码介绍

简介 Settings应用中,提供多类设置菜单入口,每个菜单内又有各模块功能的实现。 那么各个模块基于Settings 基础的界面Fragment去实现UI,层层按不同业务进行封装继承实现子类: DashboardFragmentSettingsPreferenceFragment 功…

植物大战僵尸杂交版,最新安装包(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管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

Linux上systemctl 和 service 两个命令的区别和联系

systemctl 和 service 两个命令都是 Linux 系统中用于管理服务的工具,但它们分别关联着不同的初始化系统(init system),并且在功能和使用场景上有所差异。 service 命令 关联的初始化系统:service 命令通常与 SysV i…

Python从零学习笔记(1)

1pip无法调用 刚入python,需要用到第三方模块,但是按照教程使用>>>pip install 总是出现错误提示 网上查询许久:语句没错;安装没错;环境配置也正常 最后才知道是不能先进入python模式,而是使用p…

2024年道路运输安全员考试题库及答案

一、多选题 11.《放射性物品安全管理条例》规定,运输放射性物品时,应当使用专用的放射性物品运输包装容器。在运输过程中正确的做法有( )。 A.托运人和承运人应当按照国家放射性物品运输安全标准和国家有关规定,在…

什么是定时器?

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

【Python】列表

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

浅谈什么是计算机科学与技术(Computer Science,CS)

计算机科学的核心内容 计算机科学(Computer Science, CS)涵盖了以下主要领域: 硬件:涉及数字电路、集成电路、存储器和硬件设计与验证方法等。 例子:学习如何设计和实现一个简单的CPU,包括理解指令集、时钟…

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

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