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

Soft Actor-Critic:獎勵好奇心

把熵加進目標函數,智能體就學會保持彈性。SAC 把這個想法配上一個巧妙的梯度技巧與一個會自動調整的旋鈕——於是成了預設選擇。

新的目標:成功且保持隨機

DDPG 與 TD3 只最大化期望獎勵,沒別的。Soft Actor-Critic(SAC)改變了目標函數本身。它最大化的是獎勵加上策略的熵——也就是動作選擇有多隨機的一種度量。這就是最大熵強化學習目標(maximum-entropy RL objective):在任務允許的範圍內盡量不可預測,同時盡可能成功。

J(\pi)=\sum_{t}\mathbb{E}_{(s_t,a_t)\sim\rho_\pi}\!\left[\,r(s_t,a_t)+\alpha\,\mathcal{H}\big(\pi(\cdot\mid s_t)\big)\right]

SAC 的最大熵目標:在獎勵之外再加上由溫度 alpha 加權的策略熵,一起最大化。

為什麼要獎勵隨機性?因為一個被推著保持寬廣的策略會自己持續探索,抗拒塌縮到單一脆弱的行為上,而且常常能找到解決任務的多種方式。這是把熵正則化(entropy regularization)從附帶獎勵提拔成目標函數裡的一等公民。

一個隨機、被壓扁的 actor

要有熵,SAC 的 actor 就必須是一個隨機策略(stochastic policy)——它輸出的是動作上的一個分布,而不是單一動作。標準選擇是被壓扁的高斯策略(squashed Gaussian policy):網路輸出一個均值與一個標準差,你從這個高斯分布抽樣,再把樣本通過 tanh 折進動作的上下限內。

tanh 壓扁讓動作保持合法,但會扭曲機率,所以 SAC 在計算熵時加上一個小修正來補償它。這是一段已知的帳務工作——值得標出來,因為忘掉它是個經典的實作 bug。

重參數化梯度

現在有個謎題:你要怎麼穿過一個隨機樣本取梯度?如果 actor 抽樣它的動作,抽樣這一步似乎會擋住梯度。解法是重參數化梯度(reparameterization gradient):把動作寫成 均值 + 標準差 × epsilon,其中 epsilon 是從標準高斯抽出的固定噪聲。隨機性現在住在 epsilon 裡,而它沒有參數,於是梯度能順暢地流過網路產生的均值標準差

重參數化技巧讓梯度能穿過隨機取樣——正是 SAC 從變分自編碼器借來的同一思想。

變分自編碼器:編碼器映射到隱變數分布,取樣後再由解碼器重建。

SAC 也借用了 TD3 的裁剪雙 Q(clipped double-Q):它訓練兩個 critic,目標裡取它們的最小值,理由同樣是對抗高估。前幾篇的零件持續帶來回報。

自動調整溫度

大家最討厭調的那個超參數就是溫度 alpha——太高智能體就亂揮,太低它就提早塌縮。解法是溫度自動調整(automatic temperature tuning):不固定 alpha,改成固定一個目標熵(你想要的隨機程度,常依動作維度數來設定),讓梯度下降自己調整 alpha 來達到它。整個訓練過程中,智能體會自動維持你要求的探索程度,不多不少。

J(\alpha)=\mathbb{E}_{a_t\sim\pi}\!\left[-\alpha\big(\log\pi(a_t\mid s_t)+\bar{\mathcal{H}}\big)\right]

溫度的自動調節:調整 alpha,使策略的熵保持在目標水準 bar-H 附近。

# SAC actor update (reparameterized)
eps = randn_like(mean)
a = tanh(mean + std * eps)             # reparameterized, bounded sample
logp = gaussian_logprob(mean, std, ...) - tanh_correction(a)
q = min(critic1(s, a), critic2(s, a)) # clipped double-Q
actor_loss = (alpha * logp - q).mean()        # maximize  q - alpha*logp

# temperature follows a target entropy
alpha_loss = -(log_alpha * (logp + target_entropy).detach()).mean()
SAC 的 actor 最大化 價值 減去 以 alpha 加權的對數機率;alpha 自動調整到一個目標熵。

為什麼 SAC 成了預設選擇

SAC 是離策略的(所以樣本效率高,重複利用回放緩衝區),跨種子穩定,又因為溫度自動化而大致免去了瑣碎的調參。在 MuJoCo 套件上它持平或勝過 TD3,同時更穩健。對今天大多數新的連續控制問題來說,SAC 是合理的第一個嘗試對象。