强化学习-6 DDPG、PPO、SAC算法

文章目录

  • 1 DPG方法
  • 2 DDPG算法
  • 3 DDPG算法的优缺点
  • 4 TD3算法
    • 4.1 双Q网络
    • 4.2 延迟更新
    • 4.3 噪声正则
  • 5 附1
    • 5.1 Ornstein-Uhlenbeck (OU) 噪声
      • 5.1.1 定义
      • 5.1.2 特性
      • 5.1.3 直观理解
      • 5.1.4 数学性质
      • 5.1.5 代码示例
      • 5.1.6 总结
  • 6 重要性采样
  • 7 PPO算法
  • 8 附2
  • 9 最大熵强化学习
  • 10 Soft Q-Learning
  • 11 SAC
  • 12 自动调节温度因子


1 DPG方法

想适配连续动作空间,我们干脆就将选择动作的过程变成一个直接从状态映射到具体动作的函数 μ θ ( s ) \mu_\theta (s) μθ(s),其中 θ \theta θ 表示模型的参数,这样一来就把求解 Q Q Q 函数、贪心选择动作这两个过程合并成了一个函数,也就是我们常说的 Actor \text{Actor} Actor 。注意,这里的 μ θ ( s ) \mu_\theta (s) μθ(s) 输出的是一个动作值,而不是像 Actor-Critic \text{Actor-Critic} Actor-Critic 章节中提到的概率分布 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(as)

DQN \text{DQN} DQN DPG \text{DPG} DPG
适用范围不能用于连续动作空间连续动作空间
算法特点 DQN \text{DQN} DQN 算法中动作是通过贪心策略或者说 argmax \text{argmax} argmax 的方式来从 Q Q Q 函数间接得到把求解 Q Q Q 函数、贪心选择动作这两个过程合并成了一个函数
ε − greedy \varepsilon-\text{greedy} εgreedy Actor \text{Actor} Actor

2 DDPG算法

技巧目的
目标网络
经验回放
引入噪声增加策略的探索性

强化学习算法的基础核心问题

主题目的方法
如何提高对值函数的估计保证其准确性,即尽量无偏且低方差1. 用深度神经网络替代简单的 Q Q Q
2. 结合蒙特卡洛和时序差分的 TD ( λ ) \text{TD}(\lambda) TD(λ)
3. 引入目标网络以及广义优势估计
如何提高探索以及平衡探索-利用的问题例如 DQN \text{DQN} DQN DDPG \text{DDPG} DDPG 算法都会利用各种技巧来提高探索1. 经验回放
2. ε − greedy \varepsilon-\text{greedy} εgreedy 策略
3. 噪声网络

引入噪声最简单的方式就是在输出的值上加上一个随机数,这个随机数可以是正态分布的(即高斯噪声),也可以是均匀分布的,只要能够保证这个随机数的值不要过大就行。

OU \text{OU} OU 噪声高斯噪声
具有回归特性的随机过程。独立
探索性持续的、自相关的特性。更加平滑、更加稳定。有助于探索更广泛的动作空间,并且更容易找到更好的策略。
控制幅度可以通过调整其参数来控制噪声的幅度。可以通过调整 OU \text{OU} OU 噪声的方差来控制噪声的大小,从而平衡探索性和利用性。较大的方差会增加探索性,而较小的方差会增加利用性。
稳定性回归特性使得噪声在训练过程中具有一定的稳定性。相比于纯粹的随机噪声, OU \text{OU} OU 噪声可以更好地保持动作的连续性,避免剧烈的抖动,从而使得训练过程更加平滑和稳定。
可控性具有回归特性,它在训练过程中逐渐回归到均值,因此可以控制策略的探索性逐渐减小。这种可控性使得在训练的早期增加探索性,然后逐渐减小探索性,有助于更有效地进行训练。

3 DDPG算法的优缺点

优点原因
适用于连续动作空间采用了确定性策略来选择动作。不需要进行动作采样,更容易优化和学习。缓解了在连续动作空间中的高方差问题。
高效的梯度优化使用策略梯度方法进行优化。同时,通过 Actor-Critic 结构,算法可以利用值函数来辅助策略的优化,提高算法的收敛速度和稳定性。
经验回放和目标网络经验回放机制可以减少样本之间的相关性,提高样本的有效利用率,并且增加训练的稳定性。
目标网络可以稳定训练过程,避免值函数估计和目标值之间的相关性问题,从而提高算法的稳定性和收敛性。
缺点原因
只适用于连续动作空间
高度依赖超参数1. DQN的算法参数例如学习率、批量大小、目标网络的更新频率等
2. OU 噪声的参数
高度敏感的初始条件初始策略和值函数的参数设置可能会影响算法的收敛性和性能,需要仔细选择和调整。
容易陷入局部最优由于采用了确定性策略,可能会导致算法陷入局部最优。需要采取一些措施,如加入噪声策略或使用其他的探索方法。

4 TD3算法

英文全称为 twin delayed DDPG \text{twin delayed DDPG} twin delayed DDPG,中文全称为双延迟确定性策略梯度算法。相对于 DDPG \text{DDPG} DDPG 算法, TD3 \text{TD3} TD3 算法的改进主要做了三点重要的改进,一是 Q Q Q 网络,体现在名字中的 twin \text{twin} twin,二是 延迟更新,体现在名字中的 delayed \text{delayed} delayed,三是 躁声正则 noise regularisation \text{noise regularisation} noise regularisation )。

4.1 双Q网络

