文章目录

  • Deriving the Simplest Policy Gradient
    • 1.轨迹的概率 (Probability of a Trajectory)
    • 2.对数导数技巧
    • 3.轨迹的对数概率
    • 4.环境函数的梯度
    • 5.轨迹的梯度对数概率
    • 综上所述,我们得出以下结论:
  • Implementing the Simplest Policy Gradient
    • 1.建立策略网络
    • 2.构建损失函数
    • 3.运行训练的一个Epoch
  • Expected Grad-Log-Prob Lemma
  • Don't Let the Past Distract You
  • Implementing Reward-to-Go Policy Gradient
  • Baselines in Policy Gradients
  • Other Forms of the Policy Gradient
  • Reference:

在本节中,我们将讨论政策优化算法的数学基础, 我们将介绍政策梯度理论中的三个关键结果:

  • 关于策略参数的最简单的等式描述策略表现的梯度,
  • 一条规则,允许我们从该表达式中删除无用的术语,
  • 以及允许我们在该表达式中添加有用术语的规则。

最后,我们将这些结果结合在一起,并描述策略梯度的基于优势的表达式,这是我们在Vanilla Policy Gradient实现中使用的版本。

Deriving the Simplest Policy Gradient

在这里,我们考虑一种随机的,参数化的策略,πθ\pi_\thetaπθ​. 我们的目标是最大化期望收益 J(πθ)=Eτ∼πθR(τ)J(\pi_\theta)=E_{\tau\sim\pi_\theta}R(\tau)J(πθ​)=Eτ∼πθ​​R(τ)。 出于此推导的目的,我们将使用R(τ)R(\tau)R(τ)来给出有限步长的无折扣收益,此外无限步长的折现收益设置的推导几乎是相同的。

我们想通过梯度上升来优化策略,例如:
θk+1=θk+α∇θJ(πθ)∣θk.\theta_{k+1}=\theta_k+\alpha\nabla_\theta J(\pi_\theta)|_{\theta_k}.θk+1​=θk​+α∇θ​J(πθ​)∣θk​​.

策略的梯度∇θJ(πθ)\nabla_\theta J(\pi_\theta)∇θ​J(πθ​)称为策略梯度,以这种方式优化策略的算法称为策略梯度算法。 (示例包括Vanilla Policy Gradient和TRPO。PPO通常被称为策略梯度算法,尽管这有点不准确。)

要实际使用此算法,我们需要一个可以通过数值计算的策略梯度表达式。 这涉及两个步骤:1)得出策略表现的分析梯度,结果证明是期望值的形式,然后2)构建该期望值的样本估计值,可以使用代理与环境相互作用有限数量的数据来计算 。

在本小节中,我们将找到该表达式的最简单形式。 在后面的小节中,我们将展示如何以最简单的形式进行改进,以获取我们在标准策略梯度实现中实际使用的版本。

我们将从列出一些对得出分析梯度有用的事实开始。

1.轨迹的概率 (Probability of a Trajectory)

给定动作来自πθπ_θπθ​的轨迹τ=(s0,a0,...,sT+1)τ=(s_0,a_0,...,s_{T + 1})τ=(s0​,a0​,...,sT+1​)的概率为:
P(τ∣θ)=ρ0(s0)∏t=0TP(st+1∣st,at)πθ(at∣st).P(\tau|\theta) = \rho_0 (s_0) \prod_{t=0}^{T} P(s_{t+1}|s_t, a_t) \pi_{\theta}(a_t |s_t). P(τ∣θ)=ρ0​(s0​)t=0∏T​P(st+1​∣st​,at​)πθ​(at​∣st​).

2.对数导数技巧

对数导数技巧是基于微积分的简单规则:logxlogxlogx相对于x的导数为1 ⁄ x。 重新排列并与链式规则结合后,我们得到:

∇θP(τ∣θ)=P(τ∣θ)∇θlog⁡P(τ∣θ).\nabla_{\theta} P(\tau | \theta) = P(\tau | \theta) \nabla_{\theta} \log P(\tau | \theta).∇θ​P(τ∣θ)=P(τ∣θ)∇θ​logP(τ∣θ).

