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

news2024/12/23 13:31:18

文章目录

  • 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.coloradmin.cn/o/1888466.html

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

相关文章

LeetCode题练习与总结:二叉树的后序遍历--145

一、题目描述 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[3,2,1]示例 2: 输入:root [] 输出:[]示例 3: 输入&#xff1a…

关于批量采集1688商品主图及链接的方式:软件采集/1688官方API接口数据采集

关于批量采集,我们通常用到的是软件 采集,或者通过1688官方API数据采集的形式:用户输入一组1688商品ID,一行一个,流程会自动逐个打开对应的1688商品详情页,采集主图的所有链接。 结果保存为表格的一行&…

人工智能-NLP简单知识汇总01

人工智能-NLP简单知识汇总01 1.1自然语言处理的基本概念 自然语言处理难点: 语音歧义句子切分歧义词义歧义结构歧义代指歧义省略歧义语用歧义 总而言之:!!语言无处不歧义 1.2自然语言处理的基本范式 1.2.1基于规则的方法 通…

JDBC【封装工具类、SQL注入问题】

day54 JDBC 封装工具类01 创建配置文件 DBConfig.properties driverNamecom.mysql.cj.jdbc.Driver urljdbc:mysql://localhost:3306/qnz01?characterEncodingutf8&serverTimezoneUTC usernameroot passwordroot新建配置文件,不用写后缀名 创建工具类 将变…

【Linux】TCP协议【下三】{面向字节流/粘包问题/TCP异常情况/文件和Socket}

文章目录 7.面向字节流TCP(传输控制协议)和UDP(用户数据报协议) 8.粘包问题9.TCP异常情况10.再谈文件和socket的关系 7.面向字节流 创建一个TCP的socket, 同时在内核中创建一个 发送缓冲区 和一个 接收缓冲区;一个链接一对发收缓…

day09了 加油

浅拷贝 指向同一个地址空间 右边不可取地址 左边一定是到了具体的位置 右值引用std&#xff1a;&#xff1a; move 相信大家默认构造函数都没有问题&#xff0c;所以就不贴例子了 浅拷贝构造函数 只负责复制地址&#xff0c;而不是真的把完整的内存给它 #include <iostre…

Qt——升级系列(Level Seven):事件、文件

目录 Qt事件 事件介绍 事件的处理 按键事件 鼠标事件 定时器 事件分发器 事件过滤器 Qt文件 Qt文件概述 输入输出设备类 文件读写类 文件和目录信息类 Qt事件 事件介绍 事件是应⽤程序内部或者外部产⽣的事情或者动作的统称。在 Qt 中使⽤⼀个对象来表⽰⼀个事件。所有的 Qt …

Linux修炼之路之进程概念,fork函数,进程状态

目录 一&#xff1a;进程概念 二&#xff1a;Linux中的进程概念 三&#xff1a;用getpid(),getppid()获取该进程的PID,PPID 四&#xff1a;用fork()来创建子进程 五&#xff1a;操作系统学科的进程状态 六&#xff1a;Linux中的进程状态 接下来的日子会顺顺利利&#xf…

WordPress网站添加插件和主题时潜在危险分析

WordPress 最初只是一个简单的博客软件&#xff0c;现在据估计为全球前 1000 万个网站中的 30% 提供支持。WordPress受欢迎的因素之一是可以轻松创建插件和主题来扩展它并提供比默认设置更多的功能。 目前&#xff0c;WordPress 网站列出了 56,000 多个插件以及数千个主题。插件…

提升用户体验之requestAnimationFrame实现前端动画

requestAnimationFrame是什么 MDN官方解释 解析这段话&#xff1a; 1、那么浏览器重绘是指什么呢&#xff1f; ——大多数电脑的显示器刷新频率是60Hz&#xff0c;1000ms/6016.66666667ms的时间刷新一次 2、重绘之前调用指定的回调函数更新动画&#xff1f; ——requestAnima…

机器学习辅助的乙醇浓度检测

目录 1.为什么要机器学习 2. 神经网络一般组成 3.BP神经网络工作过程 4.评价指标 5.实操代码 1.为什么要用机器学习 人工分析大量的谐振模式&#xff0c;建立各种WGM的响应与未知目标之间的关系&#xff0c;是一个很大的挑战。机器学习(ML)能够自行识别全谱的全部特征。作为…

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

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

ONLYOFFICE8.1版本桌面编辑器简单测评

ONLYOFFICE官网链接&#xff1a;在线PDF查看器和转换器 | ONLYOFFICE ONLYOFFICE介绍&#xff1a;https://www.onlyoffice.com/zh/office-suite.aspx OnlyOffice 是一款免费且开源的 Office 协作办公套件&#xff0c;支持桌面端和移动端等多平台&#xff0c;由一家领先的 IT 公…

OpenStack开源虚拟化平台(二)

目录 三、对象存储服务Swift&#xff08;一&#xff09;Swift特性&#xff08;二&#xff09;应用场景&#xff08;三&#xff09;Swift主要组件&#xff08;四&#xff09;Swift基本原理&#xff08;五&#xff09;实例分析 四、镜像服务Glance&#xff08;一&#xff09;Glan…

如何在 Java 应用中使用 Jedis 客户端库来实现 Redis 缓存的基本操作

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

图解 Kafka 架构

写在前面 Kafka 是一个可横向扩展&#xff0c;高可靠的实时消息中间件&#xff0c;常用于服务解耦、流量削峰。 好像是 LinkedIn 团队开发的&#xff0c;后面捐赠给apache基金会了。 kafka 总体架构图 Producer&#xff1a;生产者&#xff0c;消息的产生者&#xff0c;是消息的…

不改代码,实现web.config或app.config的连接字符串加密解密

目的&#xff1a;加密字符串&#xff0c;防止明文显示。 好处&#xff1a;不用修改代码&#xff0c;微软自带功能&#xff0c;自动解密。 web.config 参考相关文章&#xff1a; Walkthrough: Encrypting Configuration Information Using Protected Configuration | Microso…

本地通过ollama下载模型,并使用python跑这个本地模型

1&#xff0c;这是ollama地址&#xff0c;下载对应的安装包 https://ollama.com/?viaurlainavpro.com 2&#xff0c;下载完直接安装即可&#xff0c;安装完后&#xff0c;winr打开cmd&#xff0c;出现这个&#xff0c;基本就妥了 3&#xff0c;这里我们需要去下载模型&#x…

笔记:Git学习之应用场景和使用经验

目标&#xff1a;整理Git工具的应用场景和使用经验 一、开发环境 Git是代码版本控制工具&#xff1b;Github是代码托管平台。 工具组合&#xff1a;VSCode Git 需要安装的软件&#xff1a;vscode、Git 其中vscode需要安装的插件&#xff1a;GitLens、Git History 二、应用…