Double DQN \text{Double DQN} Double DQN 的原理本质上是一样的,这样做的好处是可以减少 Q Q Q 值的过估计,从而提高算法的稳定性和收敛性。

4.2 延迟更新

可以在训练中让 Actor \text{Actor} Actor 的更新频率低于 Critic \text{Critic} Critic 的更新频率,这样一来 Actor \text{Actor} Actor 的更新就会比较稳定,不会受到 Critic \text{Critic} Critic 的影响,从而提高算法的稳定性和收敛性。

4.3 噪声正则

Critic \text{Critic} Critic 引入一个噪声提高其抗干扰性,这样一来就可以在一定程度上提高 Critic \text{Critic} Critic 的稳定性,从而进一步提高算法的稳定性和收敛性。注意,这里的噪声是在 Critic \text{Critic} Critic 网络上引入的,而不是在输出动作上引入的,因此它跟 DDPG \text{DDPG} DDPG 算法中的噪声是不一样的。具体来说,我们可以在计算 TD \text{TD} TD 误差的时候,给目标值 y y y 加上一个噪声,并且为了让噪声不至于过大,还增加了一个裁剪( clip \text{clip} clip ),如式 (11.5) \text{(11.5)} (11.5) 所示。
y = r + γ Q θ ′ ( s ′ , π ϕ ′ ( s ′ ) + ϵ ) ϵ ∼ clip ⁡ ( N ( 0 , σ ) , − c , c ) (11.5) \tag{11.5} y=r+\gamma Q_{\theta^{\prime}}\left(s^{\prime}, \pi_{\phi^{\prime}}\left(s^{\prime}\right)+\epsilon\right) \epsilon \sim \operatorname{clip}(N(0, \sigma),-c, c) y=r+γQθ(s,πϕ(s)+ϵ)ϵclip(N(0,σ),c,c)(11.5)

\qquad 其中 N ( 0 , σ ) N(0, \sigma) N(0,σ) 表示均值为 0 \text{0} 0,方差为 σ \sigma σ 的高斯噪声, ϵ \epsilon ϵ 表示噪声, clip ⁡ \operatorname{clip} clip 表示裁剪函数,即将噪声裁剪到 [ − c , c ] [-c, c] [c,c] 的范围内, c c c 是一个超参数,用于控制噪声的大小。可以看到,这里噪声更像是一种正则化的方式,使得值函数更新更加平滑。

5 附1

5.1 Ornstein-Uhlenbeck (OU) 噪声

Ornstein-Uhlenbeck (OU) 噪声是一种具有回归特性的随机过程,常用于模拟具有均值回归特性的噪声过程。在强化学习和金融数学中,OU 噪声常用于描述具有回归特性的动态变化。以下是对 OU 噪声的详细解释和理解。

5.1.1 定义

Ornstein-Uhlenbeck 噪声是一个连续时间的马尔科夫过程,其微分方程形式为:

d X t = θ ( μ − X t ) d t + σ d W t dX_t = \theta (\mu - X_t) dt + \sigma dW_t dXt=θ(μXt)dt+σdWt

其中:

  • X t X_t Xt 是在时间 t t t 的 OU 过程的值。即当前的噪声值,这个 t t t 也是强化学习中的时步( time step \text{time step} time step )。
  • θ \theta θ 是均值回归速度,决定了该过程回归到均值 μ \mu μ 的速度。
  • μ \mu μ 是长期均值。表示噪声在长时间尺度上的平均值。
  • σ \sigma σ 是噪声的强度,表示随机高斯噪声的标准差,决定了随机扰动的大小。
  • W t W_t Wt 是标准布朗运动(或维纳过程)。是一个随机项,表示随机高斯噪声的微小变化。

5.1.2 特性

  1. 均值回归

    • OU 过程具有均值回归特性,这意味着它会倾向于回归到其长期均值 μ \mu μ。当 X t X_t Xt 偏离均值时,回归项 θ ( μ − X t ) \theta (\mu - X_t) θ(μXt) 会推动它回到均值。
    • 如果 X t > μ X_t > \mu Xt>μ,回归项为负,将 X t X_t Xt 拉回均值。
    • 如果 X t < μ X_t < \mu Xt<μ,回归项为正,将 X t X_t Xt 推回均值。
  2. 随机扰动

    • OU 过程包括一个随机扰动项 σ d W t \sigma dW_t σdWt,这个项引入了噪声,使得过程具有随机性。
    • σ \sigma σ 越大,随机扰动越显著。

5.1.3 直观理解

可以将 OU 噪声过程想象成一个受阻尼的随机过程。以下是一些直观的类比:

  • 弹簧模型:想象一个弹簧的质量块,质量块的位置 X t X_t Xt 在长期均值 μ \mu μ 附近振荡。弹簧力(类似于回归项 θ ( μ − X t ) \theta (\mu - X_t) θ(μXt))将质量块拉回均值位置,同时随机的震动(类似于 σ d W t \sigma dW_t σdWt)不断扰动质量块的位置。
  • 金融资产价格:OU 过程可以用来模拟资产价格的变化,假设价格有一个长期均值,价格会围绕这个均值波动并具有回归特性。

5.1.4 数学性质

  1. 平稳分布

    • OU 过程在长期情况下具有平稳分布,其均值为 μ \mu μ,方差为 σ 2 2 θ \frac{\sigma^2}{2\theta} 2θσ2
  2. 自相关函数

    • OU 过程的自相关函数为:
      ρ ( τ ) = e − θ τ \rho(\tau) = e^{-\theta \tau} ρ(τ)=eθτ
    • 自相关函数随着时间差 τ \tau τ 指数衰减,衰减速度由 θ \theta θ 决定。

