No date
Diffusion Policy | Visuomotor Policy Learning via Action Diffusion
快速解釋
這篇論文提出 Diffusion Policy,把 robot visuomotor policy 直接表示成一個條件式 action diffusion process。給定最近一段 observation history,policy 不是一次性回歸出單一步動作,而是從高斯噪聲開始,透過多步 denoising 逐步生成一整段未來 action sequence,然後只執行前面幾步,再根據新的觀測重新規劃。
這個設計解決了 robot imitation learning 裡幾個很難同時兼顧的問題:
- demonstration 常常是多峰的,單一 regression policy 很容易平均化不同策略,輸出無效動作
- 長時間動作需要 temporal consistency,但單步 policy 容易抖動或在 mode 之間來回切換
- 高維 action sequence 很難用傳統 implicit policy 穩定取樣
- 真實機器人控制需要 closed-loop re-planning,同時又不能讓規劃變得太慢
作者的核心結論是:把 policy 做成 diffusion model 後,multimodal action distribution、長序列規劃與訓練穩定性這三件事可以同時成立。論文在 4 個 benchmark、12 個 robot manipulation task 上都顯示穩定優勢,平均提升約 46.9%。
問題設定
這篇論文處理的是 behavior cloning / imitation learning 下的 robot visuomotor policy learning。資料是示範軌跡,而不是 reward supervision。與一般 supervised regression 不同,機器人動作預測有幾個額外難點:
- 多峰性:同一個 observation 下,可能存在多種都合理的操作方式,例如從左邊或右邊繞過障礙物。
- 序列相關性:動作不是獨立點,而是要連續、平滑、具時間一致性。
- 高精度與閉環控制:機器人需要根據最新觀測持續修正,但又不能因為頻繁重新規劃而失去長期結構。
- 高維輸出:如果直接預測整段 action sequence,輸出維度會很高,很多方法會變得難訓練或難取樣。
論文把在時間點 t 的輸入與輸出形式化為 observation history 與 action horizon:
其中:
- T_o 是 observation horizon
- T_p 是 action prediction horizon
- T_a 是實際執行的 action execution horizon
policy 的目標不是只預測單一動作,而是學習條件分佈:
在實際控制時,policy 會輸出整段未來動作,但只執行前 T_a 步,再重新觀測與規劃。這就是論文所強調的 receding horizon control:它在長序列一致性與即時反應之間取得折衷。
核心想法
1. 用 diffusion model 表示 action distribution
傳統 explicit policy 例如單一 Gaussian regression、GMM,通常難以忠實表示複雜的 multimodal action distribution;而 implicit energy-based policy 雖然比較有表達能力,但推論與訓練往往更不穩定。
Diffusion Policy 的選擇是:直接在 action space 上學一個 conditional denoising process。換句話說,policy 不直接輸出 action,而是學會一個「如何從 noisy action 逐步修正到合理 action」的向量場。這帶來兩個直接好處:
- 能自然表示多峰分佈
- 生成過程本身就包含迭代修正,因此比單步回歸更適合高維 action sequence
2. 不是預測單步 action,而是預測整段 action sequence
這篇論文非常關鍵的一點是:Diffusion Policy 並不是 diffusion over single action,而是 diffusion over action sequence。這讓模型可以在同一次生成中同時考慮短期與中期動作關係。
作者指出,這可以顯著改善兩類問題:
- temporal consistency:如果每一步各自獨立抽樣,連續動作可能落在不同 mode,導致抖動或路徑不一致
- idle action robustness:teleoperation 示範裡常有暫停或微動作,單步 policy 容易過度擬合這些停頓,sequence policy 則更容易辨識其在整體任務中的位置
3. 視覺資訊作為 conditioning,而不是 joint diffusion 的一部分
作者沒有把 observation 與 action 一起做 joint diffusion,而是只對 action sequence 做 diffusion,讓 observation history 作為 conditioning signal。這點和把整條 trajectory 一起建模的方法不同。
這樣做的好處是:
- inference 時只需要抽樣 action,不需要連未來 observation 一起生成
- visual feature 可以先抽出一次,再重複提供給 denoiser
- 計算量顯著下降,更容易做到 real-time control
4. 用 receding horizon control 把 long-horizon planning 與 closed-loop feedback 結合起來
如果只預測短期單步動作,policy 反應很快,但不容易維持長時程一致性;如果一次生成太長的完整軌跡,則雖然全局性更好,但對最新觀測的反應會太慢。
Diffusion Policy 的做法是折衷:
- 每次生成一段未來 action sequence
- 只執行前面一小段
- 很快再根據最新 observation 重新生成下一段
因此它既保有長序列規劃能力,又不失去閉環修正能力。
5. 用 score-based 建模換取比 implicit EBM 更穩定的訓練
論文特別把 Diffusion Policy 與 IBC 這類 implicit energy-based policy 做對比。兩者都想要表示複雜 action distribution,但 IBC 需要經過 EBM 的 normalization constant 近似與 negative sampling,這在實作上容易造成不穩定。
Diffusion Policy 則改成直接學 score function,也就是 log-density 對 action 的梯度。這樣訓練與推論都不需要顯式處理 intractable partition function,因此穩定性明顯更好。
6. 實作層面的三個關鍵設計
作者認為要讓 diffusion policy 真正能在真實機器人上好用,需要三個工程上很重要的補強:
- closed-loop action sequences:把 diffusion sequence prediction 與 receding horizon 控制結合
- visual conditioning:只把視覺作為條件,降低每一步 denoising 的成本
- time-series diffusion transformer:在高頻率動作變化任務上減少 CNN backbone 的 over-smoothing
關鍵公式
1. DDPM 的基本 denoising update
論文先從一般 DDPM 出發,將樣本生成寫成多步 denoising:
這裡的重點是:模型不直接預測最終輸出,而是預測「當前 noisy sample 該往哪個方向被修正」。
2. 將 denoising 解讀成 noisy gradient descent
作者把上式解讀成一種帶噪聲的梯度下降:
在這個觀點下,noise prediction network 可以被理解成某種 gradient field 的近似器。也就是說,Diffusion Policy 不是直接輸出 action,而是在 action space 上反覆做「朝合理解靠近」的更新。
3. 一般 DDPM 的訓練損失
標準 diffusion 的訓練目標是從帶噪樣本中恢復噪聲:
這個目標等價於讓模型學會資料分佈附近的 score 結構。
4. 將 diffusion 套用到 action sequence 並加上 observation conditioning
在 Diffusion Policy 裡,變數 x 被 action sequence A_t 取代,並且 denoising 過程要條件化在 observation history O_t 上,因此推論式變成:
這就是整個 Diffusion Policy 最核心的公式:模型從 noisy action sequence 開始,反覆利用 observation-conditioned denoiser 把它推向可執行的未來動作序列。
5. 對應的 conditional training loss
條件式版本的訓練損失寫成:
也就是說,模型學的是:在看到 observation history 的前提下,如何把加了噪聲的動作序列還原成合理示範。
6. 用 score function 解釋訓練穩定性
論文把 implicit policy 的能量模型寫成:
這類模型的麻煩在於 normalization constant:
通常不可直接計算,因此必須依賴近似或負樣本估計。
Diffusion Policy 則改學 score function:
由於對 action 的梯度而言,normalization constant 對 action 的導數為零,因此模型不需要顯式估計它。這也是作者用來解釋 Diffusion Policy 比 IBC 更穩定的重要觀點。
模型結構
1. 輸入與輸出
在時間點 t,模型輸入最近 T_o 步觀測,輸出長度為 T_p 的 action sequence。實際控制時只執行前 T_a 步,之後再重新觀測與規劃。
這個結構同時把 policy 分成兩層:
- 生成層:利用 diffusion 生成一整段動作
- 控制層:利用 receding horizon 只執行最前面的一小段
2. Visual encoder
對 image-based policy,作者使用 end-to-end 訓練的視覺編碼器,把影像序列編成 observation embedding。實作上使用 ResNet-18,並做兩個重要修改:
- 用 spatial softmax 取代 global average pooling,以保留空間資訊
- 用 GroupNorm 取代 BatchNorm,以配合 DDPM 常用的 EMA 訓練方式並提升穩定性
多個 camera view 會先各自編碼,再組合成最終的 observation feature。
3. Diffusion denoiser backbone
論文實作了兩種 noise prediction backbone: