HWC
← Note

No date

Diffusion Policy | Visuomotor Policy Learning via Action Diffusion

PaperDiffusion

快速解釋

這篇論文提出 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:

Ot=(otTo+1,,ot),At=(at,at+1,,at+Tp1).O_t = (o_{t-T_o+1}, \ldots, o_t), \qquad A_t = (a_t, a_{t+1}, \ldots, a_{t+T_p-1}).

其中:

  • T_o 是 observation horizon
  • T_p 是 action prediction horizon
  • T_a 是實際執行的 action execution horizon

policy 的目標不是只預測單一動作,而是學習條件分佈:

p(AtOt).p(A_t \mid O_t).

在實際控制時,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:

xk1=αk(xkγkϵθ(xk,k)+σkξ),ξN(0,I).x_{k-1} = \alpha_k \Bigl(x_k - \gamma_k \, \epsilon_\theta(x_k, k) + \sigma_k \, \xi\Bigr), \qquad \xi \sim \mathcal{N}(0, I).

這裡的重點是:模型不直接預測最終輸出,而是預測「當前 noisy sample 該往哪個方向被修正」。

2. 將 denoising 解讀成 noisy gradient descent

作者把上式解讀成一種帶噪聲的梯度下降:

x=xγE(x).x' = x - \gamma \, \nabla E(x).

在這個觀點下,noise prediction network 可以被理解成某種 gradient field 的近似器。也就是說,Diffusion Policy 不是直接輸出 action,而是在 action space 上反覆做「朝合理解靠近」的更新。

3. 一般 DDPM 的訓練損失

標準 diffusion 的訓練目標是從帶噪樣本中恢復噪聲:

L=MSE(ϵ(k),ϵθ(x0+ϵ(k),k)).L = \operatorname{MSE}\bigl(\epsilon^{(k)}, \epsilon_\theta(x_0 + \epsilon^{(k)}, k)\bigr).

這個目標等價於讓模型學會資料分佈附近的 score 結構。

4. 將 diffusion 套用到 action sequence 並加上 observation conditioning

在 Diffusion Policy 裡,變數 x 被 action sequence A_t 取代,並且 denoising 過程要條件化在 observation history O_t 上,因此推論式變成:

Atk1=αk(Atkγkϵθ(Ot,Atk,k)+σkξ),ξN(0,I).A_t^{k-1} = \alpha_k \Bigl(A_t^k - \gamma_k \, \epsilon_\theta(O_t, A_t^k, k) + \sigma_k \, \xi\Bigr), \qquad \xi \sim \mathcal{N}(0, I).

這就是整個 Diffusion Policy 最核心的公式:模型從 noisy action sequence 開始,反覆利用 observation-conditioned denoiser 把它推向可執行的未來動作序列。

5. 對應的 conditional training loss

條件式版本的訓練損失寫成:

L=MSE(ϵ(k),ϵθ(Ot,At0+ϵ(k),k)).L = \operatorname{MSE}\bigl(\epsilon^{(k)}, \epsilon_\theta(O_t, A_t^0 + \epsilon^{(k)}, k)\bigr).

也就是說,模型學的是:在看到 observation history 的前提下,如何把加了噪聲的動作序列還原成合理示範。

6. 用 score function 解釋訓練穩定性

論文把 implicit policy 的能量模型寫成:

pθ(ao)=exp(Eθ(o,a))Z(o,θ).p_\theta(a \mid o) = \frac{\exp\bigl(-E_\theta(o,a)\bigr)}{Z(o,\theta)}.

這類模型的麻煩在於 normalization constant:

Z(o,θ)=exp(Eθ(o,a))da,Z(o,\theta) = \int \exp\bigl(-E_\theta(o,a)\bigr) \, da,

通常不可直接計算,因此必須依賴近似或負樣本估計。

Diffusion Policy 則改學 score function:

alogp(ao)=aEθ(a,o)alogZ(o,θ)ϵθ(a,o).\nabla_a \log p(a \mid o) = -\nabla_a E_\theta(a,o) - \nabla_a \log Z(o,\theta) \approx -\epsilon_\theta(a,o).

由於對 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:

CNN-based Diffusion Policy