5.1.5 代码示例

以下是如何在 Python 中生成 OU 噪声过程的示例代码:

import numpy as np
import matplotlib.pyplot as pltdef generate_ou_process(T, dt, mu=0.0, theta=0.15, sigma=0.2, x0=None):"""Generate an Ornstein-Uhlenbeck process.Parameters:T (float): Total time.dt (float): Time step.mu (float): Long-term mean.theta (float): Speed of mean reversion.sigma (float): Volatility parameter.x0 (float): Initial value of the process (optional).Returns:np.ndarray: Generated OU process."""n_steps = int(T / dt)x = np.zeros(n_steps)if x0 is not None:x[0] = x0else:x[0] = mufor t in range(1, n_steps):dx = theta * (mu - x[t-1]) * dt + sigma * np.sqrt(dt) * np.random.normal()x[t] = x[t-1] + dxreturn x#Parameters
T = 10.0  # Total time
dt = 0.01  # Time step
mu = 0.0  # Long-term mean
theta = 0.15  # Speed of mean reversion
sigma = 0.2  # Volatility parameter
x0 = 1.0  # Initial value#Generate OU process
ou_process = generate_ou_process(T, dt, mu, theta, sigma, x0)#Plot the result
time = np.arange(0, T, dt)
plt.plot(time, ou_process)
plt.xlabel('Time')
plt.ylabel('X(t)')
plt.title('Ornstein-Uhlenbeck Process')
plt.show()

5.1.6 总结

Ornstein-Uhlenbeck 噪声是一种具有均值回归特性的随机过程,其主要特性包括回归到长期均值和随机扰动。通过调节其参数,可以模拟不同类型的具有均值回归特性的动态变化。在强化学习中,OU 噪声常用于添加到动作选择中,以平衡探索和利用。

\qquad PPO \text{PPO} PPO 算法是一类典型的 Actor-Critic \text{Actor-Critic} Actor-Critic 算法,既适用于连续动作空间,也适用于离散动作空间。
\qquad PPO \text{PPO} PPO 算法的主要思想是通过在策略梯度的优化过程中引入一个重要性权重来限制策略更新的幅度,从而提高算法的稳定性和收敛性。 PPO \text{PPO} PPO 算法的优点在于简单、易于实现、易于调参,应用十分广泛,正可谓 “遇事不决 PPO \text{PPO} PPO ”。

6 重要性采样

p ( x ) p(x) p(x)难采样, q ( x ) q(x) q(x)容易采样,通过q采样来替代p采样。
\qquad 重要性采样( importance sampling \text{importance sampling} importance sampling )。重要性采样是一种估计随机变量的期望或者概率分布的统计方法。它的原理也很简单,假设有一个函数 f ( x ) f(x) f(x) ,需要从分布 p ( x ) p(x) p(x) 中采样来计算其期望值,但是在某些情况下我们可能很难从 p ( x ) p(x) p(x) 中采样,这个时候我们可以从另一个比较容易采样的分布 q ( x ) q(x) q(x) 中采样,来间接地达到从 p ( x ) p(x) p(x) 中采样的效果。这个过程的数学表达式如式 (12.1) \text{(12.1)} (12.1) 所示。
E p ( x ) [ f ( x ) ] = ∫ a b f ( x ) p ( x ) q ( x ) q ( x ) d x = E q ( x ) [ f ( x ) p ( x ) q ( x ) ] (12.1) \tag{12.1} E_{p(x)}[f(x)]=\int_{a}^{b} f(x) \frac{p(x)}{q(x)} q(x) d x=E_{q(x)}\left[f(x) \frac{p(x)}{q(x)}\right] Ep(x)[f(x)]=abf(x)q(x)p(x)q(x)dx=Eq(x)[f(x)q(x)p(x)](12.1)

\qquad 对于离散分布的情况,可以表达为式 (12.2) \text{(12.2)} (12.2)

E p ( x ) [ f ( x ) ] = 1 N ∑ f ( x i ) p ( x i ) q ( x i ) (12.2) \tag{12.2} \begin{aligned} E_{p(x)}[f(x)]=\frac{1}{N} \sum f\left(x_{i}\right) \frac{p\left(x_{i}\right)}{q\left(x_{i}\right)} \end{aligned} Ep(x)[f(x)]=N1f(xi)q(xi)p(xi)(12.2)

\qquad 这样一来原问题就变成了只需要从 q ( x ) q(x) q(x) 中采样,然后计算两个分布之间的比例 p ( x ) q ( x ) \frac{p(x)}{q(x)} q(x)p(x) 即可,这个比例称之为重要性权重。换句话说,每次从 q ( x ) q(x) q(x) 中采样的时候,都需要乘上对应的重要性权重来修正采样的偏差,即两个分布之间的差异。当然这里可能会有一个问题,就是当 p ( x ) p(x) p(x) 不为 0 \text{0} 0 的时候, q ( x ) q(x) q(x) 也不能为 0 \text{0} 0,但是他们可以同时为 0 \text{0} 0 ,这样 p ( x ) q ( x ) \frac{p(x)}{q(x)} q(x)p(x) 依然有定义,具体的原理由于并不是很重要,因此就不展开讲解了。

