JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

策略梯度與演員-評論家方法

價值方法先學會每一步有多好,再貪心地行動。策略梯度反其道而行——它用梯度下降直接調整智能體的行為——而演員-評論家與 PPO 讓這一思路穩定到足以驅動真正的深度強化學習。

通往好智能體的兩條路

到目前為止你已經認識了價值這條路。在 Q-學習中你學到一個 Q 函數——為每個狀態-動作對給出一個數字,說明它有多好——然後透過挑選得分最高的動作來行動。策略,也就是智能體選擇動作的規則,從未被單獨訓練;它只是作為價值的一種貪心副產品冒出來。對於格子世界裡那種小而離散的動作集合,這套辦法運轉得很漂亮。

但設想一隻機械臂,要為七個關節中的每一個選擇一個力矩——任意實數。此時「選取 Q 值最高的動作」意味著在每一步都要在一個連續的七維空間中搜索。這種搜索彆扭、緩慢,往往根本無法精確完成。價值這條路悄悄地假設了:只要你知道分數,總能廉價地找到最佳動作。一旦這個假設破裂,我們就需要一個全然不同的思路。

另一條路是直接學習策略。我們不再為每個動作打分再讀出贏家,而是讓策略本身成為一個帶可調旋鈕的函數——通常是一個 神經網路,輸入一個狀態,輸出每個動作的機率(對於連續動作,則輸出一個用於採樣的分布的均值和寬度)。然後我們提出貫穿整個本階的那個問題:我該往哪個方向擰這些旋鈕,才能收集到更多 獎勵

策略梯度:有回報時就放大

這就是 [[policy-gradient|策略梯度]] 的核心把戲,而且妙不可言地直觀。讓智能體用當前策略跑完整整一幕,從它自己的機率中採樣動作。一幕結束時,看它掙到的總 回報。然後回過頭去調整網路,使得在好的一幕裡採取過的動作變得*更*可能,在壞的一幕裡採取過的動作變得*更不*可能。好的運行被強化;壞的運行被抑制。在成千上萬幕中重複這一過程,行為便會朝著任何能掙到獎勵的方向漂移。

從機制上說這不過又是 梯度下降——和前面各階裡每個神經網路背後的引擎一模一樣。損失被構造成:它的梯度會抬高每個動作的對數機率,按其後續回報的多少來縮放。某動作之後回報很大,就給一個大的「重複它」的推力;回報為負,就往反方向推。由於我們沿著真實採樣出來的軌跡走,這是一個高度 隨機的過程:每次更新都是來自一批親歷經驗的帶噪聲估計。

for each episode:
  run policy, record (state, action, reward) at each step
  R = total discounted return of the episode
  for each step t:
    nudge θ to raise log P(action_t | state_t) × R
# good episodes → their actions become more likely
REINFORCE,最簡單的策略梯度:每個動作的推力都按其後續回報來加權。

這套設計直接帶出兩個誠實的弱點。其一,你通常得跑完一幕(或一大段)才能更新,所以它很耗樣本、很慢。其二,整幕的回報是個粗糙的裁決:如果你走了三十步並贏了,這種樸素方法會把功勞*平均記給全部三十步*,連那被好棋挽救回來的三步爛棋也一樣算功。這種粗糙的功勞分配使梯度估計極其嘈雜——用行話說就是方差很高。馴服這份噪聲,正是下一個思路的用武之地。

演員-評論家:兩個網路,一支隊伍

對治高方差的辦法,是不再用原始的整幕回報來評判動作,而開始拿動作去和一個期望值作比較。我們保留策略網路——把它叫做演員,因為它負責選擇做什麼。然後再加上第二個網路,一個評論家,它學習一個 價值函數:對某個狀態通常能期望多少回報的估計。這正是 Q-學習那一篇裡同樣的價值思想,只是如今它退居配角,不再唱主角。

