文章目錄
- 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) πθ?(a∣s) 表示,稱作隨機性( 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) πθ?(a∣s) 來表示策略,即在狀態 s s s 下采取動作 a a a 的概率分布 p ( a ∣ s ) p(a|s) p(a∣s),其中 θ \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θ?(τ)?[t∑?r(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)} ?x?y=f(x)?x?f(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(θ)=s∈S∑?dπ(s)Vπ(s)=s∈S∑?dπ(s)a∈A∑?πθ?(a∣s)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(θ)?∝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)
這個公式描述了如何計算策略梯度,即策略參數 θ \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πθ?(a∣s) 的模型我們一般稱作 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(θ)=s∈S∑?dπ(s)Vπ(s)=s∈S∑?dπ(s)a∈A∑?πθ?(a∣s)Qπ(s,a)(9.12)
-
目標函數 J ( θ ) J(\theta) J(θ):
- J ( θ ) J(\theta) J(θ) 是策略 π θ \pi_\theta πθ? 的性能度量,表示在策略參數 θ \theta θ 下的期望回報。
-
狀態分布 d π ( s ) d^\pi(s) dπ(s):
- d π ( s ) d^\pi(s) dπ(s) 是在策略 π \pi π 下狀態 s s s 的穩態分布。它表示在無限時間步內,系統處于狀態 s s s 的概率。
- 通常通過馬爾可夫鏈的狀態轉移概率計算得到。
-
狀態值函數 V π ( s ) V^\pi(s) Vπ(s):
- V π ( s ) V^\pi(s) Vπ(s) 是在策略 π \pi π 下,從狀態 s s s 開始的期望回報。
- 定義為從狀態 s s s 開始,跟隨策略 π \pi π 所能獲得的期望回報。
-
動作值函數 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 π 繼續行動所能獲得的期望回報。
-
策略 π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ?(a∣s):
- π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ?(a∣s) 是策略 π \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(θ)=s∈S∑?dπ(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(θ)=s∈S∑?dπ(s)a∈A∑?πθ?(a∣s)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) πθ?(a∣s) 的加權和。
- 這一步利用了以下關系:
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)=a∈A∑?π(a∣s)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 各部分解釋
-
目標函數的梯度 ? θ J ( θ ) \nabla_\theta J(\theta) ?θ?J(θ):
- 目標是計算策略參數 θ \theta θ 的梯度,以便在策略優化中使用。
-
狀態分布 d π ( s ) d^\pi(s) dπ(s):
- d π ( s ) d^\pi(s) dπ(s) 是在策略 π \pi π 下,系統處于狀態 s s s 的穩態分布。
-
動作值函數 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 開始的期望回報。
-
策略 π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ?(a∣s):
- π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ?(a∣s) 是策略 π \pi π 在狀態 s s s 選擇動作 a a a 的概率。
6.2.2 逐步推導
-
初始形式:
? θ 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(θ)∝s∈S∑?dπ(s)a∈A∑?Qπ(s,a)?θ?πθ?(a∣s)
這是目標函數梯度的初始形式,我們希望計算期望回報的梯度。
-
引入對數梯度技巧:
? θ π θ ( 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) ?θ?πθ?(a∣s)=πθ?(a∣s)πθ?(a∣s)?θ?πθ?(a∣s)?=πθ?(a∣s)?θ?logπθ?(a∣s)
通過引入對數梯度技巧,將梯度轉換為對數的形式。這一步利用了對數函數的導數性質。
-
替換并簡化:
? θ 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(θ)∝s∈S∑?dπ(s)a∈A∑?πθ?(a∣s)Qπ(s,a)?θ?logπθ?(a∣s)
這里,我們將原始的梯度形式替換為對數梯度形式,進一步簡化表達式。
-
期望形式:
? θ 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πθ?(a∣s)]
最后一步,將求和形式轉換為期望形式,這樣可以更直觀地表示在策略 π θ \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) πθ?(a∣s) 的對數梯度的乘積的期望值。
- 策略改進:通過計算這個梯度,我們可以更新策略參數 θ \theta θ,使得期望回報 J ( θ ) J(\theta) J(θ) 最大化。
6.2.4 應用
這個公式在策略梯度方法(如REINFORCE算法)中至關重要,通過計算和使用這個梯度,我們可以不斷改進策略,以在給定環境中獲得更高的回報。
總結來說,該公式通過引入對數梯度技巧,將策略參數的目標函數梯度轉換為一個更加易于計算和理解的形式,使得在強化學習中策略優化變得更加高效和可行。
7 策略梯度算法的缺點
結合了策略梯度和值函數的 Actor-Critic \text{Actor-Critic} Actor-Critic 算法則能同時兼顧兩者的優點,并且甚至能緩解兩種方法都很難解決的高方差問題。可能讀者會奇怪為什么各自都有高方差的問題,結合了之后反而緩解了這個問題呢?我們再仔細分析一下兩者高方差的根本來源:
- 策略梯度算法是因為直接對策略參數化,相當于既要利用策略去與環境交互采樣,又要利用采樣去估計策略梯度,
- 而基于價值的算法也是需要與環境交互采樣來估計值函數的,因此也會有高方差的問題。
而結合之后呢, 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πθ?(a∣s)]?(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πθ?(at?∣st?)]?(10.2)
我們通常將 Actor 和 Critic 分別用兩個模塊來表示,即圖中的 策略函數( Policy )和價值函數( Value Function )。Actor 與環境交互采樣,然后將采樣的軌跡輸入 Critic 網絡,Critic 網絡估計出當前狀態-動作對的價值,然后再將這個價值作為 Actor 網絡的梯度更新的依據,這也是所有 Actor-Critic 算法的基本通用架構。