\qquad 通常来讲,我们把这个 p ( x ) p(x) p(x) 叫做目标分布 q ( x ) q(x) q(x) 叫做提议分布 Proposal Distribution \text{Proposal Distribution} Proposal Distribution ), 那么重要性采样对于提议分布有什么要求呢? 其实理论上 q ( x ) q(x) q(x) 可以是任何比较好采样的分布,比如高斯分布等等,但在实际训练的过程中,聪明的读者也不难想到我们还是希望 q ( x ) q(x) q(x) 尽可能 p ( x ) p(x) p(x),即重要性权重尽可能接近于 1 \text{1} 1 。我们可以从方差的角度来具体展开讲讲为什么需要重要性权重尽可能等于 1 1 1 ,回忆一下方差公式,如式 (12.3) \text{(12.3)} (12.3) 所示。
V a r x ∼ p [ f ( x ) ] = E x ∼ p [ f ( x ) 2 ] − ( E x ∼ p [ f ( x ) ] ) 2 (12.3) \tag{12.3} Var_{x \sim p}[f(x)]=E_{x \sim p}\left[f(x)^{2}\right]-\left(E_{x \sim p}[f(x)]\right)^{2} Varxp[f(x)]=Exp[f(x)2](Exp[f(x)])2(12.3)

\qquad 结合重要性采样公式,我们可以得到式 (12.4) \text{(12.4)} (12.4)

V a r x ∼ q [ f ( x ) p ( x ) q ( x ) ] = E x ∼ q [ ( f ( x ) p ( x ) q ( x ) ) 2 ] − ( E x ∼ q [ f ( x ) p ( x ) q ( x ) ] ) 2 = E x ∼ p [ f ( x ) 2 p ( x ) q ( x ) ] − ( E x ∼ p [ f ( x ) ] ) 2 (12.4) \tag{12.4} \begin{aligned} Var_{x \sim q}\left[f(x) \frac{p(x)}{q(x)}\right]=E_{x \sim q}\left[\left(f(x) \frac{p(x)}{q(x)}\right)^{2}\right]-\left(E_{x \sim q}\left[f(x) \frac{p(x)}{q(x)}\right]\right)^{2} \\ = E_{x \sim p}\left[f(x)^{2} \frac{p(x)}{q(x)}\right]-\left(E_{x \sim p}[f(x)]\right)^{2} \end{aligned} Varxq[f(x)q(x)p(x)]=Exq[(f(x)q(x)p(x))2](Exq[f(x)q(x)p(x)])2=Exp[f(x)2q(x)p(x)](Exp[f(x)])2(12.4)

\qquad 不难看出,当 q ( x ) q(x) q(x) 越接近 p ( x ) p(x) p(x) 的时候,方差就越小,也就是说重要性权重越接近于 1 1 1 的时候,反之越大。

\qquad 其实重要性采样也是蒙特卡洛估计的一部分,只不过它是一种比较特殊的蒙特卡洛估计,允许我们在复杂问题中利用已知的简单分布进行采样,从而避免了直接采样困难分布的问题,同时通过适当的权重调整,可以使得蒙特卡洛估计更接近真实结果。

7 PPO算法

\qquad 重要性采样本质上是一种在某些情况下更优的蒙特卡洛估计,再结合前面 Actor-Critic \text{Actor-Critic} Actor-Critic 章节中我们讲到策略梯度算法的高方差主要来源于 Actor \text{Actor} Actor 的策略梯度采样估计。 PPO \text{PPO} PPO 算法的核心思想就是通过重要性采样来优化原来的策略梯度估计,其目标函数表示如式 (12.5) \text{(12.5)} (12.5) 所示。

J T R P O ( θ ) = E [ r ( θ ) A ^ θ old  ( s , a ) ] r ( θ ) = π θ ( a ∣ s ) π θ old  ( a ∣ s ) (12.5) \tag{12.5} \begin{gathered} J^{\mathrm{TRPO}}(\theta)=\mathbb{E}\left[r(\theta) \hat{A}_{\theta_{\text {old }}}(s, a)\right] \\ r(\theta)=\frac{\pi_\theta(a \mid s)}{\pi_{\theta_{\text {old }}}(a \mid s)} \end{gathered} JTRPO(θ)=E[r(θ)A^θold (s,a)]r(θ)=πθold (as)πθ(as)(12.5)

\qquad 这个损失就是置信区间的部分,一般称作 TRPO \text{TRPO} TRPO 损失。这里旧策略分布 π θ old  ( a ∣ s ) \pi_{\theta_{\text {old }}}(a \mid s) πθold (as) 就是重要性权重部分的目标分布 p ( x ) p(x) p(x) ,目标分布是很难采样的,所以在计算重要性权重的时候这部分通常用上一次与环境交互采样中的概率分布来近似。相应地, π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ(as) 则是提议分布,即通过当前网络输出的 probs 形成的类别分布 Catagorical \text{Catagorical} Catagorical 分布(离散动作)或者 Gaussian \text{Gaussian} Gaussian 分布(连续动作)。

\qquad 读者们可能对这个写法感到陌生,似乎少了 Actor-Critic \text{Actor-Critic} Actor-Critic 算法中的 logit_p,但其实这个公式等价于式 (12.6) \text{(12.6)} (12.6)

J T R P O ( θ ) = E ( s t , a t ) ∼ π θ ′ [ p θ ( a t ∣ s t ) p θ ′ ( a t ∣ s t ) A θ ′ ( s t , a t ) ∇ log ⁡ p θ ( a t n ∣ s t n ) ] (12.6) \tag{12.6} J^{\mathrm{TRPO}}(\theta)=E_{\left(s_t, a_t\right) \sim \pi_{\theta^{\prime}}}\left[\frac{p_\theta\left(a_t \mid s_t\right)}{p_{\theta^{\prime}}\left(a_t \mid s_t\right)} A^{\theta^{\prime}}\left(s_t, a_t\right) \nabla \log p_\theta\left(a_t^n \mid s_t^n\right)\right] JTRPO(θ)=E(st,at)πθ[pθ(atst)pθ(atst)Aθ(st,at)logpθ(atnstn)](12.6)

