日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Policy Optimization-强化学习业界手册

發布時間:2024/9/15 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Policy Optimization-强化学习业界手册 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 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=0T?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=0T?(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=0T?(?θ?logP(st+1?st?,at?)+?θ?logπθ?(at?st?))=t=0T??θ?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=0T??θ?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^?=D1?τD?t=0T??θ?logπθ?(at?st?)R(τ),

其中∣D∣|\mathcal{D}|DD\mathcal{D}D 中軌跡τ\tauτ的個數(here, NNN).

最后一個表達式是我們想要的可計算表達式的最簡單版本。 假設我們以可計算出 ?θlog?πθ(a∣s)\nabla_{\theta}\log\pi_{\theta}(a | s)?θ?logπθ?(as) 的方式表示我們的策略,并且如果是在能夠收集軌跡數據集的環境中,我們可以計算策略梯度并采取更新步驟。

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.ExPθ???θ?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} 00?=?θ?x?Pθ?(x)=x??θ?Pθ?(x)=x?Pθ?(x)?θ?logPθ?(x)=ExPθ???θ?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=0T??θ?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=0T??θ?logπθ?(at?st?)t=tT?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=tT?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=0T??θ?logπθ?(at?st?)(t=tT?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=0T??θ?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=tT?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=tT?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-强化学习业界手册的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩精品在线视频免费观看 | 日日噜噜噜 | 日韩一区二区三区视频在线 | 在线免费看黄色 | 国产精品国产三级国产aⅴ9色 | 日本我不卡 | 亚洲第一色在线 | 91成人精品一区在线播放 | 亚洲日批 | 久久久久久久久网站 | 日韩精品――色哟哟 | 国产综合无码一区二区色蜜蜜 | 久久久久久一级片 | 精品九九九九九 | 在线免费观看黄网站 | 亚洲欧洲日韩 | 欧美一级淫片免费视频黄 | 色5566| 女人性高潮视频 | 日韩av线上 | 成人黄色一级 | 国产香蕉视频在线播放 | 欧美 亚洲 视频 | 久久精品6| 青青青视频免费观看 | 丝袜 亚洲 另类 欧美 重口 | 妖精视频一区二区 | 久久综合国产 | 69av片| 日韩欧美性视频 | 蜜臀av在线免费观看 | 日韩福利网 | 日韩国产一区 | 亚洲国产黄色av | 国产伦理在线观看 | 美女扒开尿口给男人看 | 久久99精品久久久久久园产越南 | 日韩精品三级 | 日韩欧美视频网站 | 五月婷婷开心 | 777片理伦片在线观看 | 成人在线小视频 | 福利免费视频 | 麻豆社| 欧美系列在线观看 | 欧美日韩在线观看视频 | 欧美精品福利 | 无码人妻一区二区三区免费 | 2023天天操| 日本免费一区二区三区四区 | 欧洲免费毛片 | 欧美日韩精品一区二区在线观看 | 黄色网址视频 | 欧美特级视频 | 手机看片1024日韩 | 免费观看理伦片在线播放视频软件 | 国产白丝一区二区三区 | 91丨九色丨蝌蚪丨老版 | 国产人妻一区二区 | 欧洲做受高潮欧美裸体艺术 | av永久免费观看 | 窝窝午夜视频 | 伊人蕉久影院 | 性中文字幕 | 午夜免费剧场 | 99国产视频在线 | 先锋资源av网 | 久热精品视频在线播放 | 亚洲三区在线观看无套内射 | 色97色| 高跟鞋和丝袜猛烈xxxxxx | 日韩在线www | 黄色资源网站 | 91精品国产成人 | 日韩中文字幕免费视频 | 欧美熟妇交换久久久久久分类 | 69国产精品视频免费观看 | 日韩日日夜夜 | 91午夜理伦私人影院 | 中国大陆高清aⅴ毛片 | 色噜噜av| 蜜臀av性久久久久蜜臀aⅴ四虎 | 老头老太做爰xxx视频 | 中文字幕日韩久久 | 免费一级肉体全黄毛片 | 亚洲一区二区不卡视频 | 麻豆网站免费观看 | 看特级毛片 | 中文字幕第一页在线播放 | 日本一区二区三区久久久久 | 色呦呦日韩精品 | 天天看片中文字幕 | 日本三级网站在线观看 | 欧美在线精品一区二区三区 | 欧美午夜一区 | 亚洲激情一区二区三区 | 亚洲精品视频观看 | 在线免费观看毛片 | 手机看片亚洲 |