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

DDPG:確定性 actor 遇上 critic

第一個真正可用的深度連續控制方法:讓 critic 的梯度回流進一個確定性 actor,並靠加噪聲來探索。

用一句話講核心想法

深度確定性策略梯度(Deep Deterministic Policy Gradient, DDPG)接過上一篇的 actor-critic 圖,問了一個很乾淨的問題:如果 critic Q(s,a) 能告訴我一個動作有多好,那為什麼不直接順著 Q 的坡度去改進 actor?把 actor 的輸出往讓 Q 上升的方向推就好。

這裡的 actor 是一個確定性策略(deterministic policy):輸入一個狀態,輸出恰好一個動作,沒有隨機性。正是這點讓我們能乾淨地微分——actor 吐出的是一個我們可以推動的數值。

確定性策略梯度

具體來說,actor 的更新用的是連鎖法則。確定性策略梯度(deterministic policy gradient)說:先取 Q 對動作的梯度(如果我把扭矩推一下,價值會怎麼變?),再把它穿過 actor 對其權重的梯度。把兩者合起來,就得到每個權重該移動的方向,讓 actor 選出的動作在 critic 眼裡分數更高。

\nabla_{\theta^\mu} J \approx \mathbb{E}_{s\sim\mathcal{D}}\Big[\,\nabla_a Q(s,a)\big|_{a=\mu(s)}\;\nabla_{\theta^\mu}\mu(s)\,\Big]

确定性策略梯度:将评论家对动作的梯度与行动者对其参数的梯度用链式法则相乘。

把评论家想成一片价值地形、行动者想成一颗弹珠:确定性策略梯度沿着评论家给出的坡度,把弹珠推向更高处。

交互式梯度下降:一个点沿着局部坡度在弯曲曲面上滚动。

離策略機制:回放與目標網路

DDPG 是離策略(off-policy)的,也就是說它能從自己舊版本蒐集到的資料中學習。每一筆轉移(狀態、動作、獎勵、下一個狀態)都被丟進一個回放緩衝區(replay buffer),訓練時從中隨機抽取小批次。這讓每一次得來不易的機器人互動被重複利用很多次——當每一步都意味著真實馬達磨損時,這點至關重要。

讓 critic 去追自己不斷變動的預測是不穩定的,所以 DDPG 為 actor 與 critic 各保留一份緩慢移動的副本——目標網路(target networks)——用來計算學習目標。DDPG 不是猛然複製權重,而是每一步把目標往現役網路移動極小的一個比例(一種軟更新,常叫 Polyak 平均)。目標走得慢,學習就穩。

\theta^{-} \leftarrow \tau\,\theta + (1-\tau)\,\theta^{-}, \qquad \tau \ll 1

软目标更新:目标网络每步只按一个很小的比例 tau 朝在线网络缓慢靠拢,而不是整体复制。

在策略沒有隨機性時如何探索

確定性 actor 對同一個狀態永遠回傳同一個動作,所以光靠它自己永遠不會嘗試新東西。DDPG 在蒐集資料時於動作之上加入探索噪聲。原始論文用的是 Ornstein-Uhlenbeck(OU)噪聲——一種隨時間相關、平滑漂移而非抖動的噪聲——因為相關的探索對有慣性的系統(例如機器人的腿)比較溫和。

for each step:
    a = actor(s) + noise          # explore
    a = clip(a, low, high)        # respect motor limits
    s2, r, done = env.step(a)
    buffer.add(s, a, r, s2, done)

    # learn from a random mini-batch
    batch = buffer.sample()
    y = r + gamma * critic_target(s2, actor_target(s2))   # target
    update critic to match Q(s, a) -> y                    # regression
    update actor along  dQ/da * da/dweights               # policy gradient
    soft_update(targets)
DDPG 的迴圈:帶噪聲行動、存起來,接著回歸 critic 並把 actor 往 Q 的上坡推。

DDPG 何時發光,何時破裂

DDPG 是個里程碑——第一個能在許多 MuJoCo 任務上,直接從原始動作價值(action-value)估計學到好策略的方法。但實務工作者很快發現它脆弱:結果會隨著隨機種子大幅擺盪,對超參數很挑剔,而且在困難任務上 critic 往往變得過度樂觀,把 actor 拖向那些紙上看起來很棒、現實中卻失敗的動作。

正是這種過度樂觀——加上第一篇講的動作飽和(action saturation)問題——成了下一個方法 TD3 要修的東西。