你可能聽說過這樣一個說法:給自動駕駛的路牌貼一張精心設計的貼紙,就能讓AI把限速60看成限速120。這類"對抗貼紙攻擊"這些年已經不新鮮了。但如果我告訴你,同樣的招數用在最新一代機器人控制模型上,效果好到近乎離譜,你會不會覺得意外?
這篇論文講的就是這麼一件事。研究團隊在機器人的手腕攝影機前貼了一張邊長只有32像素的小貼紙,大概占整個畫面的2%,物理尺寸相當於2到3厘米見方。結果呢,原本能完成的抓取任務,幾乎全部失敗了。不是偶爾失手,是在四個測試場景里,成功率從95%到98%直接崩到了個位數甚至零。
更讓人意外的是攻擊對象的選擇。業內一直認為,像π0這樣通過"流匹配"(flow matching)生成動作的機器人模型,天生比老一代自回歸模型更抗打。有一份權威評測甚至專門指出,π0這類模型面對常規對抗擾動時表現得相當穩健,不像OpenVLA那樣一戳就倒。這篇論文的作者們沒有接受這個結論,他們懷疑問題出在"怎麼攻擊"上,而不是模型真的強。事實證明,他們是對的。
先搞懂:機器人是怎麼"想"出一個動作的
要理解這個攻擊為什麼有效,得先明白π0這類模型是怎麼工作的。
**VLA模型**:Vision-Language-Action模型的簡稱,就是那種同時接收攝影機畫面和文字指令,直接輸出機械臂動作指令的AI系統。你告訴它"把黑色的碗放到盤子裡",它看著畫面,直接算出手臂該往哪個方向移動、夾爪該不該閉合。
早期的VLA模型,比如OpenVLA,處理動作的方式跟處理語言很像:把連續的動作切成一個個離散的"詞",像寫句子一樣一個個蹦出來。這種方式簡單直接,但天生有個毛病,機械臂的動作本來是連續平滑的物理量,你偏要切成離散片段去預測,精度和流暢度都會打折扣。
π0走了另一條路,叫**flow matching(流匹配)**:一種生成技術,核心思路是從一團隨機噪聲出發,通過反覆疊代,一步步把噪聲"整理"成一個有意義的結果,這裡的結果就是機械臂動作。
具體是怎麼整理的?模型內部學了一個叫**velocity field(速度場)**的東西,你可以理解成一個"方向指南針":在噪聲演化的每一步,這個指南針都告訴系統"現在應該往哪個方向調整"。系統從純噪聲開始,按這個指南針的指示,走上10步(論文裡叫K=10個歐拉步),每一步都讓噪聲更接近最終想要的那個真實動作,走完10步,噪聲就變成了一個具體的機械臂指令:伸手多少度、夾爪張開還是閉合。
這套機制乍一看很優雅,但也埋下了一個隱患。整個過程是環環相扣的,第一步算出來的結果會被第二步接著用,第二步的結果又被第三步接著用,一直傳遞到第十步。如果第一步就被人做了手腳,這個錯誤會不會被後面的九步一路放大?
這正是攻擊者盯上的地方。
攻擊面:為什麼不直接改動作,而是改"過程"
在這篇論文之前,已經有人嘗試攻擊VLA模型了,但方式都比較"表面"。
一種做法叫**UADA**(Universal Adversarial patch based Denoising Attack,一種在最終動作層面下手的通用對抗貼紙攻擊):優化一個貼紙,讓模型最終吐出來的動作和正常情況差得越遠越好。這種攻擊盯著的是流程的"終點",也就是那10步走完之後的最終輸出。
另一種叫**EDPA**(Embedding-space Disruption Patch Attack,攻擊視覺編碼器嵌入空間的模型無關攻擊):不管最終動作,而是去擾亂圖像被編碼成的那一串數字向量,讓模型"看錯"畫面內容。這種攻擊盯著的是流程的"起點",也就是圖像剛被編碼成特徵的那一刻。
這兩種攻擊都有效,但效果有限。論文測出來,UADA在32像素貼紙下的平均攻擊成功率只有13.2%,EDPA甚至在32像素下完全失效,得把貼紙放大到64像素才勉強達到25.3%。
問題出在哪?這兩種攻擊都沒管中間那10步到底發生了什麼。它們要麼盯著最開始的圖像特徵,要麼盯著最後吐出來的動作,唯獨漏掉了中間這條"流水線"本身。這就好比你想讓一條生產線出故障,你不去研究流水線內部哪個工位最脆弱,反而只在原材料入口和成品出口這兩頭做手腳,效果自然打折扣。
這篇論文的思路是,直接對著這條"流水線"的核心部件,也就是那個速度場,下手。他們把攻擊目標定義成:讓打了貼紙之後的速度場,和沒打貼紙時的速度場,差異最大化。這個思路和一篇叫**FlowHijack**的工作(一種訓練時的後門攻擊方法)不謀而合,那篇論文也發現了"越早注入錯誤,被放大得越厲害"這個規律。但FlowHijack需要重新訓練模型,往訓練數據里下毒,讓模型學會認一個觸發圖案。這是一種"改造工廠"級別的攻擊,需要拿到模型的訓練權限,現實里很難實現。
這篇論文要做的,是在完全不碰模型參數、只在測試時貼一張貼紙的前提下,復現同樣的破壞力。這是一個從"重新培訓工人"到"往生產線扔一顆石子"的轉變,代價小了很多,威脅卻一點沒減。
核心發現:攻擊第一步,比攻擊一大片步驟更狠
論文裡最反直覺的一個結果,出現在他們測試"到底該攻擊哪幾步"的時候。
按照常理推斷,既然錯誤會被逐步放大,那攻擊越早、覆蓋的步數越多,效果應該越好才對。研究團隊一開始也是這麼想的,先做了個單步測試:只攻擊第k步,看看效果怎麼樣。
結果和預期一致,攻擊第0步到第5步(也就是最靠近噪聲的那幾步)效果拉滿,成功率接近100%;攻擊第6步以後的步驟,效果直接崩到10%到23%。這說明脆弱性確實集中在denoising過程的早期。
**這條規律的分界點,恰好卡在第5步附近,訓練時觀察到的速度場偏差曲線和實際任務失敗率曲線,在這一點上完全吻合。**
但接下來的實驗才是真正讓人意外的地方。既然攻擊早期幾步都有效,那如果同時攻擊前3步、前5步會不會更強?研究團隊做了個"first-M"實驗,同時攻擊最早的M個步驟,把每一步的偏差加起來當作總的攻擊目標。
數據擺出來的時候,結論反過來了:只攻擊第一步(M=1),平均成功率99.8%;擴大到攻擊前3步,成功率反而掉到77.5%;攻擊前5步,也只有79.7%。攻擊範圍擴大了,效果卻變差了。
這就是論文標題里"less-is-more"效應的來源。
**攻擊最早的第一步,比攻擊一整片早期步驟都要強,也更省算力。**
為什麼會這樣?研究團隊通過計算不同步驟對應的梯度方向找到了答案,這裡要引入一個關鍵概念。
**梯度衝突**:優化貼紙的時候,每一步denoising對應一個"梯度",可以理解成"往哪個方向調整貼紙能讓攻擊更強"的建議。如果多個步驟給出的建議方向互相矛盾,加在一起的時候就會互相抵消,最終合力反而變弱。
論文裡做了個梯度相似度的可視化,第一步的梯度方向和第九步(最後一步)的梯度方向,餘弦相似度是負的,大約-0.35,意味著這兩個方向幾乎是相反的。步驟之間隔得越遠,這種"意見不合"就越嚴重。
這裡可以做一個具體的類比。想像你在指揮一群人推一輛陷在泥里的車,如果所有人都朝同一個方向使勁,車能被推出來;但如果有人朝前推、有人朝斜後方推,力量互相抵消,車反而紋絲不動,甚至比只有一個人推的時候動得還慢。如果不做這個梯度衝突的分析,你可能會一直往攻擊目標里加更多步驟,覺得"多多益善",結果做出來的貼紙反而比只優化一步的貼紙更弱,還浪費了好幾倍的計算時間。這正是論文用一張"梯度存活率"圖表達的東西:隨著攻擊的窗口從1步擴大到10步,梯度合力的存活比例從100%一路跌到45%,幾乎腰斬。
這個結論還有一層更深的意味,它和訓練時的後門攻擊規律正好相反。FlowHijack那篇論文裡提到,如果後門攻擊只用很窄的早期窗口去訓練,反而學不出穩定的惡意行為,必須用一個較寬的早期窗口才能讓模型穩定地記住這個後門。同樣是"攻擊早期",訓練時的後門攻擊需要覆蓋面廣,測試時的輸入擾動卻需要極度聚焦。這個反差的根源在於,訓練時是在雕刻模型內部的權重,本質上是在"教"一個新行為,需要足夠的信號量才能學會;而測試時貼紙攻擊不改權重,只是找一個最優的輸入擾動,這時候貪多反而會自己打自己。
具體怎麼攻擊:只需要一步的前向和反向傳播
搞清楚"攻第一步最強"這個道理之後,攻擊的實現方式反而變得異常簡單。
論文用的是**PGD(Projected Gradient Descent,投影梯度下降)**:一種常見的對抗攻擊優化算法,簡單說就是反覆微調貼紙的像素值,每次都朝著讓攻擊效果變強的方向挪一點,挪完之後再把像素值限制在合法範圍(0到1之間)內,如此循環很多輪。
具體到DRIFT這個攻擊(論文給這個方法起的名字,全稱是Denoising Redirection via Input perturbation of the Flow-matching Trajectory,意思是通過擾動輸入來讓流匹配的去噪軌跡偏離原本方向),優化目標就是最大化第0步時,打了貼紙和沒打貼紙這兩種情況下速度場的差異。
因為只盯著第一步,每次疊代只需要跑一次模型的前向傳播和反向傳播,不需要把整個denoising過程(10步)都走一遍再回傳梯度。論文裡提到,這讓優化成本直接降低到原來的1/K,K是denoising的總步數。用一塊24GB顯存的3090顯卡,跑500輪疊代就能訓出一張貼紙。
這個效率提升不是錦上添花的小優化,而是這個攻擊能不能落地的關鍵。如果攻擊目標是全部10步,每次疊代反向傳播的計算量會大十倍,訓練一張貼紙可能要多花好幾個小時。攻擊者如果想快速試驗不同的貼紙大小、不同的初始化方式,成本會直線上升。反過來,如果攻擊方法本身就更弱,那速度快也沒用。這裡巧妙的地方在於,攻擊第一步這個選擇同時滿足了"更快"和"更強"兩個條件,這在工程實踐里其實很少見,通常是要在效果和成本之間做取捨的。
實測效果:幾乎打穿所有能做的任務
論文在LIBERO這個機器人任務測試集上做了系統評測,這個測試集分四個子集,分別是Spatial(考驗空間關係判斷)、Goal(考驗目標理解)、Object(考驗物體識別)、Long(考驗長序列任務),每個子集10個任務,每個任務跑10次。
貼紙只在Spatial這個子集上訓練,然後原封不動地拿去測另外三個子集,也就是說Goal、Object、Long對貼紙來說是完全沒見過的新場景。
結果如下表所示:
| 攻擊方法 | Spatial成功率 | Goal成功率 | Object成功率 | Long成功率 | 平均 |
|---|---|---|---|---|---|
| 隨機貼紙(未優化) | 0.7% | 5.2% | 0.3% | 8.8% | 3.7% |
| UADA(動作空間攻擊) | 11.6% | 12.0% | 7.5% | 21.5% | 13.2% |
| EDPA(嵌入空間攻擊,64px) | 23.1% | 28.2% | 18.7% | 31.0% | 25.3% |
| **DRIFT(本文方法)** | **100.0%** | **99.7%** | **100.0%** | **99.6%** | **99.8%** |
數字擺在這裡,對比一目了然。一張32像素的貼紙,只訓練在一個場景上,就能在四個完全不同的任務集上把成功率干到99.8%的平均水平。而且論文特意提到,π0在沒貼紙的情況下清潔成功率是95%到98%,這意味著DRIFT幾乎摧毀了模型原本能完成的每一個任務。
這個攻擊對π0的繼任者π0.5也有效,雖然π0.5看起來更抗打一些,需要把貼紙放大到64像素才能達到類似的破壞力(平均99.3%)。
失敗的樣子:機器人假裝抓住了空氣
光看成功率數字還不夠直觀,論文還做了一個細緻的軌跡分析,揭示了被攻擊的機器人到底是怎麼"失控"的。
他們追蹤了機械臂末端執行器(也就是夾爪那個點)的運動軌跡,對比正常情況和貼了貼紙的情況。正常情況下,機械臂會走一條直接的路線,接近目標物體,靠近之後再閉合夾爪,抓取,完成任務。
貼了貼紙之後,情況變得很詭異。**機械臂幾乎立刻就把夾爪閉合了,在頭7步控制指令之內就完成了閉合動作,平均只用了3.8步,遠遠早於正常情況下平均46步才閉合的節奏。**而且機械臂並沒有停下來不動,它還在移動,平均移動距離甚至超過了正常軌跡,但它從來沒有真正靠近過目標物體,離物體最近的時候也有18.6厘米的距離。
論文管這個現象叫"phantom grasp",翻譯過來是"幻影抓取",機械臂夾著一把空氣,煞有介事地在場景里移動,卻完全沒有執行"靠近、抓取"這套本該有的動作邏輯。
這個現象其實很像人在極度慌亂時會做出的動作,手已經做出了抓東西的姿勢,但眼睛根本沒看清要抓的是什麼、在哪裡,動作和感知完全脫節了。研究團隊進一步用注意力可視化驗證了這個猜測,他們提取了模型內部對"bowl"(碗)這個詞的注意力分布,看它在圖像的256個區域裡分配了多少關注度。正常情況下,貼紙所在的那塊區域(占圖像面積3.5%)只拿到了1.7%的注意力,低於按面積算的均攤份額,說明模型確實沒怎麼關注那裡。但貼了貼紙之後,這塊區域一下子吸走了28%到33%的注意力,相當於面積占比的8到9倍。
模型的"眼睛"被貼紙死死勾住了,根本沒工夫去看真正的目標物體在哪裡,這解釋了為什麼夾爪會提前閉合、機械臂會盲目移動。這不是精心設計的"定向操控",論文強調這是一種untargeted(無目標)攻擊,不是讓機器人去抓一個特定的錯誤物體,而是單純讓它"失能",這符合論文設定的安全威脅場景:攻擊者不需要精確操控機器人做什麼,只需要讓它可靠地幹不成活。
擴展驗證:加密強度、隱蔽性、跨模型遷移
論文還做了幾組補充實驗,進一步驗證這個攻擊的邊界條件。
第一組測的是**擾動預算**,也就是限制貼紙像素值相對初始圖案能改變多少。測試發現,成功率隨著這個預算上升,呈現出一種斷崖式的"相變",而不是平滑過渡。預算限制在0.05以下時,成功率基本為零(低於8.2%),一旦超過0.1這個門檻,成功率立刻跳到97%以上。這說明貼紙想要撬動這個denoising過程的第一步,需要跨過一個最低強度門檻,一旦跨過,攻擊效果幾乎是全有或全無的開關式反應。
第二組測的是隱蔽性,研究團隊試了把貼紙限制成灰度圖(不帶彩色),發現灰度貼紙同樣能打到100%成功率,只是需要大約兩倍於彩色貼紙的擾動預算。灰度貼紙的好處是能更好地融入機械爪本身偏暗的顏色,看起來更不顯眼,不容易被人一眼發現異常。
第三組測的是跨模型遷移,也就是在π0上訓練出來的貼紙,能不能直接拿去攻擊π0.5,反過來也測了一遍。結果發現遷移效果都比較有限,從π0遷移到π0.5,即使放大到64像素也只有8.9%的成功率;反過來從π0.5遷移到π0則有24.7%。這說明脆弱性這個特點是兩個模型共享的,但具體針對哪個模型雕刻出來的貼紙細節是高度定製化的,不能簡單地一套貼紙打天下,攻擊者仍然需要拿到目標模型的梯度資訊才能真正生效。這也從側面印證了論文設定的威脅模型的合理性,攻擊需要白盒訪問權限,不是隨便拿一張網上下載的貼紙就能通用。
一個初步的防禦嘗試:JPEG壓縮
論文最後也沒忘記探討防禦手段,試了一個幾乎不需要額外訓練成本的辦法,也就是**JPEG壓縮**:一種常見的圖像有損壓縮格式,通過丟棄一些人眼不敏感的圖像細節來縮小文件體積。
思路很直觀,貼紙之所以能生效,靠的是像素級別的精細擾動,如果把圖像先做一次有損壓縮,那些精心計算出來的細微擾動可能就被壓縮過程順帶抹掉了。
實驗測了不同壓縮質量(Q值從95降到10)下的攻擊成功率變化。結果顯示,壓縮質量越低(壓縮越狠),攻擊成功率下降越明顯。當壓縮質量降到50以下時,Spatial、Goal、Object這三個子集上的攻擊成功率基本被壓到接近零。
但Long這個長序列任務子集是個例外,即便壓縮強度拉滿(Q=10),攻擊成功率依然維持在16%到21%左右,是其他三個子集同等壓縮強度下的大約4倍。
這提示一個不太讓人放心的現實。JPEG壓縮這種簡單防禦,對短平快的任務可能管用,但面對需要連續執行很多步驟的長序列任務,防禦效果會打折扣。這可能是因為長任務里貼紙擾動能反覆起作用的機會更多,壓縮掉一部分資訊之後,剩下的資訊量依然足夠觸發局部性的失誤累積。這也是論文比較誠實的一點,沒有把JPEG壓縮包裝成萬能解藥,而是明確提醒這還需要進一步研究。
寫在後面
讀完這篇論文,最觸動我的其實不是攻擊成功率有多高,而是那個"less-is-more"的發現背後透出的思維方式。
大部分人做安全攻防研究,直覺都是"覆蓋面越廣越保險",這篇論文用紮實的梯度分析告訴你,有時候更聚焦反而更強,多做未必是好事。這個道理其實超越了機器人安全這個具體領域,很多工程決策里都藏著類似的陷阱:你以為多加幾個特徵、多跑幾輪訓練、多堆一些正則項就能更穩,但如果這些操作之間存在方向性衝突,加法反而變成了減法。
另一個讓我反覆琢磨的細節是那個"phantom grasp"現象。機器人沒有被誘導去做一個錯誤但完整的動作,而是被打斷在了"意圖形成"和"意圖執行"之間的某個環節,夾爪閉合了,但抓取這件事根本沒發生。這種失敗模式比"抓錯東西"更讓人不安,因為它意味著系統連自己"失敗了"這件事都可能感知不到,如果這套系統裝在真實的工業機械臂或者家庭服務機器人上,這種靜默的功能性失效比明顯的錯誤動作更難被及時發現。
這篇論文沒有解決的問題也很明顯:它證明了漏洞存在,也給出了一個初步的、效果參差的防禦方案,但對於flow-matching這類模型該怎麼從架構設計層面堵上這個denoising早期步驟的漏洞,還完全是空白。如果第一步denoising天生就是整個鏈條里最脆弱的環節,那是不是應該有專門針對這一步的魯棒性訓練?這個問題留給讀者,也留給這個領域接下來的研究者。
Q&A
Q1:DRIFT攻擊是什麼?
A:DRIFT是一種針對flow-matching機器人策略(如π0、π0.5)的測試時對抗貼紙攻擊,通過在機械臂手腕攝影機視野內貼一張32像素的小貼紙,專門干擾denoising去噪過程的第一步,導致機器人任務幾乎全部失敗,成功率接近100%。
Q2:為什麼只攻擊第一個denoising步驟反而比攻擊多個步驟更有效?
A:因為多個步驟的攻擊梯度方向存在衝突,第一步的梯度和最後一步的梯度餘弦相似度約為-0.35,方向幾乎相反,加在一起會互相抵消,導致攻擊窗口越寬,實際攻擊成功率反而越低,從單步的99.8%降到攻擊前5步的79.7%。
Q3:這種對抗貼紙攻擊有沒有防禦辦法?
A:論文測試了JPEG壓縮這種簡單防禦手段,發現在壓縮質量降到50以下時能把大部分任務的攻擊成功率壓到接近零,但對長序列任務(Long子集)效果有限,即使最強壓縮下成功率仍有16%到21%,說明這還不是一個可靠的通用防禦方案。






