從噪聲到動作:Diffusion Policy 如何改變機器人學習?

從噪聲到動作:Diffusion Policy 如何改變機器人學習?


引言

在機器人手臂操作方面一直存在諸多挑戰。我們熟悉的工業場景中的組裝機械臂,往往依賴于寫死的程序指令進行控制,具有高度規范化與高精度的特點。而當機械臂需要在復雜、多變的環境中與外界進行交互時,就不得不涉及學習策略、協同性以及時間序列決策等難題。如今,在工業高精度場景下的機械臂已日漸成熟,精度也越來越高,但在更復雜的任務中,依然存在效率低下、動作連貫性不足以及學習策略不佳等問題(論文中對此有具體例子)。

針對這些問題,Diffusion Policy 框架提出了一種全新的解決思路:它將機器人動作生成建模為條件擴散過程,在逐步去噪中得到連貫、合理的動作序列,從而有效改善動作的多模態建模能力、時序一致性和訓練穩定性。實驗證明,Diffusion Policy 在多項機器人任務中均顯著超越了現有方法,展現出更強的學習能力與表現力。

Diffusion 驅動下的機械手 展現了極強的學習能力與連貫性,而在 CoRL 座談會 上,研究者們對其討論也非常熱烈。讀完論文后,我也不得不感嘆一句:Diffusion Policy is SOTA!

1. 什么是 Diffusion Policy?


Diffusion Policy 是一種基于 條件擴散模型(Conditional Denoising Diffusion Process)的機器人視覺-運動策略學習方法。

Diffusion Policy其實解決的是一個機器人輸出的問題,過往的很多工作大家都注重在解決輸入的問題,但機器人最終要執行,我們的工作就在于解決機器人動作和輸出的問題。更確切地說,我們的創新聚焦于機器人的動作端而非輸入端,在輸入端使用的是非常普通的東西。盡管輸入端有很多可以提高的地方,但機器人學習方法必須注重輸出端,先前的算法在輸出端的表現都不夠好。因此,無論輸入端有多么創新,如果輸出端表現不佳,就像"茶壺煮餃子倒不出"一樣,將無法發揮潛力。
它的基本思想是:

  • 不直接預測動作,而是從隨機噪聲出發,經過多步去噪,逐漸生成符合任務要求的動作序列;

  • 使用視覺觀測作為條件,保證生成的動作與環境狀態相匹配;

  • 生成的是高維動作序列,而非單步動作,能確保動作的時序一致性和連貫性。

它的優勢主要體現在:

  • 表達多模態分布:可以學到不同的合理操作方式;

  • 適配高維動作空間:能生成完整的動作序列,而不是單步預測;

  • 訓練穩定:避免了能量模型訓練中的負采樣問題。


2. 與傳統方法區別

2.1 解決了機器人Multi-Modal的問題

簡單理解,現實世界中解決某一特定任務的方式是多樣的,而不是唯一的。但神經網絡預測只能給出單一的方式,無法應對可能有多種方式的任務情況。

什么是機器人Multi-Moda問題,假設我現在在開車,前面有一棵樹。比如說,我雇傭了100個司機來解決這個問題。在這種情況下,有可能有50個司機選擇往左拐,繞過樹的左邊,還有50個司機選擇從樹的右邊繞過去。在這種情況下,往左繞和往右繞都是完全合理的。然而,當我們將所有這些解決方案合并為一個時,問題就變成了一個多模態分布,即我看到的相同場景有兩種不同的選擇。這對傳統神經網絡的預測來說并不友好,因為它通常使用均方誤差(MSE)損失進行訓練,而這無法有效處理Multi-Modal情況。

為了解決這個問題,引入了概率分布,使得神經網絡不再是一個輸入一個輸出的函數,而是一個輸入可以有多個輸出的函數。這種方法提供了更大的靈活性,可以表示各種概率分布,解決了原有方法的限制。

2.2 解決了Action Space Scalabiltiy或者sequential correlation問題

數據預測有兩種方法:一是直接輸出一個數值,另一種是將可能的數值分成幾個區間,進行離散預測。在預測Multi-Modal Action的時候,人們傾向于采用離散預測,將連續值問題轉化為分類問題,但這樣做涉及的算力成本很高,尤其在處理高維空間時。此外,針對機器人控制問題,如果采用分類方法,每一步都需要預測下一步要執行的動作,而實際需求是希望一次性預測多步動作,這就涉及到了連續控制中的動作一致性問題。解決這個問題的挑戰在于平衡成本和對高維連續控制的需求。