\qquad 换句话说,本质上 PPO \text{PPO} PPO 算法就是在 Actor-Critic \text{Actor-Critic} Actor-Critic 算法的基础上增加了重要性采样的约束而已,从而确保每次的策略梯度估计都不会过分偏离当前的策略,也就是减少了策略梯度估计的方差,从而提高算法的稳定性和收敛性。

\qquad 前面我们提到过,重要性权重最好尽可能地等于 1 \text{1} 1 ,而在训练过程中这个权重它是不会自动地约束到 1 1 1 附近的,因此我们需要在损失函数中加入一个约束项或者说正则项,保证重要性权重不会偏离 1 \text{1} 1 太远。具体的约束方法有很多种,比如 KL \text{KL} KL 散度、 JS \text{JS} JS 散度等等,但通常我们会使用两种约束方法,一种是 clip \text{clip} clip 约束 ,另一种是 KL \text{KL} KL 散度。 clip \text{clip} clip 约束定义如式 (12.7) \text{(12.7)} (12.7) 所示。

J clip  ( θ ) = E ^ t [ min ⁡ ( r t ( θ ) A ^ t , clip ⁡ ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) ] (12.7) \tag{12.7} J_{\text {clip }}(\theta)=\hat{\mathbb{E}}_{t}\left[\min \left(r_{t}(\theta) \hat{A}_{t}, \operatorname{clip}\left(r_{t}(\theta), 1-\epsilon, 1+\epsilon\right) \hat{A}_{t}\right)\right] Jclip (θ)=E^t[min(rt(θ)A^t,clip(rt(θ),1ϵ,1+ϵ)A^t)](12.7)

\qquad 其中 ϵ \epsilon ϵ 是一个较小的超参,一般取 0.1 \text{0.1} 0.1 左右。这个 clip \text{clip} clip 约束的意思就是始终将重要性权重 r ( θ ) r(\theta) r(θ) 裁剪在 1 1 1 的邻域范围内,实现起来非常简单。

\qquad 另一种 KL \text{KL} KL 约束定义如式 (12.8) \text{(12.8)} (12.8) 所示。