3.轨迹的对数概率

轨迹的对数概率就是:
log⁡P(τ∣θ)=log⁡ρ0(s0)+∑t=0T(log⁡P(st+1∣st,at)+log⁡πθ(at∣st)).\log P(\tau|\theta) = \log \rho_0 (s_0) + \sum_{t=0}^{T} \bigg( \log P(s_{t+1}|s_t, a_t) + \log \pi_{\theta}(a_t |s_t)\bigg).logP(τ∣θ)=logρ0​(s0​)+t=0∑T​(logP(st+1​∣st​,at​)+logπθ​(at​∣st​)).

4.环境函数的梯度

环境不依赖于θθθ,因此ρ0(s0),P(st+1∣st,at)ρ_0(s_0),P(s_{t + 1}| s_t,a_t)ρ0​(s0​),P(st+1​∣st​,at​)和R(τ)R(τ)R(τ)的梯度为零。

5.轨迹的梯度对数概率

因此,轨迹的对数概率的梯度为
∇θlog⁡P(τ∣θ)=∇θlog⁡ρ0(s0)+∑t=0T(∇θlog⁡P(st+1∣st,at)+∇θlog⁡πθ(at∣st))=∑t=0T∇θlog⁡πθ(at∣st).\begin{aligned}\nabla_{\theta} \log P(\tau | \theta) &= {\nabla_{\theta} \log \rho_0 (s_0)} + \sum_{t=0}^{T} \bigg( {\nabla_{\theta} \log P(s_{t+1}|s_t, a_t)} + \nabla_{\theta} \log \pi_{\theta}(a_t |s_t)\bigg) \\ &= \sum_{t=0}^{T} \nabla_{\theta} \log \pi_{\theta}(a_t |s_t)\end{aligned}.∇θ​logP(τ∣θ)​=∇θ​logρ0​(s0​)+t=0∑T​(∇θ​logP(st+1​∣st​,at​)+∇θ​logπθ​(at​∣st​))=t=0∑T​∇θ​logπθ​(at​∣st​)​.

综上所述,我们得出以下结论:

∇θJ(πθ)=∇θEτ∼πθR(τ)=∇θ∫τP(τ∣θ)R(τ)Expand expectation=∫τ∇θP(τ∣θ)R(τ)Bring gradient under integral=∫τP(τ∣θ)∇θlog⁡P(τ∣θ)R(τ)Log-derivative trick=Eτ∼πθ∇θlog⁡P(τ∣θ)R(τ)Return to expectation form∴∇θJ(πθ)=Eτ∼πθ∑t=0T∇θlog⁡πθ(at∣st)R(τ)Expression for grad-log-prob\begin{aligned} \nabla_{\theta} J(\pi_{\theta}) &= \nabla_{\theta} E_{\tau \sim \pi_{\theta}}{R(\tau)} & \\ &= \nabla_{\theta} \int_{\tau} P(\tau|\theta) R(\tau) & \text{Expand expectation} \\ &= \int_{\tau} \nabla_{\theta} P(\tau|\theta) R(\tau) & \text{Bring gradient under integral} \\ &= \int_{\tau} P(\tau|\theta) \nabla_{\theta} \log P(\tau|\theta) R(\tau) & \text{Log-derivative trick} \\ &= E_{\tau \sim \pi_{\theta}}{\nabla_{\theta} \log P(\tau|\theta) R(\tau)} & \text{Return to expectation form} \\ \therefore \nabla_{\theta} J(\pi_{\theta}) &= E_{\tau \sim \pi_{\theta}}{\sum_{t=0}^{T} \nabla_{\theta} \log \pi_{\theta}(a_t |s_t) R(\tau)} & \text{Expression for grad-log-prob} \end{aligned}∇θ​J(πθ​)∴∇θ​J(πθ​)​=∇θ​Eτ∼πθ​​R(τ)=∇θ​∫τ​P(τ∣θ)R(τ)=∫τ​∇θ​P(τ∣θ)R(τ)=∫τ​P(τ∣θ)∇θ​logP(τ∣θ)R(τ)=Eτ∼πθ​​∇θ​logP(τ∣θ)R(τ)=Eτ∼πθ​​t=0∑T​∇θ​logπθ​(at​∣st​)R(τ)​Expand expectationBring gradient under integralLog-derivative trickReturn to expectation formExpression for grad-log-prob​

