← 部落格

Genie 3世界模型:如何生成互動環境

深入探討Genie 3的世界模型技術:如何從提示詞生成一致且可控的3D空間。

1 min read
Genie 3世界模型:如何生成互動環境

這一切從一個小挫折開始。我試著為一場工作坊原型製作一個簡單的互動場景,沒什麼特別的,只是一個小空間,讓角色移動,讓世界以可信的方式回應。我不想打開遊戲引擎、連接物理系統,然後花一個下午追著碰撞判定跑。我不斷看到關於 Genie 和「世界模型」的提及,於是開始思考 Genie 3 世界模型 能否承擔這部分工作。

我是 Dora。我不是在追逐最新的東西,而是在追求一種安靜的速度——那種能減少心智負擔的速度。最近(今年一月)我帶著更清晰的筆記重新回顧了這段經歷。以下是讓我印象深刻的部分:不是功能列表,而是實際使用世界模型處理小型真實任務時的感受,以及 Genie 風格的方法在哪裡有幫助,又在哪裡會造成阻礙。

什麼是世界模型

世界模型是一種學習得來的模擬器。它不需要手動編寫規則(重力如何運作、牆壁如何阻擋),而是訓練一個模型來預測場景中接下來會發生什麼。如果效果夠好,它學到的不只是畫面的外觀,更是讓畫面隨時間推移仍然合理的底層規則。

我很喜歡 Ha 和 Schmidhuber 在 World Models 研究中的原始框架:將世界壓縮成緊湊的表示,學習這種表示如何變化,並利用它來規劃或行動。後來的研究將這個概念延伸到影片領域。模型觀看大量影片,學習一種內在的物理規律——至少是它能看到的部分。接著,你向模型施加刺激(透過動作),它便預測下一個狀態。

這與文字轉影片生成器不同。一般的生成器繪製看似合理的畫面,而世界模型試圖保留因果關係。如果我按下左鍵,角色就向左移動。如果球撞到地板,它的彈跳方式會與模型所學到的一致。這樣做的回報是互動性。模型不只是向你展示一個世界,而是讓你活在它所學習的規則之中。

在實務上,這種「身處其中」的感覺取決於幾件事:

  • 緊湊的狀態空間(讓模型能夠在其中思考),
  • 一個動態模型(讓它知道狀態如何變化),
  • 以及一種將你的輸入連接到模型動作概念的方式。

Genie 風格的系統旨在同時做到這三點。這正是吸引我的承諾:Genie 3 世界模型能讓我跳過小型原型的接線工作,同時仍然獲得可信的行為嗎?

Genie 3 如何建構世界

我在這裡使用「Genie 3」作為我看到的最新一波 Genie 研究的簡稱。有據可查的基礎是 2024 年的論文 Genie: Generative Interactive Environments,其中解釋了核心方法。網路上的版本或名稱會有所漂移,但機制大致相同。

以下是重點,用簡單的語言說明,基於文件以及我能夠重現的內容:

  • 首先,系統學習一套視覺詞彙。 原始畫面雜亂且維度極高,因此 Genie 訓練了一個分詞器,將影片壓縮成離散的 token。這讓世界能夠以模型可以操作的緊湊編碼「說話」。
  • 其次,它學習世界如何運動。 動態模型根據當前的 token 和某種動作概念來預測下一個 token。這是它開始感覺像物理的地方。模型不計算質量或力量,而是預測看起來像物理的一致運動模式,因為它見過這些模式太多次了。
  • 第三,它從影片中學習動作。 Genie 不讀取遊戲的內部控制,而是透過觀看人們在影片中互動(遊戲玩法影片很有幫助)來推斷動作空間。然後在運行時,你的鍵盤或控制器信號被映射到這個學習到的動作空間中。這就像在說一種模型能理解的方言。
  • 最後,它將 token 逐步解碼回你可以看到和互動的畫面。

這對我來說有用的地方不在於新穎性,而在於所需的努力程度。我從一段短片(約 20 秒)開始,影片中是一個在 2D 橫向捲軸遊戲中移動的角色。經過幾輪處理——分詞、在預訓練骨架上安裝一個小型動態頭、校準輸入映射——我就能夠推動角色並看到世界作出回應。最初的幾次運行很脆弱。邊緣會閃爍;角色偶爾會像幽靈一樣穿過牆壁。但循環很短:調整、運行、觀察。折騰了一個晚上之後,行為逐漸穩定成我可以演示的樣子,不需要每隔五秒道歉一次。

有兩個小時刻讓我印象深刻:

  • 潛在控制感覺更友善。在 token 而非像素中工作意味著微小的改變有可預測的效果。我不需要花時間追逐逐像素的偽影。
  • 輸入映射才是真正的工作。將我的按鍵轉換為模型推斷的動作空間,比我預期的需要更多試錯。但一旦搞定,那種控制感是即時的——就像學會了新觸控板的靈敏度。

注意事項:你仍然需要符合預期行為的資料。如果你的影片片段沒有展示跳躍,就別期望能有流暢的跳躍。模型可以產生幻覺,但它的幻覺會沿著它所學到的紋理方向走。

一致性與物理處理

當人們說「感覺很真實」,他們通常在指向兩件事:時間以應有的方式流逝,以及空間保持完整。Genie 風格的世界模型在這兩方面都有進展,但也有一些特殊之處。

時間一致性

我早期的運行有著你可能在影片模型中見過的那種搖晃感:物體漂移,然後突然回彈。當我順應模型的優勢而非對抗它時,時間一致性得到了改善。較短的展開配合頻繁的動作輸入給了它更清晰的錨點。試圖推動 10 秒的自由運行生成,才是接縫開始顯現的地方。

在實務上,模型往往能很好地保持短期動量。如果一顆球在滾動,它會繼續滾動。如果一個角色在跳躍中途,弧線會在接下來的幾十幀中流暢地延續。更長的弧線——尤其是在鏡頭移動或遮擋之後——是它可能失去線索並發明新線索的地方。我開始添加輕柔的「ping」(每隔幾幀輸入微小的無操作動作)來提醒它時間仍在以受控的方式流逝。這減少了一些閃爍。

還有延遲與穩定性的問題。更快的解碼很誘人,但我注意到了一個小代價:當我追求速度時,微小的時間抖動悄悄出現——幾乎不可見,但在你操控時能感受到。將解碼器調到稍慢、更穩定的設定,讓控制循環感覺更紮實。這沒有為我節省幾分鐘,但它讓我少了幾分懷疑。

空間連貫性

空間連貫性是指物體是否留在它們應該在的地方,以及世界是否尊重自身的佈局。碰撞是最明顯的測試。在 Genie 風格的模型中,碰撞是學習得來的,而非編碼的。如果訓練影片中的牆壁清晰且一致,模型通常會將它們視為邊界。如果牆壁模糊或不明確,就要預期會有穿透現象。

我在簡單、高對比度的場景中獲得了更好的效果。具有清晰輪廓的橫向捲軸遊戲比具有視差層的繁忙場景產生更少的邊界違規。當模型確實破壞空間時——例如讓角色滑過一個角落——我找到了兩種補救方法:

  • 調整動作空間。有時模型在服從指令,但控制力道太強。限制最大輸入幅度可以防止它「壓制」學習到的牆壁。
  • 用關鍵幀重新對齊。每隔幾秒餵入一個真實畫面(而非純自回歸)可以將模型拉回它實際學習的地圖。這不夠優雅,但有效。

還有一點需要注意: 鏡頭運動。如果源影片中鏡頭是穩定的,模型能更好地維持空間。如果鏡頭漂移,模型偶爾會將世界運動與鏡頭運動混合在一起,導致物體游移。盡可能鎖定鏡頭。

相對於傳統方法的優勢

與在遊戲引擎中手工構建的原型相比,Genie 3 世界模型感覺像是一種交換:我放棄了精確度,換取了速度和靈活性。對於小型實驗來說,這是個公平的交易。

  • 更低的設定成本。 我不需要搭建物理系統或圖塊地圖。我餵入一段影片,映射輸入,當天結束時就有了互動的東西。節省的時間在時鐘上並不巨大(也許幾個小時),但減少的心智負擔是有意義的。更少的決策,更少的兔子洞。
  • 自然的風格遷移。 因為視覺效果和動態是一起學習的,源影片的「感覺」得以延續。如果你想要一個陰鬱、粗粒感的世界,同時仍然回應你的輸入,這就能實現,不需要另做燈光調整。
  • 統一的迭代流程。 調整在一個地方發生——資料和模型。我不需要在物理面板、著色器和狀態機之間切換。這是一個反饋循環。

當然,也有限制。如果你需要像素完美的碰撞、確定性物理或長時程而不漂移,傳統引擎仍然勝出。如果你的資料沒有展示某種行為,模型就不能可靠地發明它。對於生產環境或任何安全關鍵的應用,我會將世界模型與護欄配對,或退回到程式碼。

為什麼這對我很重要:世界模型降低了嘗試一個想法的摩擦。不是為了發布它,而是為了看它是否值得走下一步。如果你活在原型之中,這是一份禮物。