5.4 物理約束導引:利用能量函數與無分類器引導(CFG)強制遵循守恆定律#
一、物理幻覺的具體形態#
第 3 章談過物理幻覺,第 5.1 至 5.3 節則證明了擴散模型在視覺上極其擅長、在物理上卻毫無保證。兩者結合會產生一種特別危險的組合:看起來完美、動起來荒謬。具體的失效形態包括:物體在無外力下突然改變速度、穿透彼此、懸空不落、質量明顯改變、容器裡的水憑空溢出。
這些失效之所以危險,是因為它們不會在畫面中留下明顯的破綻。一個穿牆而過的杯子在單幀裡完全正常,只有在連續播放並量測其位置與速度時才會暴露。而大多數生成模型的評測指標恰恰只看單幀相似度與人眼觀感,因此物理違規幾乎不會被自動偵測到。
本章要處理的是:既然模型無法天然學會守恆律(因為守恆律是硬約束而非資料中的統計傾向),那麼能不能在生成過程中把它強制進去。答案是可以,但必須對「強制」的意義有清醒的認識——這是本章最後要回頭處理的問題。
二、無分類器引導的數學#
引導的出發點是 Ho 與 Salimans 於 2022 年提出的無分類器引導(classifier-free guidance, CFG)。它的基本洞見是:要引導一個生成模型朝條件 \(c\) 的方向走,不必訓練一個獨立的分類器去估計 \(\nabla_x \log p(c \mid x)\) ,只要比較同一個網路在有條件與無條件下的兩個預測即可。
令 \(\epsilon_\theta(x_t, t, c)\) 為有條件預測, \(\epsilon_\theta(x_t, t, \varnothing)\) 為無條件預測,則引導後的雜訊估計為:
其中 \(w\) 是引導強度, \(w = 1\) 退回到純條件預測, \(w > 1\) 則把條件方向放大。這個式子可以被解讀為一個近似的梯度:差值項 \(\epsilon_\theta(x_t, t, c) - \epsilon_\theta(x_t, t, \varnothing)\) 在某種意義上就是條件分佈對輸入的(負)梯度方向,方向就是「讓樣本更像是滿足條件 \(c\) 的樣本」。實作上,訓練時以一定機率把條件置空,推理時同時算兩條分支即可,成本是兩次前向。
CFG 的威力在於它把「條件」這個概念從語義擴展到了任何可微的性質。若把條件換成一個物理量的目標值——例如「這段軌跡的總動量必須是零」——那麼引導方向就變成了「讓生成結果更接近滿足物理條件的方向」。
三、守恆律的能量函數形式化#
物理守恆律可以用能量函數(更精確地說是守恆量的殘差)來表徵。對一個守恆量 \(C\) (總動量、總能量、體積),定義其在生成結果上的違反量:
三個典型的守恆量可以這樣寫。動量守恆:在無外力的封閉系統中,總動量 \(\sum_i m_i v_i\) 守恆,因此違反量是 \(\|\sum_i m_i \hat{v}_i\|^2\) 。能量守恆:在無外力做功的情況下,總機械能 \(\sum_i \frac{1}{2} m_i \|\hat{v}_i\|^2 + \sum_i m_i g h_i\) 守恆,違反量是這個總和相對初始值的偏差。體積守恆:對不可壓縮流體,佔據體積 \(\sum_i V_i\) 守恆,違反量是 \(\|\sum_i \hat{V}_i - V_0\|^2\) 。
這些量的共同特徵是可在生成結果上直接計算,因為它們只依賴物體的狀態量(位置、速度、體積),而不依賴渲染外觀。這一點極其關鍵:它意味著約束可以在去噪迴圈的每一步即時求值,而不需等到影片渲染完成再去偵測問題。
四、把能量梯度加進去噪引導#
有了可微的違反量 \(E(\hat{x})\) ,就可以構造物理引導項。在反向去噪的每一步,除了原有的雜訊預測之外,再加上一個沿能量梯度下降的方向:
其中 \(\hat{x}_0(x_t)\) 是把當前的帶噪樣本估計回原樣本, \(\nabla\) 的計算需要對解碼器與狀態抽取器反傳播, \(\lambda\) 是物理約束的權重。這個式子的直覺是:CFG 負責「生成像條件的東西」,物理項負責「生成守恆的東西」,兩者相加後的去噪方向就同時朝兩個目標前進。
graph TD
A[帶噪樣本 xt] --> B[有條件預測 epsilon_theta]
A --> C[無條件預測 epsilon_theta 空條件]
B --> D[CFG 合成<br/>方向放大 w 倍]
C --> D
A --> E[估計原樣本 x0 hat<br/>透過解碼器與狀態頭]
E --> F[能量函數 E<br/>動量 能量 體積殘差]
F --> G[對 xt 求梯度<br/>反傳播]
D --> H[合成去噪方向<br/>CFG 加上物理梯度]
G --> H
H --> I[更新得到 xt 減一]
I -->|剩餘時間步大於零| A
I --> J[解碼為最終影片或狀態]實作上有三個關鍵細節。第一,物理項必須乘上噪聲尺度因子,因為在高噪聲層級上, \(x_t\) 與 \(x_0\) 的關係是強衰弱的,直接對 \(x_t\) 求梯度會得到一個尺度不對的修正量。第二,物理項通常只在後段去噪步啟用。在高噪聲層級上,樣本還沒有可辨識的物體結構,能量函數根本算不出來,此時的梯度是雜訊而不是訊號。第三,** \(\lambda\) 需要隨時間步衰減**,因為越接近收尾,模型自身的先驗越可靠,物理修正應當越保守;過強的物理引導會把生成結果壓成僵硬、只有一種解的軌跡,等於抹掉了擴散最珍貴的多樣性。
五、從守恆律到接觸:約束強度的分級#
守恆律之所以容易實作,是因為它有一個極為便利的性質:它是一個全域的、不帶接觸細節的等式。總動量是所有物體動量的和,總能量是所有物體機械能的總和;它們不關心任一對物體之間的接觸狀態,因此不會因為接觸幾何的細微變化而改變形式。這是守恆律能被寫成簡潔能量函數的根本原因。
相較之下,接觸與非穿透是帶不等式的局部約束。兩個剛體不得互相滲透,寫成不等式 \(\|x_A - x_B\| \geq r_A + r_B\) ;接觸時法向力不得為負(只能推不能拉),寫成 \(f_n \geq 0\) ;摩擦力受庫侖錐約束,寫成 \(\|\mathbf{f}_t\| \leq \mu f_n\) 。這三組不等式耦合在一起,加上接觸點位置未知這個變數,使得接觸問題成為一個互补性問題(complementarity problem):接觸力與穿透深度必須滿足「二選一」的互斥條件。
要對這類約束求梯度,就必須先求解互補性條件,也就意味著要在每次去噪步內部執行一次接觸求解。這在數值上是昂貴的,在工程上更是脆弱——求解器收斂與否本身成為新的不確定性來源。因此實務上的做法是分級的:先用容易實作的守恆量做粗篩,再用較弱的接觸近似(例如深度圖重疊的懲罰)做細修,並且把整個物理模組的求解設定在近似或鬆弛的層級上。
這個分級提示了一個更一般的判準:一個物理約束是否值得編碼,取決於它對決策的影響權重與實作成本的比值。總能量守恆的實作成本是近乎零的(加總幾個標量),而它的影響——偵測出「物體憑空加速」——在安全關鍵的系統中極高;摩擦錐的實作成本則高昂得多,而多數日常任務中,摩擦的細節並不決定成敗。
六、與物理資訊網路的關係#
這種「把已知物理方程編碼進訓練或推理過程」的思路,與物理資訊網路(physics-informed neural networks, PINN)共享同一個血統。PINN 的做法是:網路在解偏微分方程時,除了資料的邊界條件與初始條件之外,還加入一個殘差損失項:
兩者的關係是精確的鏡像。PINN 把物理方程編碼成訓練時的損失項,讓網路在學習的過程中就傾向於滿足方程;本章的引導法把物理方程編碼成推理時的方向項,讓去噪的每一步都朝物理允許的方向移動。PINN 依賴方程的導數形式,需要對網路輸出求二階導數,實作上既昂貴又容易數值不穩;引導法只需要對狀態量求一階導數,實作上更簡潔,但需要一個能從生成結果中抽出物理量的狀態頭。
這裡出現了一個極重要的工程前提:物理引導的品質完全取決於狀態抽取器的品質。若從生成影片中估計物體速度是用差分位置座標得到的,那麼這個速度估計本身就有雜訊,梯度就會把雜訊當成物理修正的方向。在理想狀態下,擴散模型直接在狀態空間工作(第 5.1 節所說的物理軌跡去噪),此時能量函數的輸入是模型原生輸出的狀態,不需要從像素反推,物理引導才真正可靠。
七、導引法與投影法的比較#
另一條完全不同的路線是投影法:先生成,再用一個物理引擎或最佳化程序把結果「拉回」守恆集合。形式上,這是求一個距離生成結果最近、且滿足守恆律的修正:
這個最佳化可以用投影梯度法、牛頓法或基於物理引擎的重新模擬來求解。兩種方法的能力邊界有本質差異。
引導法的優點是它作用在生成的過程中,因此能影響生成結果的結構:模型是被引導去找一個本身就守恆的解,而不是先生成一個錯誤的解再被動修正。這也意味著引導法能帶來更好的視覺品質與更合理的物體行為。它的代價是不保證嚴格滿足——引導只是一個局部方向的近似,去噪步數有限、能量函數非凸,最終的違反量通常只是變小而非歸零。
投影法的優點是保證滿足(若最佳化收斂),因為滿足性是硬編碼在約束裡的。它的代價則有兩重:一是破壞視覺品質,因為把生成結果投影到守恆集合上的最近點,很可能造成像素級的突兀變化與時間上的不連續;二是無法修復因果結構上的錯誤。舉例而言,若原始生成中一個杯子從桌面內部穿出,投影法可以把它拉回桌面附近,但拉回後的軌跡可能是一個違反運動學連續性的跳躍——它滿足能量守恆,卻在物理上是不可解釋的。
因此實務上的結論是:引導為主,投影為輔。用引導在過程中塑造,用投影在最後做一道保險,並且要度量投影前後的違反量變化,以確認投影沒有把視覺品質一起壓垮。
八、實驗設計:如何偵測物理違反#
物理約束研究最脆弱的地方是評測。一個生成模型即使完全不遵守守恆律,若評測者只用畫面相似度打分,它依然會贏。所以必須設計能自動偵測物理違反的評測器。
三種方法可以並列比較:
| 方法 | 偵測對象 | 優點 | 弱點 |
|---|---|---|---|
| 幾何穿透檢測 | 佔據區域重疊、穿牆、懸空 | 直覺明確,可自動化 | 依賴分割與深度估計,容差難調 |
| 能量監測 | 動量與機械能隨時間的漂移 | 直接對應守恆量,易量化 | 速度由光流或位置差分推得,噪聲大 |
| 反事實一致性 | 兩組初始條件下的比例關係 | 檢驗的是結構而非數值 | 需要成對生成,評測成本高 |
第一類是幾何穿透檢測。偵測物體的佔據區域在三維空間中的重疊:若兩個剛體的碰撞體積持續為正,或一個物體的佔據區域穿過支撐面,這就是明確的違反。這個檢測可以從深度估計或分割遮罩重建,難點在於接觸附近的遮罩本身就有誤差,因此需要容差設計。
第二類是能量監測。在生成的軌跡上估計動量與機械能隨時間的變化,看它們是否在無外力的情境下保持恆定。這個檢測可以直接在狀態空間做,也可以在像素上用光流推估速度。
第三類是反事實一致性檢測:把同一個場景用兩組不同的初始條件生成,檢查物理量是否按守恆律預期的比例改變。例如給物體兩倍的初速度,若總動量守恆,另一個聯動物體的速度應當按比例變化。
這三類檢測都必須與畫面品質指標並列報告。只報告物理指標的論文與只報告畫質指標的論文,兩者都不足以支持「物理正確的主張」。一個好的實驗設計,是把守恆引導開與關各跑一次,同時報告視覺保真度、耗時與物理違反量三組數字——若開啟引導後視覺品質大幅下降而違反量只微降,那麼這個方法在該場景下就是不值得的。
九、誠實評估:守恆律是弱約束集#
最後必須把話說清楚,這也是本章最重要的判準。
滿足守恆律不等於物理正確。 守恆律是一組非常弱的約束:它們只規定某些量在無外力的封閉系統中保持不變,卻完全不規定系統必須如何演化。數學上存在無窮多種滿足守恆律但不具任何物理意義的解——例如一個物體在空間中畫著複雜的圖形而總動量恰好為零。守恆律排除的是顯而易見的荒謬,而不是所有的不合理。
更麻煩的是,真實的物理問題遠超目前的損失設計能處理的範圍。剛體接觸問題就是最好的例子。一個方塊落在另一個方塊上,涉及接觸力求解、非穿透約束、摩擦錐、庫侖摩擦的 stick-slip 轉換、以及接觸點位置的確定——這是一個帶不等式約束的互動式動力學問題,它的解不唯一,且取決於物體的質量分佈與接觸面的形狀細節。把這些編碼成一個可以對生成結果求梯度的能量函數,遠比想像中困難得多。現有的嘗試多是把接觸簡化為一個懲罰項(例如深度圖的負重疊量),這在簡單場景有效,但在堆疊、滾動、多物體連鎖碰撞時會失敗。
還有一個量級問題值得強調。守恆引導需要對生成結果反傳播以求梯度,因此每一步去噪都要做一次完整的物理量計算與反傳。相較於單純的神經網路前向,這可能讓推理成本增加數倍。當我們在第 5.3 節已經受夠了擴散策略的延遲問題時,這個成本是必須正視的。
因此本章的誠實結論是:物理約束導引是一個必要但不充分的工具。它能把明顯的物理幻覺壓到罕見的程度,這本身就極有價值,因為駕駛與操作系統無法承受偶發的穿透。但它不能取代一個真正的物理模型或一個真正的狀態表徵,只能作為後者的補充。
這就引出了第 6 章的核心論點。如果一個模型的主要工作是重建像素,而物理正確又幾乎無法從像素層次直接學會,那麼值得追問的是:容量是否用錯了地方?與其把數十億參數花在重建高頻紋理上,不如讓模型只預測那些對決策真正有用的特徵——位置、朝向、速度、可交互性。JEPA 架構正是沿著這條路徑,把世界模型從「生成看起來像的東西」重新定義為「預測有用的東西」,而這一次,物理守恆不再是外加的懲罰,而是內生的結構。