假設我要控制的是一個具有六個自由度的機械手,甚至考慮到夾爪開關,有七個自由度,這時如果我要對其進行分類,就不再是在一個維度上切分成100份,而是每個維度都要切分成1000份。然后,將所有這些切分的部分相乘,才能得到我們整個空間的方法。如果采用這種方法,成本將會非常非常高。隨著維度的增加,成本會呈指數級增長

由于它們預測高維空間的成本非常高,因為它們只能預測一步,接下來的步驟是什么。如果再加上更多的步驟,維度就會變得越來越高,它們就無法勝任。然而,實際上我們現在追求的是具有以下特性的方法:不僅可以預測每一步,而且可以在高維連續控制中實現。對于我們來說,我們可以直接預測未來每一步,無論是接下來的20步還是100步,是向左還是向右,而不是在每一步預測之后再執行,再決定下一步該怎么走。

2.3 解決了Training Stability問題

Diffusion Policy和其他使用生成式模型(LSTM-GMM、BET、IBC)的策略比,他的最大特點是訓練過程非常穩定。

關于訓練穩定性,遲宬的進一步解釋是:在Robot Learning領域,機器人動作執行主要有三種方法:包括直接回歸、分類預測和生成式模型。第一類回歸,即將神經網絡視為一個函數,輸入是圖片,輸出是一個動作。這是最常見的方法,絕大多數強化學習都采用這種方式。然而,這種方法存在一些問題,正如之前提到的。第二類分類預測,這種方法通過預測分類來生成動作,前文已經大致描述,不再詳細贅述。第三類生成模型,理論上所有的生成模型都可以預測連續的多模態分布,但很多生成模型的問題是訓練不穩定。

基于Diffusion Model的第三類方法具有一個重要的優勢,即訓練非常穩定。這也是為什么Diffusion Model當前在圖像生成方面取得了成功,而當時的生成對抗網絡(GAN)并沒有成功的原因。在當時,GAN在學術界能夠產生一些不錯的效果,但當你真的將其應用于產品時,你會發現非常困難。要訓練一個有效的GAN,你需要瘋狂地調整參數,然后才能訓練出可用的生成器。

而Diffusion方法的強大之處在于,它的性能不遜色于GAN,但其訓練過程非常穩定。基本上,你可以隨便調整參數,生成器就能夠輸出結果,可能效果不是最優的,但基本上都能work。同時,這也解釋了為什么像Stable Diffusion這樣的方法,以及現在各種圖像生成模型能夠在如此龐大的數據集上進行訓練,這是因為它們的訓練非常穩定。如果你在如此大規模的數據上使用其他方法進行訓練,可能會在訓練一段時間后出現奇怪的問題,模型無法進一步優化。


3. 模型架構梳理

Diffusion Policy 的架構主要由三部分組成:

3.1 視覺輸入(Visual Encoder)

使用 ResNet 作為基礎結構;

修改:全局平均池化替換為 空間 Softmax 池化;BatchNorm 改為 GroupNorm;

輸入:多視角圖像和機器人自身狀態;

輸出:觀測特征 OtO_tOt?

3.2 動作擴散(Action Diffusion)

從隨機噪聲動作序列 AtKA_t^KAtK? 出發,逐步去噪得到最終動作 At0A_t^0At0?

每次推理預測 TpT_pTp? 步動作,但只執行其中 TaT_aTa? 步,然后重新規劃;

保證動作的時序一致性,同時具有實時響應能力。

3.3 Transformer 時序結構

CNN 適合低頻任務,但容易過度平滑;

Transformer 更適合需要快速動作變化的任務;

輸入:帶噪動作 embedding + 擴散步數 embedding;

融合:通過跨注意力融合視覺特征 OtO_tOt?

輸出:噪聲預測 ?θ\epsilon_\theta?θ?,逐步修正動作序列。


4. 數學推導

Diffusion Policy 的數學基礎來源于 去噪擴散概率模型(DDPM)。它的關鍵思想是:從高斯噪聲出發,通過逐步去噪的方式,生成符合分布的動作序列。

4.1 擴散過程公式

標準的 DDPM 去噪更新公式為:

xk?1=α(xk?γ?θ(xk,k))+N(0,σ2I)x_{k-1} = \alpha \big(x_k - \gamma \, \epsilon_\theta(x_k, k)\big) + \mathcal{N}(0, \sigma^2 I) xk?1?=α(xk??γ?θ?(xk?,k))+N(0,σ2I)

其中:

  • xkx_kxk?:含噪動作;
  • ?θ\epsilon_\theta?θ?:神經網絡預測的噪聲;
  • γ\gammaγ:學習率/步長;
  • α,σ\alpha, \sigmaα,σ:噪聲調度參數。

