当前位置: 首页 > news >正文

强化学习-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 广义优势估计

相关文章:

  • IOS Swift 从入门到精通:写入 Firestore数据库
  • 【ACM出版,马来西亚-吉隆坡举行】第四届互联网技术与教育信息化国际会议 (ITEI 2024)
  • 电路笔记(PCB):电流容量(IPC-2221和IPC-2152)+阻抗匹配
  • JavaMySQL 学习(基础)
  • 仿论坛项目--初识Spring Boot
  • 网络爬虫基础知识
  • RealMAN:大规模真实录制且经过注释的麦克风阵列数据集
  • Linux常用指令汇总
  • Perl语言入门指南
  • 【MindSpore学习打卡】应用实践-计算机视觉-ShuffleNet图像分类:从理论到实践
  • 使用tkinter拖入excel文件并显示
  • 大数据面试题之Kafka(4)
  • Rocky Linux 9 快速安装docker 教程
  • (原创)可支持最大高度的NestedScrollView
  • STM32——使用TIM输出比较产生PWM波形控制舵机转角
  • 网络传输文件的问题
  • 【刷算法】从上往下打印二叉树
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • HTTP中的ETag在移动客户端的应用
  • Java,console输出实时的转向GUI textbox
  • Js基础知识(四) - js运行原理与机制
  • Webpack 4 学习01(基础配置)
  • XML已死 ?
  • 百度小程序遇到的问题
  • 构建工具 - 收藏集 - 掘金
  • 机器学习 vs. 深度学习
  • 基于组件的设计工作流与界面抽象
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 设计模式 开闭原则
  • 提醒我喝水chrome插件开发指南
  • 在Unity中实现一个简单的消息管理器
  • const的用法,特别是用在函数前面与后面的区别
  • HanLP分词命名实体提取详解
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​configparser --- 配置文件解析器​
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​用户画像从0到100的构建思路
  • #QT项目实战(天气预报)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (四) Graphivz 颜色选择
  • (转)VC++中ondraw在什么时候调用的
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core 通过 Ef Core 操作 Mysql
  • .Net IE10 _doPostBack 未定义
  • .Net(C#)自定义WinForm控件之小结篇