現在演員的更新變得更銳利了。它不再問「整幕好不好?」,而問「這個動作有沒有*比評論家在此處的預期更好*?」這個差值——實際結果減去評論家的預測——就是優勢。優勢為正的動作超出了預期,就被強化;優勢為負意味著它表現不及預期,就被壓低。減去評論家的估計起到了 基線的作用:它抵消掉了大部分噪聲,又不偏移我們移動的方向,於是梯度大大穩定下來。

再補一個誠實的細節:演員-評論家通常是 [[on-policy-off-policy|同策略]] 的。評論家評判的是演員*當前*的行為,所以一旦演員改變,舊經驗就過時了,通常會被丟棄。這與你可能見過的 深度 Q 網路正相反,後者是異策略的,能把舊記憶反覆回放很久。同策略學習更易於推理、更穩定,但更渴求新鮮資料——這是你為換取一個可直接訓練的策略而接受的交易。

PPO:別邁出你會後悔的步子

策略梯度有一種討厭的失敗模式。由於每次更新都是從帶噪聲的採樣經驗中估出來的,一次過於急切的步子就可能把策略推到某個糟糕之處。而且不像監督學習,你沒法直接退回去——智能體此刻會用這個壞掉的策略去收集*下一*批資料,於是單單一次糟糕的更新就能毒害隨後的一切。智能體可能崩潰,再也緩不過來。穩定策略學習的全部藝術,就在於邁的步子要大到足以取得進展,又小到永不跌下懸崖。

[[proximal-policy-optimization|近端策略優化]],即 PPO,是贏得整個領域的務實答案。它是一種演員-評論家方法,帶著一條自律的規矩:絕不讓單次更新把策略改動太大。PPO 盯著新動作機率與舊動作機率之間的比值,並把這個比值*裁剪*掉——如果一次更新試圖讓某動作比之前可能得多或不可能得多,裁剪就會給這麼做的回報設上限。策略可以自由改進,但只能在一個貼近它原處的信任域之內。保持「近端」——這就是它名字的全部含義。

  1. 用當前策略跑出一批經驗,記錄下狀態、動作和獎勵。
  2. 讓評論家估計每個狀態的價值,並算出每個所採取動作的優勢。
  3. 把演員朝優勢更高的動作更新——但裁剪機率比值,使任何一步都不會偏離太遠。
  4. 更新評論家,使其更準確地預測回報;丟棄已經過時的那批資料,然後循環。

它在哪裡現身——以及它不是什麼

策略方法正是 強化學習能越過棋盤遊戲、伸進雜亂的連續控制的原因:機器人行走、無人機飛行、靈巧的機械手。AlphaGo一脈的下棋系統把策略網路與搜索和 自我對弈結合起來,其後繼者則大量倚重策略梯度訓練。你還會在一個或許意想不到的地方認出 PPO:它正是 RLHF內部的主力優化器,而 RLHF 是用來把大語言模型對齊到人類偏好的技術。那裡的「策略」就是語言模型本身,「獎勵」則是一個學出來的、關於人們偏好什麼的模型。

對它的局限要保持誠實。這一切都不是智能體在「理解」它的任務;它只是在一個獎勵信號上做梯度下降,並會以零常識去追逐那個信號。哪怕獎勵只是稍有偏差,策略學習者也會樂呵呵地鑽這個空子——以你從未打算的方式攢分。這種失敗有個你會再次遇到的名字,獎勵駭客,它是關於強化學習「對齊」的大多數說法的、實實在在的具體根源。問題不在於一個工於心計的智能體;而在於一個字面意義上的優化器,它精確地照你所度量的去做,而非照你所意指的去做。

退一步看,地圖很清爽。價值方法學什麼是好的、然後貪心行動;策略方法直接學怎麼行動;演員-評論家把兩者融合;PPO 讓這種融合穩定到可以投入使用。有了這些,你就掌握了驅動幾乎全部深度強化學習的概念內核——本階的最後一篇,如今可以把這些零件組裝成在人類自己的遊戲中擊敗人類的那些系統了。