4.2 梯度解釋

該過程等價于在能量函數 E(x)E(x)E(x) 上執行帶噪聲的梯度下降:

x′=x?γ?E(x)x' = x - \gamma \nabla E(x) x=x?γ?E(x)

因此 ?θ\epsilon_\theta?θ? 可以理解為學習了能量函數的梯度場,保證采樣的穩定性。

4.3 條件擴散策略

為了讓生成動作與機器人觀測相一致,Diffusion Policy 在擴散過程中引入觀測 OtO_tOt?,形成條件擴散:

Atk?1=α(Atk?γ?θ(Ot,Atk,k))+N(0,σ2I)A_{t}^{k-1} = \alpha \big(A_t^k - \gamma \, \epsilon_\theta(O_t, A_t^k, k)\big) + \mathcal{N}(0, \sigma^2 I) Atk?1?=α(Atk??γ?θ?(Ot?,Atk?,k))+N(0,σ2I)

其中:

  • AtkA_t^kAtk?:第 kkk 步含噪動作序列;
  • OtO_tOt?:當前的視覺與狀態觀測。

4.4 訓練目標

在訓練中,Diffusion Policy 會隨機選擇一個擴散步數 kkk,并為真實動作 At0A_t^0At0? 添加噪聲 ?k\epsilon_k?k?,訓練網絡去預測這個噪聲:

L=E[∥?k??θ(Ot,At0+?k,k)∥2]L = \mathbb{E} \big[ \|\epsilon_k - \epsilon_\theta(O_t, A_t^0 + \epsilon_k, k)\|^2 \big] L=E[?k???θ?(Ot?,At0?+?k?,k)2]

該損失函數本質上是一個 MSE(均方誤差),它保證了模型在所有擴散步數上都能有效學習,從而得到穩定的訓練過程。


5. 與其他學習策略的比較

5.1 顯式策略 (Explicit Policy)

  • 直接從觀測到動作的回歸或分類。

  • 優點:實現簡單、推理速度快。

  • 缺點:難以處理多模態動作分布,容易平均化導致動作模糊。

5.2 隱式策略 (Implicit Policy, EBM)

  • 通過能量函數建模動作分布,選擇能量最小的動作。

  • 優點:可以表達多模態分布。

  • 缺點:訓練依賴負采樣,往往不穩定;推理時開銷較大。

5.3 Diffusion Policy 的創新

  • 使用擴散模型迭代生成動作,自然支持多模態;

  • 動作序列預測:提升時序一致性,避免抖動和不連貫;

  • 視覺條件化:顯著加快推理速度,適合實時控制;

  • 閉環控制:結合 receding horizon,讓機器人既能長遠規劃又能及時響應。

5.4 不足

  • 推理速度較慢,需要多次去噪迭代;

  • 依賴高質量演示數據;

  • 相比簡單的行為克隆方法,計算開銷更大。


6. 提到的其他問題

6.1 Diffusion Policy和RL以及Imitational Learning是什么關系?

在Robot Learning領域,機器人操作比較常用的兩個路徑是強化學習(Reinforcement Learning)和模仿學習(Imitation Learning),Diffusion policy并不與強化學習和模仿學習沖突,它可以應用于兩者。該方法是一種策略邏輯,適用于輸入圖像并輸出相應動作的情境。在論文中,我們使用了模仿學習,即由人類遙控機器人執行動作,收集數據,并通過學習將其轉化為策略。這種學習過程通過遙控機器人完成一系列動作開始,然后將其遷移到機器人身上。輸入數據包括過去幾幀的圖像,而輸出涉及對未來動作的預測。

很多強化學習的人,他們使用強化學習在模擬器中生成大量數據。在這個過程中,為了加速訓練,RL policy的輸入不是圖片,而是一些低維度的底層狀態信息。但是由于這些狀態信息在現實環境里是無法獲得的,因此這個RL policy不能直接用于驅動機器人。這個時候,他們會把RL policy生成的數據用于訓練一個圖片作為輸入的模仿學習策略,這被稱為蒸餾。在這種情況下,模仿的對象并非人類,而是一個強化學習“代理”(Agent)。這也是這種方法的應用之一。

6.2 操作(Manipulation)和移動(Locomotion)的訓練有什么不同?

