穩定訓練、數據高效,清華大學提出「流策略」強化學習新方法SAC Flow
本文介紹了一種用高數據效率強化學習算法 SAC 訓練流策略的新方案,可以端到端優化真實的流策略,而無需采用替代目標或者策略蒸餾。SAC FLow 的核心思想是把流策略視作一個 residual RNN,再用 GRU 門控和 Transformer Decoder 兩套速度參數化。SAC FLow 在 MuJoCo、OGBench、Robomimic 上達到了極高的數據效率和顯著 SOTA 的性能。
作者來自于清華大學和 CMU,通訊作者為清華大學教授丁文伯和于超,致力于強化學習算法和具身智能研究。
研究背景
流策略(Flow-based policy)最近在機器人學習領域十分熱門:它具有建模多峰動作分布的表達能力,且比擴散策略更簡潔好用,因此被廣泛應用于先進的 VLA 模型,例如 π_0、GR00T 等。想要跳出數據集的約束,進一步提高流策略的性能,強化學習是一條有效的路,已經有不少工作嘗試用 on-policy 的 RL 算法訓練流策略,例如 ReinFlow [1]、 Flow GRPO [2] 等。但當我們使用數據高效的 off-policy RL(例如 SAC )訓練流策略時總會出現崩潰,因為流策略的動作經歷「K 步采樣」推理,因此反向傳播的「深度」等于采樣步數 K。這與訓練經典 RNN 時遇到的梯度爆炸或梯度消失是相同的。
不少已有的類似工作都選擇繞開了這個問題:要么用替代目標避免對流策略多步采樣的過程求梯度 (如 FlowRL [3]),要么把流匹配模型蒸餾成單步模型,再用標準 off-policy 目標訓練 (如 QC-FQL [4])。這樣做是穩定了訓練,但也拋棄了原本表達更強的流策略本體,并沒有真正在訓練一個流策略。而我們的思路是:發現流策略多部采樣本質就是 sequential model ,進而用先進的 sequential model 結構來穩住訓練,直接在 off-policy 框架內端到端優化真實的流策略。

使用 off policy RL 算法訓練流策略會出現梯度爆炸。本文提出,我們不妨換一個視角來看,訓練流策略等效于在訓練一個 RNN 網絡(循環計算 K 次),因此我們可以用更高效現代的循環結構(例如 GRU,Transformer)。

- 論文鏈接:https://arxiv.org/abs/2509.25756
- 項目網站:https://sac-flow.github.io/
- 代碼倉庫:https://github.com/Elessar123/SAC-FLOW
核心思想:Flow rollout ≈ Residual RNN
把每一步的中間動作
作為隱狀態,
作為輸入,那么 Euler 積分
就等價于一個 residual RNN 的單步前向。于是對流策略的 K 步采樣過程進行反傳就,等價于對一個 RNN 網絡反傳!這也難怪以往的 off-policy 訓練會遇到不穩定的問題。既然如此,就把流策略中的速度網絡
換成為循環而生的現代的穩定結構:
- Flow-G(GRU,gated velocity) :給速度網絡加上 GRU 風格的門控結構 ,自適應決定「保留當前動作」還是「寫入新動作」,抑制梯度放大。
- Flow-T(Transformer, decoded velocity) :用 Transformer decoder 對「動作 - 時間 token」做 state-only cross-attention + 預歸一殘差 FFN ,每一步都在全局 state 語境下穩態細化;保持 Markov 性,不做時間位點之間的自回歸混合。

流策略的速度網絡參數化方式,從 sequential model 的視角進行展示。
對應的速度網絡參數化
- Flow-G: 用門控
去調和「保留
」 和「寫入候選
」:
這與 GRU 的更新過程一一對應。 - Flow-T: 給「動作 - 時間 token」與「全局 state token」分別編碼,然后在 decoder 里做 state-only cross-attention (自注意僅作對角 / 逐位置變換,不跨時間混合,為了保留 flow 模型的 Markov 性質),再用 pre-norm 和殘差 FFN 構成的多層 Decoder Layer ,最后線性投影到速度
。
我們的方法:SAC Flow
1.讓 SAC 真正能訓練流策略:noise-augmented 對數似然
在直接訓練 SAC Flow 之前,還有一個關于 SAC 的小問題需要解決。SAC 需要
做熵正則化,但確定性的 K 步采樣沒法直接給出可積的密度。因此,SAC Flow 在每步 rollout 里加高斯噪聲 + 配套漂移修正 ,保證末端動作分布不變,同時把路徑密度分解為單步高斯似然的連乘,從而得到可計算、可微的
。這樣,SAC 的 actor/critic loss 都可以直接用流策略多步采樣的對數似然來表示。
2.兩種訓練范式都能用
- From-scratch :對于 dense-reward 任務,SAC flow 可以 from scratch 直接訓練。
- Offline-to-online :對于 sparse-reward 且有示例數據的任務,SAC flow 支持先在數據集上預訓練,再進行在線微調。微調時,需要在 SAC actor 里加一個正則項目
。
訓練偽代碼如下:

實驗結果:穩定、快速、樣本效率高!

在 From-scratch 條件下,我們主要測試了 Mujoco 的環境上的表現。Flow-G 和 Flow-T 達到了 SOTA 的性能水平。同時可以發現,在稀疏獎勵任務中,from-scratch 是不夠的,需要使用 offline pretrain。

Offline-to-online 訓練結果。其中灰色背景下的前 1e6 step 是 offline 訓練,后 1e6 steps 是 online 微調。
From-scratch
- SAC Flow-T / Flow-G 在 Hopper、Walker2D、HalfCheetah、Ant、Humanoid、HumanoidStandup 上穩定更快收斂 ,最終回報更高。
- 相比擴散策略基線(如 DIME 、QSM ),Flow -based 方法普遍收斂更快。在此基礎上,SAC Flow 進一步超過 FlowRL (因為 FlowRL 使用 Wasserstein 約束限制了性能)。
- 在最難的 sparse-reward 任務中(如 Robomimic-Can、OGBench-Cube-Double),從零探索仍然很難,這也說明了 offline-to-online 訓練的必要性。
Offline-to-online
- 在 OGBench 的 Cube-Triple / Quadruple 等高難度任務中,SAC Flow-T 收斂更快,整體成功率領先或持平現有 off-policy 基線(FQL、QC-FQL )。
- 在 Robomimic benchmark 中,我們使用了較大的正則化約束限制,因此 SAC Flow 的表達能力受到限制,表現與 QC-FQL 接近。但在同等在線數據量下,我們的表現依然優于 on-policy 的基線算法 ReinFlow。
消融實驗:
1.穩定梯度,防止梯度爆炸
我們直接用 SAC 微調流策略(Naive SAC Flow),其梯度范數在反傳路徑上呈現爆炸趨勢 (綠色)。而 Flow-G / Flow-T 的梯度范數保持平穩(橙色、紫色)。對應地,SAC Flow-T 和 Flow-G 的性能顯著更優。

(a)不同采樣步上的梯度范數。(b) from-scratch 訓練中, Ant 環境下如果直接用 SAC 訓練流策略,會導致訓練崩潰。(c) 在 offline-to-online 訓練中,直接 SAC 訓練流策略依然效率較低,不夠穩定。
2.對采樣步數魯棒
SAC Flow 對 K (采樣步數)是魯棒的:在 K=4/7/10 條件下都能穩定訓練。其中 Flow-T 對采樣深度的魯棒性尤其強。

與類似工作的核心區別
- FlowRL 使用 Wasserstein-2 約束的替代目標。與之相比,SAC Flow 則直接端到端優化標準 SAC loss,避免「目標 - 模型錯位」。
- DIME / QSM 等擴散策略方法同樣使用了替代目標。
- FQL / QC-FQL 則把流策略首先蒸餾單步模型,然后再做 off-policy RL。相比之下,SAC Flow 不需要蒸餾為單步模型,保留了流模型的建模能力。
什么時候用 Flow-G?什么時候用 Flow-T?
- Flow-G :參數量更小、結構更簡潔,在需要快速收斂或計算預算有限的場景。
- Flow-T :當環境更復雜、需要更強的條件建模和深度時,Flow-T 的穩定性和上限更好。
結語
SAC Flow 的關鍵詞只有三個:序列化 、穩定訓練、數據高效。把流策略視作序列模型,進而能夠用 GRU / Transformer 的成熟經驗穩定梯度回傳。加上一些輔助技巧,我們可以直接使用 off-policy RL 的代表算法 SAC 來訓練流策略,從而實現數據高效、更快、更穩的收斂。后續,我們將繼續推動 SAC-flow 在真實機器人上的效果驗證,提升 sim-to-real 的魯棒性。



































