【小白看Paper,邊看邊惡補】Deepseek篇/ 2.2.1 — 補充(Critic Model 、GAE)
淺談Critic Model的推導,以及GAE的介紹
【小白看Paper,邊看邊惡補】Deepseek篇/ 2.2.1 — 補充(Critic Model 、GAE)

建議預備知識:
隨機變量、期望值、Policy Gradient、PPO
在Policy Gradient或者在PPO中,我們能發現不論是目標函數還是參數梯度估計式中,都存在著一個優勢函數A(s, a|𝜃)。

Policy Gradient中的參數梯度估計式
而這個函數的輸出,決定了目標函數的大小或者梯度更新的幅度與正負向。在Policy Gradient的推導中,我們的優勢函數是被這坨定義的:

然而,在LLM的RL訓練上,通常不會用這條式子來作為我們的優勢函數。取而代之的是利用一個神經網路的輸出,來取代這條計算式的輸出。換言之,優勢函數變成了一個迴歸任務的神經網路,這個神經網路模型,被稱為Critic Model。
Critic Model
優勢函數的本質
首先,我們先重新審視一下優勢函數的本質是什麼。
優勢函數是一個根據當前的決策模型,評估在狀態s下採取動作a,預期當下與未來可獲得累加獎勵的評價指標。式子中的b代表的就是一個baseline、標準,比這個標準高,我們就會說這個狀態與動作的組合預期很不錯哦,於是有正值的優勢。相反,如果比這個標準低,我們就會說這個組合預期不太好,於是有了負值的優勢。
所以我們可以這樣總結,優勢函數的本質是根據給定的決策模型以及狀態動作組合,與一個標準做比較,以此判斷這個狀態組合是好的組合還是不好的組合。
於是乎,為了滿足優勢函數的本質,我們需要幾個新玩意兒。但在那之前,我們還是先有幾個符號共識吧:
𝜋:表示的是決策函數,我們也可以稱它為決策模型、actor model。這個模型負責與環境進行互動、採樣。
𝜃:表示的是決策模型的參數,也是我們主要想優化的對象。
s:表示的是單一指定狀態
a:表示的是單一指定動作
r:表示的是單次獲得獎勵,是由一獎勵函數r(s, a)所獲得
狀態價值函數 State Value Function:V(s|𝜃)
狀態價值函數是一個根據模型與狀態,估計預期可獲得的累加獎勵的函數。在這裡我先這樣表示
V( s | 𝜋_𝜃 )∈ℝ
其輸出是個純量,表示的是可獲得累加獎勵的估計值。
打個比方,假設我們用actor model:𝜋 與環境互動一次,而有了一個完整的trajectory,同時我們記錄了每一步所獲得的reward,並如下表示著:
{(s1, a1, r1), (s2, a2, r2), (s3, a3, r3)} ∧ s1 ≠ s2 ≠ s3
那根據狀態價值函數的定義,並且不考慮折扣因子,我們會有
V(s1 | 𝜋) = r1 + r2 + r3
V(s2 | 𝜋) = r2 + r3
V(s3 | 𝜋) = r3
透過這個例子,我們大致了解了「預期可獲得的累加獎勵」的具體含義是什麼意思了。然而別忘了,由於在給定狀態s下,模型𝜋採取的動作A是一種隨機變量,其概率分佈是由模型𝜋與狀態s共同決定的。換句話說,即便在同樣的狀態下,也不能保證每次的採樣結果會是相同的。因此我們才會說,狀態價值函數是一個「估計」的函數。
打個比方,假設我們有2種動作{a𝛼, a𝛽},同時我們有3種狀態{s𝛼, s𝛽, s𝛾},接著我們透過actor model 𝜋 與環境互動三次,有了四個完整的trajectory,並記錄了每一步所獲得的reward,如下:
{(s𝛼, a𝛼, 0), (s𝛾, a𝛼, 1)}
{(s𝛼, a𝛼, 0), (s𝛾, a𝛼, 1)}
{(s𝛼, a𝛼, 0), (s𝛾, a𝛼, 1)}
{(s𝛼, a𝛽, -0.4), (s𝛽, a𝛽, 0) ,(s𝛾, a𝛼, 1)}
這時,狀態價值函數會有下面的結果:
V(s𝛼 | 𝜋) = (1 + 1 + 1 + 0.6)/4 = 0.9
V(s𝛽 | 𝜋) = 1
V(s𝛾 | 𝜋) = (1 + 1 + 1 + 1)/4 = 1
在這個例子裡,可以觀察到狀態s𝛼的未來累加獎勵在某一次的互動中被扣了0.4,導致狀態s𝛼的累加獎勵的期望被降低了,最終狀態價值函數值被降低了0.1。
透過這個例子,我們可以很好的理解到,狀態價值函數其實就是一個估計值,估計什麼呢?其估計的就是下面這個期望值:
𝔼[從狀態s到互動結束,可獲得的累加獎勵 |𝜋 ]
狀態價值函數的計算:MC v.s. TD
在做價值函數的計算時,有分2種計算方式,分別是Monte-Carlo (MC)式的計算,以及Temporal-difference (TD)式的計算。
假設我們想計算狀態s的累加獎勵期望值,而經過互動後,有N個包含了特定狀態s的trajectory,我們令
s_{n, t_s}:表示特定狀態s,其在第n個trajectory中第t_s步採樣得到;
T_n:表示第n個trajectory的總步數
則根據2種不同的計算方式,我們有價值估計函數V(s | 𝜃):
Monte-Carlo (MC):