这是一个期望,这意味着我们可以使用样本均值对其进行估计。 如果我们收集一组轨迹:D={τi}i=1,...,N\mathcal{D} = \{\tau_i \}_{i = 1,...,N}D={τi​}i=1,...,N​`,其中通过使代理πθ\pi_{\theta}πθ​在环境中作用获得每个轨迹 ,策略梯度可以使用以下作为估计:
g^=1∣D∣∑τ∈D∑t=0T∇θlog⁡πθ(at∣st)R(τ),\hat{g} = \frac{1}{|\mathcal{D}|} \sum_{\tau \in \mathcal{D}} \sum_{t=0}^{T} \nabla_{\theta} \log \pi_{\theta}(a_t |s_t) R(\tau), g^​=∣D∣1​τ∈D∑​t=0∑T​∇θ​logπθ​(at​∣st​)R(τ),

其中∣D∣|\mathcal{D}|∣D∣ 是 D\mathcal{D}D 中轨迹τ\tauτ的个数(here, NNN).

最后一个表达式是我们想要的可计算表达式的最简单版本。 假设我们以可计算出 ∇θlog⁡πθ(a∣s)\nabla_{\theta}\log\pi_{\theta}(a | s)∇θ​logπθ​(a∣s) 的方式表示我们的策略,并且如果是在能够收集轨迹数据集的环境中,我们可以计算策略梯度并采取更新步骤。

Implementing the Simplest Policy Gradient

我们在spinup / examples / pg_math / 1_simple_pg.py中给出了这个简单版本的策略梯度算法的简短Tensorflow实现。 (也可以在github https://github.com/openai/spinningup/blob/master/spinup/examples/pg_math/1_simple_pg.py __上查看)。它只有122行,因此我们高度重视 建议您深入阅读。 尽管我们不会在此处介绍全部代码,但我们将重点介绍一些重要的部分。

1.建立策略网络

# make core of policy networkobs_ph = tf.placeholder(shape=(None, obs_dim), dtype=tf.float32)logits = mlp(obs_ph, sizes=hidden_sizes+[n_acts])
# make action selection op (outputs int actions, sampled from policy)actions =tf.squeeze(tf.multinomial(logits=logits,num_samples=1), axis=1)

此块构建了前馈神经网络分类策略。 (有关更新,请参阅第1部分中的随机策略部分。)logits张量可用于构造对数概率和操作的概率,而action张量基于logit隐含的概率对操作进行采样。

2.构建损失函数

# make loss function whose gradient, for the right data, is policy gradientweights_ph = tf.placeholder(shape=(None,), dtype=tf.float32)act_ph = tf.placeholder(shape=(None,), dtype=tf.int32)action_masks = tf.one_hot(act_ph, n_acts)log_probs = tf.reduce_sum(action_masks * tf.nn.log_softmax(logits), axis=1)loss = -tf.reduce_mean(weights_ph * log_probs)

在此块中,我们为策略梯度算法构建“损失”函数。 当插入合适的数据时,策略梯度等于这个损失的梯度。 合适的数据表示根据当前策略执行操作时收集的一组(状态,动作,权重)元组,其中状态-动作对的权重是从其所属回合返回的。 (尽管我们将在后面的小节中显示,但是您可以插入其他值来也可以正常工作的重量。)

即使我们将其描述为损失函数,但从监督学习的角度来看,它并不是典型的损失函数。与标准损失函数有两个主要区别。
1.数据分布取决于参数。损失函数通常在固定的数据分布上定义,该分布与我们要优化的参数无关。这里不是,必须在最新策略上对数据进行采样。
2.它无法衡量效果。损失函数通常会评估我们关注的性能指标。在这里,我们关心期望收益J(πθ)J(\pi_{\theta})J(πθ​),但即使在期望中,我们的“损失”函数也根本不近似。此“损失”功能仅对我们有用,因为当在当前参数下进行评估时,使用当前参数生成的数据时,其性能会呈现负梯度。
但是,在梯度下降的第一步之后,就不再与性能相关。这意味着,对于给定的一批数据,最小化此“损失”功能无法保证提高预期收益。可以将这一损失放到−∞-\infty−∞,而策略表现能可能会下降;实际上,通常会这样。有时,资深RL研究人员可能会将此结果描述为对大量数据“过度拟合”的策略。这是描述性的,但不应从字面上理解,因为它没有涉及泛化错误。
我们提出这一点是因为,ML练习者通常会在训练过程中将损失函数解释为有用的信号-“如果损失减少了,一切都会好起来的。”在政策梯度中,这种直觉是错误的,您应该只在乎平均回报率。损失函数没有任何意义。

此处用于制作log_probs张量的方法(创建操作掩码,并使用它来选择特定的对数概率)仅适用于分类策略。 通常它不起作用。

3.运行训练的一个Epoch

# for training policy
def train_one_epoch():# make some empty lists for logging.batch_obs = []          # for observationsbatch_acts = []         # for actionsbatch_weights = []      # for R(tau) weighting in policy gradientbatch_rets = []         # for measuring episode returnsbatch_lens = []         # for measuring episode lengths# reset episode-specific variablesobs = env.reset()       # first obs comes from starting distributiondone = False            # signal from environment that episode is overep_rews = []            # list for rewards accrued throughout ep# render first episode of each epochfinished_rendering_this_epoch = False# collect experience by acting in the environment with current policywhile True:# renderingif not(finished_rendering_this_epoch):env.render()# save obsbatch_obs.append(obs.copy())# act in the environmentact = sess.run(actions, {obs_ph: obs.reshape(1,-1)})[0]obs, rew, done, _ = env.step(act)# save action, rewardbatch_acts.append(act)ep_rews.append(rew)if done:# if episode is over, record info about episodeep_ret, ep_len = sum(ep_rews), len(ep_rews)batch_rets.append(ep_ret)batch_lens.append(ep_len)# the weight for each logprob(a|s) is R(tau)batch_weights += [ep_ret] * ep_len# reset episode-specific variablesobs, done, ep_rews = env.reset(), False, []# won't render again this epochfinished_rendering_this_epoch = True# end experience loop if we have enough of itif len(batch_obs) > batch_size:break# take a single policy gradient update stepbatch_loss, _ = sess.run([loss, train_op],feed_dict={obs_ph: np.array(batch_obs),act_ph: np.array(batch_acts),weights_ph: np.array(batch_weights)})return batch_loss, batch_rets, batch_lens

train_one_epoch()函数运行策略梯度的一个“epoch”,我们定义为

  • 1.经验收集步骤(L62-97),其中代理使用最新策略在环境中互动一定数量的回合,其后是
  • 2.一个策略梯度的更新 (L99-105).

Expected Grad-Log-Prob Lemma

在本小节中,我们将得出一个中间结果,该结果在整个政策梯度理论中得到了广泛使用。 我们将其称为“梯度对数概率期望(EGLP)”引理 [1]。

EGLP引理。 假设PθP_{\theta}Pθ​是随机变量x上的参数化概率分布。 然后:

Ex∼Pθ∇θlog⁡Pθ(x)=0.E_{x \sim P_{\theta}} {\nabla_{\theta} \log P_{\theta}(x)} = 0.Ex∼Pθ​​∇θ​logPθ​(x)=0.

回想一下,所有概率分布都是“归一化”的:
∫xPθ(x)=1.\int_x P_{\theta}(x) = 1.∫x​Pθ​(x)=1.

取两侧的梯度:
∇θ∫xPθ(x)=∇θ1=0.\nabla_{\theta} \int_x P_{\theta}(x) = \nabla_{\theta} 1 = 0.∇θ​∫x​Pθ​(x)=∇θ​1=0.

使用对数派生技巧可以获取:
0=∇θ∫xPθ(x)=∫x∇θPθ(x)=∫xPθ(x)∇θlog⁡Pθ(x)∴0=Ex∼Pθ∇θlog⁡Pθ(x).\begin{aligned}0 &= \nabla_{\theta} \int_x P_{\theta}(x) \\ &= \int_x \nabla_{\theta} P_{\theta}(x) \\ &= \int_x P_{\theta}(x) \nabla_{\theta} \log P_{\theta}(x) \\ \therefore 0 &=E_{x \sim P_{\theta}}{\nabla_{\theta} \log P_{\theta}(x)}. \end{aligned} 0∴0​=∇θ​∫x​Pθ​(x)=∫x​∇θ​Pθ​(x)=∫x​Pθ​(x)∇θ​logPθ​(x)=Ex∼Pθ​​∇θ​logPθ​(x).​

[1] 本文的作者没有意识到在文献中的任何地方都给该引理指定了标准名称。 但是考虑到它出现的频率,似乎很值得给它起一个名字以便于参考。

Don’t Let the Past Distract You

到现在的策略梯度的表达变成了:
∇θJ(πθ)=Eτ∼πθ∑t=0T∇θlog⁡πθ(at∣st)R(τ).\nabla_{\theta} J(\pi_{\theta}) = E_{\tau \sim \pi_{\theta}}{\sum_{t=0}^{T} \nabla_{\theta} \log \pi_{\theta}(a_t |s_t) R(\tau)}. ∇θ​J(πθ​)=Eτ∼πθ​​t=0∑T​∇θ​logπθ​(at​∣st​)R(τ).

在这个梯度上迈出一步,将每个动作的对数概率与R(τ)R(\tau)R(τ)(曾经获得的所有奖励之和)成比例。 但这没有多大意义。

代理实际上仅应根据其“后果”加强行动。 采取行动之前获得的奖励与行动的好坏没有关系:仅在“之后”获得奖励。

事实证明,这种直觉体现在数学上,我们可以证明策略梯度也可以表示为
∇θJ(πθ)=Eτ∼πθ[∑t=0T∇θlog⁡πθ(at∣st)∑t′=tTR(st′,at′,st′+1)].\nabla_{\theta} J(\pi_{\theta}) = E_{\tau \sim \pi_{\theta}} \bigg[{\sum_{t=0}^{T} \nabla_{\theta} \log \pi_{\theta}(a_t |s_t) \sum_{t'=t}^T R(s_{t'}, a_{t'}, s_{t'+1})}\bigg]. ∇θ​J(πθ​)=Eτ∼πθ​​[t=0∑T​∇θ​logπθ​(at​∣st​)t′=t∑T​R(st′​,at′​,st′+1​)].

以这种形式,仅基于采取行动后获得的奖励来加强行动。

我们称这种形式为“未来奖励策略梯度”,因为轨迹上某点之后的奖励总和,
R^t≐∑t′=tTR(st′,at′,st′+1),\hat{R}_t \doteq \sum_{t'=t}^T R(s_{t'}, a_{t'}, s_{t'+1}), R^t​≐t′=t∑T​R(st′​,at′​,st′+1​),

这就是从 t 时刻起的“未来奖励”,而这种策略梯度表述取决于状态动作对的“未来奖励”。

但是,这会更好吗? 策略梯度的关键问题是需要多少个样本轨迹才能获得它们的低方差样本估计。 我们从公式开始就包括了与过去的报酬成比例的加强行动的条件,所有这些均值均值为零,但方差不为零:结果,它们只会给策略梯度的样本估计值增加噪音。 通过删除它们,我们减少了所需的样本轨迹数量。

An (optional) proof of this claim can be found here, and it ultimately depends on the EGLP lemma.

Implementing Reward-to-Go Policy Gradient

We give a short Tensorflow implementation of the reward-to-go policy gradient in spinup/examples/pg_math/2_rtg_pg.py. (It can also be viewed on github <https://github.com/openai/spinningup/blob/master/spinup/examples/pg_math/2_rtg_pg.py>_.)

The only thing that has changed from 1_simple_pg.py is that we now use different weights in the loss function. The code modification is very slight: we add a new function, and change two other lines. The new function is:

def reward_to_go(rews):n = len(rews)rtgs = np.zeros_like(rews)for i in reversed(range(n)):rtgs[i] = rews[i] + (rtgs[i+1] if i+1 < n else 0)return rtgs

然后我们从以下方法调整旧的L86-87,从:

# the weight for each logprob(a|s) is R(tau)
batch_weights += [ep_ret] * ep_len

到:

# the weight for each logprob(a_t|s_t) is reward-to-go from t
batch_weights += list(reward_to_go(ep_rews))

Baselines in Policy Gradients

EGLP引理的直接后果是,对于仅依赖状态的任何函数bbb:
Eat∼πθ∇θlog⁡πθ(at∣st)b(st)=0.E_{a_t \sim \pi_{\theta}}{\nabla_{\theta} \log \pi_{\theta}(a_t|s_t) b(s_t)} = 0.Eat​∼πθ​​∇θ​logπθ​(at​∣st​)b(st​)=0.

这使我们能够从我们的策略梯度表达式中添加或减去任何数量的这样的术语,而在期望中无需更改它:

∇θJ(πθ)=Eτ∼πθ[∑t=0T∇θlog⁡πθ(at∣st)(∑t′=tTR(st′,at′,st′+1)−b(st))].\nabla_{\theta} J(\pi_{\theta}) =E_{\tau \sim \pi_{\theta}}\bigg[{\sum_{t=0}^{T} \nabla_{\theta} \log \pi_{\theta}(a_t |s_t) \left(\sum_{t'=t}^T R(s_{t'}, a_{t'}, s_{t'+1}) - b(s_t)\right)}\bigg]. ∇θ​J(πθ​)=Eτ∼πθ​​[t=0∑T​∇θ​logπθ​(at​∣st​)(t′=t∑T​R(st′​,at′​,st′+1​)−b(st​))].

Any function b used in this way is called a baseline.
基准的最常见选择是策略价值函数Vπ(st)V^\pi(s_t)Vπ(st​). 这是从状态sts_tst​开始,然后遵循策略π\piπ的代理所得到的平均回报。

根据经验,选择b(st)=Vπ(st)b(s_t)=V^\pi(s_t)b(st​)=Vπ(st​)具有减少策略梯度样本估计中方差的理想效果。这样可以更快,更稳定地学习策略。 从概念的角度来看,它也很吸引人:它编码了一种直觉,即如果一个代理达到了预期,它将“感觉”到中立。

实际上,Vπ(st)V^\pi(s_t)Vπ(st​)不能够准确计算,所以它需要被近似。这通常用一个神经网络来近似,Vϕ(st)V_\phi(s_t)Vϕ​(st​),它可以与策略同时被更新(这样值网络总是近似最近策略的值函数)。
学习VϕV_\phiVϕ​的最简单的方法, 被用在在较多数策略优化算法中(包括VPG,TRPO,PPO,A2C),是去最小化均方误差项:
ϕk=arg⁡min⁡ϕEst,R^t∼πk[(Vϕ(st)−R^t)2],\phi_k = \arg \min_{\phi}E_{s_t, \hat{R}_t \sim \pi_k}\bigg[{\left( V_{\phi}(s_t) - \hat{R}_t \right)^2}\bigg], ϕk​=argϕmin​Est​,R^t​∼πk​​[(Vϕ​(st​)−R^t​)2],
其中πk\pi_kπk​是在第k个epoch的策略。这是从前一个值函数的参数ϕk−1\phi_{k-1}ϕk−1​,通过梯度下降的一个或多个步骤完成的.

Other Forms of the Policy Gradient

到目前为止,我们看到的是策略梯度具有一般形式:
∇θJ(πθ)=Eτ∼πθ∑t=0T∇θlog⁡πθ(at∣st)Φt,\nabla_{\theta} J(\pi_{\theta}) = E_{\tau \sim \pi_{\theta}}{\sum_{t=0}^{T} \nabla_{\theta} \log \pi_{\theta}(a_t |s_t) \Phi_t}, ∇θ​J(πθ​)=Eτ∼πθ​​t=0∑T​∇θ​logπθ​(at​∣st​)Φt​,

其中Φt\Phi_tΦt​可以任意的这些形式:
Φt=R(τ)\Phi_t = R(\tau)Φt​=R(τ)

or:
Φt=∑t′=tTR(st′,at′,st′+1),\Phi_t = \sum_{t'=t}^T R(s_{t'}, a_{t'}, s_{t'+1}), Φt​=t′=t∑T​R(st′​,at′​,st′+1​),

or:
Φt=∑t′=tTR(st′,at′,st′+1)−b(st).\Phi_t = \sum_{t'=t}^T R(s_{t'}, a_{t'}, s_{t'+1}) - b(s_t). Φt​=t′=t∑T​R(st′​,at′​,st′+1​)−b(st​).

尽管有不同的差异,所有这些选择都会导致相同的策略梯度期望值。 事实证明,有两个权重 Φt\Phi_tΦt​ 很重要:

  • 1.On-Policy Action-Value Function.
    Φt=Qπθ(st,at)\Phi_t = Q^{\pi_{\theta}}(s_t, a_t)Φt​=Qπθ​(st​,at​)

  • 2. The Advantage Function.
    回忆动作的优势函数, 定义为 Aπ(st,at)=Qπ(st,at)−Vπ(st)A^\pi(s_t,a_t) = Q^{\pi}(s_t,a_t) - V^{\pi}(s_t)Aπ(st​,at​)=Qπ(st​,at​)−Vπ(st​), (对于当前的策略)描述平均地相对于其他动作而言好还是坏。 这个选择:Φt=Aπθ(st,at)\Phi_t = A^{\pi_{\theta}}(s_t, a_t)Φt​=Aπθ​(st​,at​)也是有效的, 证据是它相当于使用Φt=Qπθ(st,at)\Phi_t=Q^{\pi_\theta(s_t,a_t)}Φt​=Qπθ​(st​,at​)然后再使用一个值函数的基准。

具有优势函数的策略梯度的制定极为普遍,并且有许多不同的方法来估算不同算法所使用的优势函数。
要对此主题进行更详细的处理,您应该阅读有关广义优势估计(GAE)的文章,该文章深入探讨了背景部分中Φt\Phi_tΦt​的不同选择。
然后,该论文继续描述GAE,GAE是一种在策略优化算法中具有广泛用途的近似优势函数的方法。 例如,Spinning Up的VPG,TRPO和PPO的实现都利用了它。 因此,我们强烈建议您进行研究。

Reference:

https://github.com/openai/spinningup

Policy Optimization-强化学习业界手册相关推荐

  1. UA CSC696H 强化学习理论选讲1 强化学习概览

    UA CSC696H 强化学习理论选讲1 强化学习概览 强化学习相关概念 Markov Decision Processes(MDP)简介 Policy Evaluation 强化学习(reinfor ...

  2. 8. 强化学习之——模仿学习

    目录 课程大纲 Introduction & Behavioral Cloning DAGGER algorithm to improve BC[就是在BC中引入了online iterati ...

  3. 多智能体强化学习及其在游戏AI上的应用与展望

    近年来,人工智能技术在很多领域都取得了亮眼成就,并逐步从感知智能向决策智能迈进.强化学习是实现决策智能的重要路径,而现实世界中往往存在着多智能体的交互,也催生了多智能体强化学习的发展.这篇文章主要对多 ...

  4. 强化学习笔记:Actor-critic

    0 复习 由于actor-critic 是 policy gradient 和DQN的一个结合,所以我们先对这两个进行一个简单的复习: 0.1 policy gradient 强化学习笔记:Polic ...

  5. dpg learning 和q_深度学习和强化学习之间的差别有多大?

    我是做深度强化学习的(Deep Reinforcement Learning)的,这个问题有趣.我对@张馨宇他在此问题下的简洁回答非常认同:"可以用深度学习这个工具来做强化学习这个任务,也可 ...

  6. 【强化学习】什么是强化学习算法?

    [强化学习]什么是强化学习算法? 一.强化学习解决什么问题? 二.强化学习如何解决问题? 2.1.强化学习的基本框架 2.2.强化学习系统的要素 2.3.强化学习与监督学习的区别 2.4.强化学习与非 ...

  7. 强化学习(二):动态规划与蒙特卡洛方法

    目录 1. 动态规划(Dynamic Programming, DP) 1.1. 策略评估(预测) 迭代策略评估 1.2. 策略改进(控制) 什么是更优的策略? 如何获得更优的策略? 1.3. 策略迭 ...

  8. 强化学习:DDPG到MADDPG

    目录 策略梯度(Policy Gradient) 行动器-评判器方法(Actor-Critic) Deterministic Policy Gradient on-policy和off-policy ...

  9. 深度强化学习——基本概念(1)

    一.基本概念 1.状态.动作.智能体  可以认为状态就是第一张图的环境,虽然状态和observation还是有区别 智能体Agent是马里奥,动作Action就是上下左右的运动 2.策略函数(poli ...

最新文章

  1. java校验ip格式_JAVA IP地址格式验证,使用正则表达式
  2. 五、(H3C)基于802.1x+AD+DHCP+NPS动态下发vlan 华三交换机配置
  3. otsu自适应阈值分割的算法描述和opencv实现,及其在肤色检测中的应用
  4. 为什么需要系统程序员来构建云和IT自动化基础
  5. LeetCode打卡 52八皇后Ⅱ53最大子序和54螺旋矩阵
  6. OO ALV 工具栏对于的功能码
  7. 云炬Android开发笔记 2-1项目初始化
  8. AMQP Connection 127.0.0.1:5672] ERROR [o.s.a.rabbit.connection.CachingConnectionFactory] CachingConn
  9. 容器技术Docker K8s 42 Serverless Kubernetes(ASK)详解-ASK应用管理
  10. NOIP2017错题
  11. 视频课程:CMOS模拟集成电路设计--已上线
  12. Flink 容错机制
  13. Maven异常:0.0.1-SNAPSHOT: Could not find artifact
  14. 女性每天喝酸奶的好处是什么?
  15. 记一次Linux文件系统引发的项目启动错误(war包没有问题只有指定目录启动报错)
  16. 理论篇如何学习硬件设计
  17. 跳转谷歌相册选择图片及视频
  18. ffmpeg生成dash点播
  19. 超赞!60种数据可视化图表使用场景及制作工具整理大全 !
  20. 如何优雅的消除代码里的NullPointerException!

热门文章

  1. PHP5中的魔术方法
  2. 转换实体类_yue-library 2.3.0发布,替换Db JavaBean转换方案,性能提升约300%+
  3. php5.5 sqlserver 2012,PHP连接SQLSERVER2012
  4. imx6 休眠 功耗 电流_无线物联网和可穿戴设备的低功耗电源测量挑战
  5. 【spring boot】【thymeleaf】SPEL调用静态方法和静态属性
  6. 【若依(ruoyi)】shiro 内置的过滤器(filter)
  7. 【git】【eclipse】记住密码/密码保存在哪里?
  8. el-drawer点击的时候为什么有边框_别再纠结背景墙边框的材料,这4种线条边框便宜又实用,简洁大方...
  9. 时间控件_Selenium时间控件的处理
  10. java中如何限制输入非空_项目中的参数限制、非空、以及集合中的验证,你真的会做吗(Java)...