深度強化學習課程文件

深入探討策略梯度方法

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

深入探討策略梯度方法

全面瞭解

我們剛剛瞭解到,策略梯度方法旨在尋找引數θ \theta 最大化預期回報

其思想是我們有一個引數化的隨機策略。在我們的例子中,一個神經網路輸出動作的機率分佈。採取每個動作的機率也稱為動作偏好

以CartPole-v1為例

  • 輸入是一個狀態。
  • 輸出是該狀態下動作的機率分佈。
Policy based

我們使用策略梯度的目標是透過調整策略來控制動作的機率分佈,使好的動作(最大化回報的動作)在未來被更頻繁地取樣。 每次智慧體與環境互動時,我們都會調整引數,使好的動作在未來更有可能被取樣。

我們如何使用預期回報來最佳化權重呢

想法是,我們將在一個回合中讓智慧體進行互動。如果我們贏得了這個回合,我們認為所採取的每個動作都是好的,並且由於它們導致了勝利,因此未來必須更多地取樣它們。

因此,對於每個狀態-動作對,我們希望增加P(as)P(a|s):在該狀態下采取該動作的機率。如果我們輸了則降低。

策略梯度演算法(簡化版)如下所示

Policy Gradient Big Picture

現在我們對大局有了瞭解,讓我們深入探討策略梯度方法。

深入探討策略梯度方法

我們有隨機策略π\pi它有一個引數θ\theta。這個π\pi給定一個狀態,輸出動作的機率分佈

Policy

其中:πθ(atst)\pi_\theta(a_t|s_t)是智慧體選擇動作的機率ata_t從狀態sts_t給定我們的策略。

但是我們如何判斷我們的策略是否好呢? 我們需要一種方法來衡量它。為此,我們定義了一個分數/目標函式,稱為J(θ)J(\theta).

目標函式

目標函式 為我們提供了在給定軌跡(不考慮獎勵的狀態動作序列(與回合相反))的情況下智慧體的效能,並輸出預期累積獎勵

Return

我們來詳細說明一下這個公式

  • 預期回報(也稱為預期累積獎勵),是加權平均值(其中權重由P(τ;θ)P(\tau;\theta)給予),所有可能的回報值R(τ)R(\tau)可以取的值。
Return

-R(τ)R(\tau):來自任意軌跡的回報。為了獲取這個量並用它來計算預期回報,我們需要將其乘以每個可能軌跡的機率。

-P(τ;θ)P(\tau;\theta):每個可能軌跡的機率τ\tau(該機率取決於θ\theta因為它定義了它用於選擇軌跡動作的策略,這會影響所訪問的狀態)。

Probability

-J(θ)J(\theta):預期回報,我們透過將所有軌跡的機率(給定θ\theta )乘以該軌跡的回報來計算。

我們的目標是最大化預期累積獎勵,透過找到θ\theta 這將輸出最佳的動作機率分佈。

Max objective

梯度上升和策略梯度定理

策略梯度是一個最佳化問題:我們希望找到θ\theta的值,以最大化我們的目標函式J(θ)J(\theta),所以我們需要使用梯度上升。它是梯度下降的逆過程,因為它給出了J(θ)最陡峭的增加方向。J(θ)J(\theta).

(如果您需要複習梯度下降和梯度上升的區別,請檢視此文此文)。

我們的梯度上升更新步驟是θθ+αθJ(θ) \theta \leftarrow \theta + \alpha * \nabla_\theta J(\theta)

我們可以重複應用此更新,希望θ\theta 收斂到最大化J(θ)J(\theta).

的值。J(θ)J(\theta):

  1. 然而,計算

  2. 的導數存在兩個問題:我們無法計算目標函式的真實梯度,因為它需要計算每個可能軌跡的機率,這在計算上非常昂貴。因此,我們希望透過基於樣本的估計(收集一些軌跡)來計算梯度估計

Probability

我們還有另一個問題,我將在下一節(可選)中解釋。為了對這個目標函式進行微分,我們需要對狀態分佈進行微分,這被稱為馬爾可夫決策過程動力學。這與環境相關聯。它為我們提供了環境進入下一個狀態的機率,給定當前狀態和智慧體採取的動作。問題在於我們無法對其進行微分,因為我們可能不知道它。

Policy Gradient

幸運的是,我們將使用一個叫做策略梯度定理的解決方案,它將幫助我們將目標函式重新表述為一個可微分函式,而無需涉及狀態分佈的微分。

如果您想了解我們如何推匯出此公式來近似梯度,請檢視下一節(可選)。

Reinforce 演算法(蒙特卡洛 Reinforce)θ\theta:

Reinforce 演算法,也稱為蒙特卡洛策略梯度,是一種策略梯度演算法,它使用整個回合的估計回報來更新策略引數

  • 在一個迴圈中使用策略πθ\pi_\thetaτ\tau

  • 來收集一個回合使用該回合估算梯度

    Policy Gradient
  • g^=θJ(θ)\hat{g} = \nabla_\theta J(\theta)更新策略的權重

θθ+αg^\theta \leftarrow \theta + \alpha \hat{g}

-我們可以這樣解釋這次更新θlogπθ(atst)\nabla_\theta log \pi_\theta(a_t|s_t)ata_t從狀態sts_t是選擇動作(對數)機率的最陡峭增加方向ata_t。這告訴我們,如果想增加/減少在狀態s_t下選擇動作a_t的對數機率,我們應該如何改變策略的權重sts_t.

-R(τ)R(\tau):是得分函式

  • 如果回報高,它將提高(狀態,動作)組合的機率
  • 否則,如果回報低,它將降低(狀態,動作)組合的機率

我們也可以收集多個回合(軌跡)來估計梯度。

Policy Gradient
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.