Temporal-difference (TD):

熟悉演算法或者Leetcode,會發現TD有種遞歸的味道。
這裡就不特別對式子做解釋了,我們直接透過例子來看兩者之間的差異。
假設有4個trajectory:
{(s_a, r=0), (s_b, r=0)}
{(s_b, r=1)}
{(s_b, r=1)}
{(s_b, r=0)}
在這個例子中,由於s_b在每個trajectory裡都是最後一個state,所以不論是MC還是TD,V(s_b|𝜋)都是 2/4 也就是 1/2。真正會發生MC與TD間的差異在於V(s_a|𝜋)的計算。
首先,我們可以觀察到s_a只有在第一個trajectory中有被抽樣到。因此不論採用MC或者TD,我們可以只看第一個trajectory來進行計算。
如果根據MC的定義,則V(s_a|𝜋)的結果如下:
V(s_a|𝜋) = (0 + 0) = 0
而根據TD的定義,則V(s_a|𝜋)的結果如下:
V(s_a|𝜋) = 0 + V(s_b|𝜋) = 0 + 1/2 = 1/2
可以發現,透過MC計算出的V值,與透過TD計算出的V值,在某些場景下,會存在差異。
狀態-動作價值函數 State-Action Value Function:Q(s, a | 𝜋)
介紹完狀態價值函數 V function後,接下來要介紹的是狀態-動作價值函數state-action value function,又常被稱作Q function。Q function跟前者的概念很類似,只是這次除了指定了狀態外,也指定了特定動作。Q function會根據指定的狀態與動作,輸出累加獎勵的期望值估計值。
由定義上的差異,我們可以這樣看待V function 與 Q function:
V function — 在特定狀態下,期望獲得的累加獎勵;
Q function — 在特定狀態下 + 採取特定動作,期望獲得的累加獎勵;
用V-function表示Advantage function
在了解了Q-function與V-function的概念與用途後,我們就可以用這2個function,作為新的advantage function。為了方便理解,這邊先上在policy gradient中,我們用到的一條估計梯度的式子:

在這條式子裡,Advantage function指的是中間的這一部分,即:

我們很直觀的理解到,這個advantage function右式裡的左半部分,體現的是在當前狀態s下,採取特定動作a後,能獲得的累加加權獎勵;而右半部分的b代表的是一個baseline,是用來判斷左半部分的累加加權獎勵是相對好還是相對差,在實務上,b常常會被設為樣本獎勵的平均值。

如果結合剛剛關於價值函數的結論來看待這個式子,其實左半部分的式子,體現的就是Q-function,而右半部分的baseline b,則可以改以V-function作為新的baseline。於是,我們將整個advantage function改寫成:

有了這條式子,我們的advantage function變成了兩個function的輸出差,而這兩個function,我們可以分別各自用一個可訓練的神經網路替換。
接下來的問題是,如果Q跟V各自訓練一個神經網路,那就代表需要額外訓練兩個神經網路,是不是有辦法只訓練一個神經網路就好呢?
於是就有人想到,我們其實可以將Q-function,用V-function來表示。
根據定義,Q-function是:在當前狀態s下,採取特定動作a後,期望能獲得的累加加權獎勵。從時間步上來看,第t步在狀態s_t採取動作a_t的Q-value,是不是等於第t步根據狀態s_t與動作a_t所獲得的reward,再加上下一步,也就是t+1步的狀態s下,期望獲得的累加加權獎勵?按照這個想法,我們有了下式:

其中gamma表示的是折扣因子。在將Q-function成功改以V-function表示後,整個advantage function又可以進一步改寫成:

到這裡,我們成功將優勢函數成功改寫成一個只需要reward-function以及V-function的函數。而這個新的advantage function,被稱為Temporal Difference Error,TD誤差。
TD誤差(Temporal Difference Error)
我們可以這樣看待TD誤差,它是一種衡量當前動作的「意外性收益」的估計方式。從邏輯上去試著理解的話,可以這樣想:V本身就是一個對未來收益的估計,那當我們越接近未來時,我們的不確定性少了,按理來說,這個估計就應該越精準。
就像天氣預報一樣,我們在Day-1預測Day-3的天氣,跟在Day-2預測Day-3的天氣,後者的精準度肯定會高於前者。

帶著這樣的思路,我們重新審視TD誤差,可以發現,減號前的部分,代表的是在t+1步對從第t步開始,能獲得的累加加權獎勵的預測,而減號後的部分,則代表的是在第t步,對從第t步開始,能獲得的累加加權獎勵的預測。那減號前的部分,勢必會比減號後的部分,更接近事實。
Critic Model的訓練
我們用一個NN模型來作為我們的價值函數V(s|𝜋),這個NN又被稱作Critic Model。我們希望透過訓練,能將這個價值函數輸出的估計值,越接近實際期望越好。
在TD誤差裡,我們了解到,TD誤差的減號前項,因為多了一個時間步,按理會比後項越靠近真實。因此我們將減號前項視為目標值,並將前後項的差視為誤差,並以此定義了損失函數。(事實上,我們可以直接將整個獎勵函數即TD誤差作平方計算,作為我們的損失函數)
有了損失函數,那我們就可以透過梯度下降來更新Critic Model的參數啦。
GAE
TD誤差雖然提供了一種變異性小的優勢估計方式,但其存在偏差,因為它依賴於當前的價值估計來更新未來的價值估計(即Bootstrapping)。
Generalized Advantage Estimation (GAE)是一種將不同步長的TD誤差做加權組合後,的一種估計優勢的方式。
首先,我們用𝛿_t表示第t步的TD誤差,即:

接著,GAE定義了優勢A_t為:

其中𝜆∈[0, 1]是一參數,當其越接近1,相當於參考越多未來的TD誤差,優勢的計算越接近MC的計算方式。反之,當𝜆越接近0,相當於未來的TD誤差影響越小,計算越接近TD的計算方式。
根據這條式子,我們能從第T-1步的優勢,一路回推到第0步的優勢。這個透過參數𝜆平衡變異與偏差之間的特性,就是GAE計算優勢的方式。而GAE也被廣泛運用到目前多數的RL相關研究中,其中包括PPO。
메타데이터
- post_id
- 37dbce9ea64f
- slug
- 小白看paper-邊看邊惡補-deepseek篇-2-2-1-補充-critic-model-gae-37dbce9ea64f
- url
- https://medium.com/@yuhsien7831/%E5%B0%8F%E7%99%BD%E7%9C%8Bpaper-%E9%82%8A%E7%9C%8B%E9%82%8A%E6%83%A1%E8%A3%9C-deepseek%E7%AF%87-2-2-1-%E8%A3%9C%E5%85%85-critic-model-gae-37dbce9ea64f
- canonical_url
- https://medium.com/@yuhsien7831/%E5%B0%8F%E7%99%BD%E7%9C%8Bpaper-%E9%82%8A%E7%9C%8B%E9%82%8A%E6%83%A1%E8%A3%9C-deepseek%E7%AF%87-2-2-1-%E8%A3%9C%E5%85%85-critic-model-gae-37dbce9ea64f
- author_url
- https://medium.com/@yuhsien7831
- status
- ok
- fetched_at
- 2026-06-12 18:14:10