J K L ( θ ) = E ^ t [ π θ ( a t ∣ s t ) π θ old  ( a t ∣ s t ) A ^ t − β K L [ π θ old  ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] (12.8) \tag{12.8} J^{KL}(\theta)=\hat{\mathbb{E}}_t\left[\frac{\pi_\theta\left(a_t \mid s_t\right)}{\pi_{\theta_{\text {old }}}\left(a_t \mid s_t\right)} \hat{A}_t-\beta \mathrm{KL}\left[\pi_{\theta_{\text {old }}}\left(\cdot \mid s_t\right), \pi_\theta\left(\cdot \mid s_t\right)\right]\right] JKL(θ)=E^t[πθold (atst)πθ(atst)A^tβKL[πθold (st),πθ(st)]](12.8)

\qquad KL \text{KL} KL 约束一般也叫 KL-penalty \text{KL-penalty} KL-penalty,它的意思是在 TRPO \text{TRPO} TRPO 损失的基础上,加上一个 KL \text{KL} KL 散度的惩罚项,这个惩罚项的系数 β \beta β 一般取 0.01 0.01 0.01 左右。这个惩罚项的作用也是保证每次更新的策略分布都不会偏离上一次的策略分布太远,从而保证重要性权重不会偏离 1 1 1 太远。在实践中,我们一般用 clip \text{clip} clip 约束,因为它更简单,计算成本较低,而且效果也更好。

\qquad 到这里,我们就基本讲完了 PPO \text{PPO} PPO 算法的核心内容,其实在熟练掌握 Actor-Critic \text{Actor-Critic} Actor-Critic 算法的基础上,去学习这一类的其他算法是不难的,读者只需要注意每个算法在 Actor-Critic \text{Actor-Critic} Actor-Critic 框架上做了哪些改进,取得了什么效果即可。

8 附2

8.1 重要性采样方差计算

这个公式描述了在重要性采样(Importance Sampling)中的方差计算过程。首先,让我们逐步分解这个公式,以确保每一步都正确。

8.1.1 公式解释

这个公式描述了权重调整后采样的方差计算方法。公式如下:

Var x ∼ q [ f ( x ) p ( x ) q ( x ) ] = E x ∼ q [ ( f ( x ) p ( x ) q ( x ) ) 2 ] − ( E x ∼ q [ f ( x ) p ( x ) q ( x ) ] ) 2 \text{Var}_{x \sim q} \left[ f(x) \frac{p(x)}{q(x)} \right] = \mathbb{E}_{x \sim q} \left[ \left( f(x) \frac{p(x)}{q(x)} \right)^2 \right] - \left( \mathbb{E}_{x \sim q} \left[ f(x) \frac{p(x)}{q(x)} \right] \right)^2 Varxq[f(x)q(x)p(x)]=Exq[(f(x)q(x)p(x))2](Exq[f(x)q(x)p(x)])2

8.1.2 方差定义

方差的定义是期望的平方与平方的期望之差,即:

Var [ X ] = E [ X 2 ] − ( E [ X ] ) 2 \text{Var}[X] = \mathbb{E}[X^2] - (\mathbb{E}[X])^2 Var[X]=E[X2](E[X])2

在这里,随机变量 X X X f ( x ) p ( x ) q ( x ) f(x) \frac{p(x)}{q(x)} f(x)q(x)p(x),且其分布是由 q ( x ) q(x) q(x) 定义的。因此,我们有:

Var x ∼ q [ f ( x ) p ( x ) q ( x ) ] = E x ∼ q [ ( f ( x ) p ( x ) q ( x ) ) 2 ] − ( E x ∼ q [ f ( x ) p ( x ) q ( x ) ] ) 2 \text{Var}_{x \sim q} \left[ f(x) \frac{p(x)}{q(x)} \right] = \mathbb{E}_{x \sim q} \left[ \left( f(x) \frac{p(x)}{q(x)} \right)^2 \right] - \left( \mathbb{E}_{x \sim q} \left[ f(x) \frac{p(x)}{q(x)} \right] \right)^2 Varxq[f(x)q(x)p(x)]=Exq[(f(x)q(x)p(x))2](Exq[f(x)q(x)p(x)])2

8.1.3 公式验证

  1. 计算期望的平方

( E x ∼ q [ f ( x ) p ( x ) q ( x ) ] ) 2 \left( \mathbb{E}_{x \sim q} \left[ f(x) \frac{p(x)}{q(x)} \right] \right)^2 (Exq[f(x)q(x)p(x)])2

  1. 计算平方的期望

E x ∼ q [ ( f ( x ) p ( x ) q ( x ) ) 2 ] \mathbb{E}_{x \sim q} \left[ \left( f(x) \frac{p(x)}{q(x)} \right)^2 \right] Exq[(f(x)q(x)p(x))2]

这一步中,首先需要计算:

( f ( x ) p ( x ) q ( x ) ) 2 = f ( x ) 2 ( p ( x ) q ( x ) ) 2 \left( f(x) \frac{p(x)}{q(x)} \right)^2 = f(x)^2 \left( \frac{p(x)}{q(x)} \right)^2 (f(x)q(x)p(x))2=f(x)2(q(x)p(x))2

然后取其在 q ( x ) q(x) q(x) 分布下的期望:

E x ∼ q [ f ( x ) 2 ( p ( x ) q ( x ) ) 2 ] \mathbb{E}_{x \sim q} \left[ f(x)^2 \left( \frac{p(x)}{q(x)} \right)^2 \right] Exq[f(x)2(q(x)p(x))2]

  1. 方差公式

将上述两步结合,我们得到方差的计算公式:

Var x ∼ q [ f ( x ) p ( x ) q ( x ) ] = E x ∼ q [ f ( x ) 2 ( p ( x ) q ( x ) ) 2 ] − ( E x ∼ q [ f ( x ) p ( x ) q ( x ) ] ) 2 \text{Var}_{x \sim q} \left[ f(x) \frac{p(x)}{q(x)} \right] = \mathbb{E}_{x \sim q} \left[ f(x)^2 \left( \frac{p(x)}{q(x)} \right)^2 \right] - \left( \mathbb{E}_{x \sim q} \left[ f(x) \frac{p(x)}{q(x)} \right] \right)^2 Varxq[f(x)q(x)p(x)]=Exq[f(x)2(q(x)p(x))2](Exq[f(x)q(x)p(x)])2

8.1.4 结论

这个公式是正确的,没有错误。它精确地描述了在重要性采样中加权采样值的方差计算方法。这个过程对于理解和应用重要性采样技术非常重要,尤其是在涉及到蒙特卡洛方法和其他采样技术时。

8.2 目标函数 式12.5 解释

这个公式与强化学习中的策略优化方法——信赖域策略优化(Trust Region Policy Optimization, TRPO)相关。TRPO是一种用于保证策略更新稳定性和提高收敛速度的优化算法。公式中的每一部分都有特定的含义,下面我们逐一解释。

8.2.1 公式解释

8.2.1.1 目标函数 J TRPO ( θ ) J^{\text{TRPO}}(\theta) JTRPO(θ)

J TRPO ( θ ) = E [ r ( θ ) A ^ θ old ( s , a ) ] J^{\text{TRPO}}(\theta) = \mathbb{E} \left[ r(\theta) \hat{A}_{\theta_{\text{old}}}(s, a) \right] JTRPO(θ)=E[r(θ)A^θold(s,a)]

  • 目标函数 J TRPO ( θ ) J^{\text{TRPO}}(\theta) JTRPO(θ): TRPO 的目标是通过优化策略参数 θ \theta θ 来最大化这个期望值。这个期望值是对策略在给定状态 s s s 下采取动作 a a a 所获得的优势函数的加权平均。

  • 期望值 E [ ⋅ ] \mathbb{E}[\cdot] E[]: 表示在所有状态 s s s 和动作 a a a 上进行期望。期望是根据当前策略 π θ \pi_{\theta} πθ 进行采样的。

  • 优势函数 A ^ θ old ( s , a ) \hat{A}_{\theta_{\text{old}}}(s, a) A^θold(s,a): 这是旧策略 θ old \theta_{\text{old}} θold 下的优势函数。优势函数表示在特定状态 s s s 下选择动作 a a a 相对于平均水平(基于旧策略)所带来的额外奖励。

8.2.1.2 比率函数 r ( θ ) r(\theta) r(θ)

r ( θ ) = π θ ( a ∣ s ) π θ old ( a ∣ s ) r(\theta) = \frac{\pi_{\theta}(a \mid s)}{\pi_{\theta_{\text{old}}}(a \mid s)} r(θ)=πθold(as)πθ(as)

  • 比率函数 r ( θ ) r(\theta) r(θ): 这个比率函数表示新策略 π θ \pi_{\theta} πθ与旧策略 π θ old \pi_{\theta_{\text{old}}} πθold在相同状态 s s s和动作 a a a下的概率比值。
    - π θ ( a ∣ s ) \pi_{\theta}(a \mid s) πθ(as) : 新策略在状态 : 新策略在状态 :新策略在状态s 下选择动作 下选择动作 下选择动作a 的概率。 − 的概率。 - 的概率。\pi_{\theta_{\text{old}}}(a \mid s)$ : 旧策略在状态 : 旧策略在状态 :旧策略在状态s 下选择动作 下选择动作 下选择动作a$的概率。

这个比率用来调整优势函数,使得策略更新时考虑到新旧策略的变化。

8.2.2 直观解释

  1. 策略更新的目标: TRPO的目标是找到一个新的策略 π θ \pi_{\theta} πθ,使得在策略更新过程中保持策略的稳定性和收敛性。通过最大化目标函数 J TRPO ( θ ) J^{\text{TRPO}}(\theta) JTRPO(θ),TRPO确保策略更新是在一个受信赖的范围内进行的。

  2. 优势函数: 优势函数 A ^ θ old ( s , a ) \hat{A}_{\theta_{\text{old}}}(s, a) A^θold(s,a)表示在给定状态 s s s下选择动作 a a a比起选择其他动作的好坏程度。TRPO使用这个函数来衡量当前策略相对于旧策略的性能提升。

  3. 概率比率: 比率函数 r ( θ ) r(\theta) r(θ)调整优势函数的影响,使得新的策略不会偏离旧的策略太远,从而保证策略更新的稳定性。这个调整有助于避免策略在更新过程中出现剧烈变化,确保每次更新都在信赖域内。

8.2.3 总结

TRPO 的核心思想是通过最大化目标函数 J TRPO ( θ ) J^{\text{TRPO}}(\theta) JTRPO(θ),在策略更新时考虑新旧策略的变化,确保更新的稳定性。比率函数 r ( θ ) r(\theta) r(θ)和优势函数 A ^ θ old ( s , a ) \hat{A}_{\theta_{\text{old}}}(s, a) A^θold(s,a)的结合,使得新的策略在获得更高奖励的同时,保持与旧策略的相似性,从而实现稳定和高效的策略优化。

Soft Actor-Critic \text{Soft Actor-Critic} Soft Actor-Critic 算法,简写为 SAC \text{SAC} SAC SAC \text{SAC} SAC 算法是一种基于最大熵强化学习的策略梯度算法,它的目标是最大化策略的熵,从而使得策略更加鲁棒。 SAC \text{SAC} SAC 算法的核心思想是,通过最大化策略的熵,使得策略更加鲁棒,经过超参改良后的 SAC \text{SAC} SAC 算法在稳定性方面是可以与 PPO \text{PPO} PPO 算法华山论剑的。

9 最大熵强化学习

确定性策略和随机性策略,确定性策略是指在给定相同状态下,总是选择相同的动作。
随机性策略则是在给定状态下可以选择多种可能的动作。

优势劣势代表算法
确定性策略稳定性且可重复性。可控性好,容易达到最优解。缺乏探索性。容易陷入局部最优解。DQN、DDPG
随机性策略更加灵活。能够在一定程度探索未知状态和动作。有助于避免陷入局部最优解。不稳定。可重复性差。可能策略收敛慢,影响效率和性能。A2C、PPO

10 Soft Q-Learning

11 SAC

12 自动调节温度因子

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

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

相关文章

Linux配置固定ip地址

虚拟机的Linux操作系统&#xff0c;其IP地址是通过DHCP服务获取的 DHCP&#xff1a;动态获取IP地址&#xff0c;即每次重启设备后都会获取一次&#xff0c;可能导致IP地址频繁变更。 一般系统默认的ip地址设置都是自动获取&#xff0c;故每次系统重启后ip地址都可能会不一样&a…

Redis的使用(二)redis的命令总结

1.概述 这一小节&#xff0c;我们主要来研究一下redis的五大类型的基本使用&#xff0c;数据类型如下&#xff1a; redis我们接下来看一看这八种类型的基本使用。我们可以在redis的官网查询这些命令:Commands | Docs,同时我们也可以用help 数据类型查看命令的帮助文档。 2. 常…

FastAPI教程——部署

部署 部署FastAPI应用程序相对容易。 部署是什么意思 部署应用程序意味着执行必要的步骤以使其可供用户使用。 对于Web API来说&#xff0c;通常涉及将上传到云服务器中&#xff0c;搭配一个性能和稳定性都不错的服务器程序&#xff0c;以便你的用户可以高效地访问你的应用…

Ubuntu安装Docker

一&#xff0c;Docker简介 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化&#xff0c;容器是完全使用沙箱机制&#xff0c;相互之间不会有…

论文回顾 | CVPR 2021 | How to Calibrate Your Event Camera | 基于图像重建的事件相机校准新方法

论文速览 | CVPR 2021 | How to Calibrate Your Event Camera | 基于图像重建的事件相机校准新方法 1 引言 在计算机视觉和机器人领域,相机校准一直是一个基础而又重要的问题。传统的相机校准方法主要依赖于从已知校准图案中提取角点,然后通过优化算法求解相机的内参和外参。这…

DDR3(三)

目录 1 预取1.1 什么是预取1.2 预取有哪些好处1.3 结构框图1.4 总结 2 突发2.1 什么是突发2.2 突发与预取 本文讲解DDR中常见的两个术语&#xff1a;预取和突发&#xff0c;对这两个概念理解的关键在于地址线的低位是否参与译码&#xff0c;具体内容请继续往下看。 1 预取 1.1…

创新配置,秒级采集,火爆短视频评论抓取

快速采集评论数据的好处 快速采集评论数据是在当今数字信息时代的市场趋势分析和用户反馈分析中至关重要的环节。通过准确获取并分析大量用户评论&#xff0c;您将能够更好地了解消费者的需求、情感和偏好。集蜂云采集平台提供了一种简单配置的方法&#xff0c;使您能够快速采…

离线安装arm架构Firefox

离线安装Firefox浏览器及其插件在ARM架构的设备上&#xff08;如树莓派、部分Android设备或其他采用ARM处理器的Linux系统&#xff09;可能需要一些特殊步骤&#xff0c;因为默认情况下&#xff0c;大多数浏览器和插件都是为x86架构设计的。对于ARM架构&#xff0c;你需要找到特…

Leetcode 338. 比特位计数

给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;[0,1,1] 解释&#xff1a; 0 --> 0 1 --> 1…

C#/WPF 自制截图工具

在日常使用电脑办公时&#xff0c;我们经常遇到需要截图然后保存图片&#xff0c;我们往往需要借助安装截图工具才能实现&#xff0c;现在我们通过C#自制截图工具&#xff0c;也能够轻松进行截图。 我们可以通过C#调用WindousAPI来实现截图&#xff0c;实例代码如下&#xff1a…

uni-app x 跨平台开发框架

目录 uni-app x 是什么 和Flutter对比 uts语言 uvue渲染引擎 组合式API的写法 选项式API写法 页面生命周期 API pages.json全局配置文件 总结 uni-app x 是什么 uni-app x&#xff0c;是下一代 uni-app&#xff0c;是一个跨平台应用开发引擎。 uni-app x 是一个庞…

计算机网络-IP组播基础

一、概述 在前面的学习交换机和路由协议&#xff0c;二层通信是数据链路层间通信&#xff0c;在同一个广播域间通过源MAC地址和目的MAC地址进行通信&#xff0c;当两台主机第一次通信由于不清楚目的MAC地址需要进行广播泛洪&#xff0c;目的主机回复自身MAC地址&#xff0c;然后…

Linux多进程和多线程(三)进程间通讯-信号处理方式和自定义处理函数

进程间通信之信号 信号信号的种类 信号在操作系统中的定义如下: 信号的处理流程在 Linux 中对信号的处理⽅式 自定义信号处理函数 信号的发送 kill() 函数:raise() 函数: 示例 : 创建⼀个⼦进程&#xff0c;⼦进程通过信号暂停&#xff0c;⽗进程发送 终⽌信号等待信号 pause()…

【鸿蒙学习笔记】@Link装饰器:父子双向同步

官方文档&#xff1a;Link装饰器&#xff1a;父子双向同步 目录标题 [Q&A] Link装饰器作用 [Q&A] Link装饰器特点样例&#xff1a;简单类型样例&#xff1a;数组类型样例&#xff1a;Map类型样例&#xff1a;Set类型样例&#xff1a;联合类型 [Q&A] Link装饰器作用…

深度学习模型加密python版本

支持加密的模型: # torch、torch script、onnx、tensorrt 、torch2trt、tensorflow、tensorflow2tensorrt、paddlepaddle、paddle2tensorrt 深度学习推理模型通常以文件的形式进行保存&#xff0c;相应的推理引擎通过读取模型文件并反序列化即可进行推理过程. 这样一来&#…

MongoDB 单节点升级为副本集高可用集群(1主1从1仲裁)

作者介绍&#xff1a;老苏&#xff0c;10余年DBA工作运维经验&#xff0c;擅长Oracle、MySQL、PG、Mongodb数据库运维&#xff08;如安装迁移&#xff0c;性能优化、故障应急处理等&#xff09; 公众号&#xff1a;老苏畅谈运维 欢迎关注本人公众号&#xff0c;更多精彩与您分享…

leetcode力扣_排序问题

215.数组中的第K个最大元素 鉴于已经将之前学的排序算法忘得差不多了&#xff0c;只会一个冒泡排序法了&#xff0c;就写了一个冒牌排序法&#xff0c;将给的数组按照降序排列&#xff0c;然后取nums[k-1]就是题目要求的&#xff0c;但是提交之后对于有的示例显示”超出时间限制…

基于顺序表的通讯录实现

一、前言 基于已经学过的顺序表&#xff0c;可以实现一个简单的通讯录。 二、通讯录相关头文件 //Contact.h #pragma once#define NAME_MAX 20 #define TEL_MAX 20 #define ADDR_MAX 20 #define GENDER_MAX 20typedef struct PersonInfo {char name[NAME_MAX];char gender[G…

pycharm如何使用jupyter

目录 配置jupyter新建jupyter文件别人写的方法&#xff08;在pycharm种安装&#xff0c;在网页中使用&#xff09; pycharm专业版 配置jupyter 在pycharm终端启动一个conda虚拟环境&#xff0c;输入 conda install jupyter会有很多前置包需要安装&#xff1a; 新建jupyter…

VScode将界面语言设置为中文

1. 点击左侧的扩展图标&#xff0c;打开侧边栏“EXTENSIONS”面板。 2. 在搜索框中输入“Chinese”&#xff0c;查找出“中文简体”插件&#xff0c;点击“install”按钮。 3. 等待插件安装完成&#xff0c;点击右下角“restart”按钮&#xff0c;从而重新启动Vscode。