RL在移動有更好的效果,Sim2Real Gap的問題相對好解決;但在操作,RL存在最大的問題是Sim2Real Gap沒法很好的解決。對于操控而言,需要考慮的因素較多,其中一個關鍵區別是在機器人操作中除了需要考慮機器人本身的物理特性,同時還要適應復雜多變的環境和被操作物體。操控涉及與各種各樣的物體進行交互,每個物體都具有獨特的物理特性,如重心、摩擦力和動力學。這些在模擬器中難以準確模擬,即便能夠模擬,精度通常較低,速度較慢。相比之下,對于locomotion,外界環境大多可以視為一個剛體,物理特性基本可以忽略。這使得可以花費更多時間來建立機器人本體的精確物理模型,以及設計更復雜的物理引擎。這是為什么RL更適合Locomotion,而對有物理機器人部署Manipulation沒有那么好的效果。

6.3 Diffusion Policy目前會存在什么問題,未來有哪些工作?

目前最大的問題不是Policy本身,而是數據。訓練數據對于機器人執行特定任務至關重要。盡管我們已經積累了一些關于遙控機器人執行任務的數據,但要將其部署到實際應用中,比如設計一個家用機器人來洗碗,就需要更大規模、更豐富多樣的數據集,類似于ChatGPT的規模。確保機器人能夠在各種家庭環境中表現出足夠的穩健性。目前,最大的挑戰在于如何有效地收集大量、多樣化的數據。這是下一步研究的關鍵,通過數據收集和訓練,期望能夠解決當前面臨的問題,同時也認識到可能會有新的挑戰隨著數據規模的增加而浮現。


7. References:

知乎

宋舒然RSS 2023報告

Princeton Robotics - Russ Tedrake - Dexterous Manipulation with Diffusion Policies

Cheng Chi Github

Diffusion Policy Project Page

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919452.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919452.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919452.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

量子計算和超級計算機將徹底改變技術

我們生活在技術時代,但未來仍有無限可能。近年來,各大企業在量子計算領域持續邁出雖小卻關鍵的步伐 —— 這一技術注定將徹底改變我們所熟知的世界。以下精選的潛在應用場景,將對從交通出行到醫療健康的多個領域產生深遠影響。 在由 “1” 和…

Linux 中文顯示空白框(Java)

問題展示:解決方案本系統采用宋體,若是其它字體,可以類似排查Font rewardFirstFont new Font("SimSun", Font.BOLD, 20);linux系統字體-檢查查詢linux系統所有字體fc-list檢查是否有目標字體(SimSun)&#…

普通用戶使用docker命令

參考大佬 https://blog.51cto.com/u_16175448/12082279 詳細步驟及代碼 步驟 1:安裝 Docker 首先,你需要安裝 Docker。 步驟 2:創建 Docker 用戶組 Docker 默認以 root 用戶運行,為了普通用戶能夠使用 Docker,我們需要…

【傳奇開心果系列】Flet框架實現的家庭記賬本示例自定義模板

Flet家庭記賬本示例自定義模板一、效果展示截圖二、Flet家庭記賬本概況介紹三、應用特色1. 簡潔直觀的用戶界面2. 全面的財務管理功能3. 實時數據監控4. 數據可視化分析5. 數據管理功能四、使用場景個人財務管理家庭賬務管理小微企業記賬學生理財教育五、主要功能模塊&#xff…

Node.js 在 Windows Server 上的離線部署方案

Node.js 在 Windows Server 上的離線部署方案 離線部署的核心是提前準備所有依賴資源(避免在線下載),并通過本地配置完成服務搭建,整體分為「依賴準備」「環境配置」「項目部署」「服務注冊」4個階段。 一、提前準備離線資源&am…

SpringAI接入openAI配置出現的問題全解析

SpringAI接入openAI配置出現的四個問題全解析1、無法下載openAI或SpringAI依賴包1.1、思路就是從哪個源下載所需的依賴包1.2、解決思路:我們可以看阿里的中央倉庫是否有集成SpringAI的依賴,從它這里下也是可以的。我們看看阿里云云效maven地址&#xff0…

自然語言處理——02 文本預處理(上)

1 認識文本預處理 概念: 文本語料在輸送給模型前一般需要一系列的預處理工作,才能符合模型輸入的要求;比如:將文本轉化成模型需要的張量、規范張量的尺寸;比如: 關于數據X:數據有沒有臟數據、數…

數據結構:二叉樹的鏈式存儲

用鏈表來表示一棵二叉樹,即用指針指向來指示元素的邏輯關系。通常的方法是鏈表中每個結點由三個域組成,數據域和左右指針域,左右指針分別用來給出該結點左孩子和右孩子所在的鏈結點的存儲地址 。 我們之前就已經說過,二叉樹是遞歸…

【Spring Boot把日志記錄到文件里面】

<?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 日志輸出格式 --><property name"LOG_PATTERN" value"%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n" /><!-- 日志…

大數據服務完全分布式部署- 其他組件(阿里云版)

ZooKeeper 安裝 官網 解壓 cd /export/server/ tar -zxvf /export/server/apache-zookeeper-3.9.3-bin.tar.gz -C /export/server/軟鏈接 ln -s /export/server/apache-zookeeper-3.9.3-bin /export/server/zookeeper配置 cd /export/server/zookeeper/ mkdir zkDatamyid…

Windows 平板/電腦 上使用 DHCPSRV 搭建 DHCP 服務器

一、DHCPSRV 核心優勢 輕量便攜:單文件綠色軟件,無需安裝 全圖形界面:比命令行工具更友好 支持IPv4/IPv6:滿足現代網絡需求 低資源占用:適合平板電腦運行(內存<10MB) 租約管理:可查看實時IP分配情況 二、超詳細配置流程 1. 下載與初始化 官網下載:http://www…

ArcGIS動態表格批量出圖

前言&#xff1a;產品介紹&#xff1a;ArcGIS動態表格擴展模塊Mapping and Charting Solutions&#xff0c;可用于插入動態表格&#xff0c;與數據驅動結合&#xff0c;出圖效率無敵。注&#xff1a;優先選擇arcgis10.2.2。 一、首先是根據自身攜帶的arcgis數據進行下載對應的…

Linux小白加油站,第三周周考

1.如何查看當前系統中所有磁盤設備及其分區結構(如磁盤名稱、大小、掛載點等)? lsblk # 顯示磁盤名稱、大小、掛載點&#xff08;P21&#xff09;2.若需對空閑磁盤(如/dev/sdb)進行交互式劃分&#xff0c;如何進入操作界面并創建一個5GB的主分區(類型為Linux默認文件系統)? …

SEO的紅利沒了,下一個風口叫GEO

一、 搜索在退場&#xff0c;答案在上臺過去二十多年&#xff0c;我們習慣了這樣的路徑&#xff1a;輸入關鍵詞 → 點開一堆藍色鏈接 → 慢慢篩出想要的信息。SEO&#xff08;搜索引擎優化&#xff09;就是圍繞這套游戲規則展開的&#xff0c;誰玩得溜&#xff0c;誰就有流量、…

Kubernetes 的 YAML 配置文件-apiVersion

Kubernetes的YAML配置文件–apiVersion 關于 Kubernetes 的 apiVersion 說明 以及 生產環境中推薦使用的版本 的完整指南,幫助你正確、安全地編寫 Kubernetes 配置文件。 一、什么是 apiVersion? 在 Kubernetes 的 YAML 配置文件中,apiVersion 字段用于指定你所使用的 Kub…

uniapp 5+App項目,在android studio模擬器上運行調試

1.安裝android studio&#xff0c;默認安裝即可 點擊下載android studio 2.安裝完成后&#xff0c;添加設備 選擇機型并下載 啟動模擬機&#xff08;啟動比較慢&#xff0c;稍等一會即可&#xff09; 3.等待模擬器啟動后&#xff0c;在uniapp上運行項目到模擬器 如果下…

Qt猜數字游戲項目開發教程 - 從零開始構建趣味小游戲

Qt猜數字游戲項目開發教程 - 從零開始構建趣味小游戲 項目概述 本項目是一個基于Qt框架開發的猜數字游戲&#xff0c;具有現代化的UI設計和完整的游戲邏輯。項目采用C語言開發&#xff0c;使用Qt的信號槽機制實現界面交互&#xff0c;通過隨機數生成和狀態管理實現完整的游戲…

初識CNN05——經典網絡認識2

系列文章目錄 初識CNN01——認識CNN 初識CNN02——認識CNN2 初識CNN03——預訓練與遷移學習 初識CNN04——經典網絡認識 文章目錄系列文章目錄一、GoogleNet——Inception1.1 1x1卷積1.2 維度升降1.3 網絡結構1.4 Inception Module1.5 輔助分類器二、ResNet——越深越好2.1 梯…

學習筆記分享——基于STM32的平衡車項目

學習筆記分享——基于STM32的平衡車項目前言筆記正文結語前言 本文是我在學習鐵頭山羊的平衡車教程的過程中&#xff0c;記錄的筆記&#xff0c;里面不但有Up主的講解&#xff0c;也有我個人的學習心得&#xff0c;還有查閱的資料&#xff0c;由于內容太多&#xff0c;不方便逐…

學習strandsagents的http_request tool

今天我們通過來拆strandsagents官網的一個例子來學習strandsagents的http_request tool https://strandsagents.com/latest/documentation/docs/examples/python/agents_workflows/ 看上去能做實事核查,實際上沒那么高大上。 Show me the code https://github.com/strands-…