摘要
在這里,我們提供了一個學習模擬的通用框架,并提供了一個單一模型的實現,該模型可在各種具有挑戰性的物理領域(包括流體,剛性固體和可變形材料彼此相互作用)中產生最先進的性能。我們的框架(我們稱為“基于圖網絡的模擬器”(GNS))表示帶有粒子的物理系統的狀態,表示為圖中的節點,并通過學習的消息傳遞來計算動力學。我們的結果表明,我們的模型可以從訓練期間包含數千個粒子狀態的單一時間步長的預測,推廣到不同的初始條件,數千個時間步長,以及在測試時至少增加一個數量級的粒子。我們的模型對于跨各種評估指標的超參數選擇具有魯棒性:長期表現的主要決定因素性能是消息傳遞步驟的數量,并通過用噪聲破壞訓練數據來減輕錯誤的累積。我們的GNS框架是迄今為止最準確的通用學習型物理模擬器,它有望解決各種復雜的正反問題。
介紹
復雜物理學的現實仿真器對許多科學和工程學科而言都是無價的,但是傳統仿真器的創建和使用可能非常昂貴。 構建模擬器可能需要多年的工程工作,并且通常必須在狹窄的設置范圍內犧牲通用性才能獲得準確性。 高質量的模擬器需要大量的計算資源,因此需要擴展起來讓人望而卻步。 由于對基本物理和參數的了解不足或難以近似,即使最好的也常常是不準確的。 一種有吸引力的傳統模擬器的替代方法是使用機器學習直接從觀察到的數據中訓練模擬器,但是對于大型的狀態空間和復雜的動力學而言,標準的端到端學習方法很難克服。
在這里,我們提出了一個從數據中學習模擬的通用框架-“基于圖形網絡的模擬器”(GNS)。 我們的框架強加了歸納偏見,其中豐富的物理狀態由相互作用粒子的圖表示,而復雜的動力學則通過在節點之間學習到的消息傳遞來近似。
我們在一個深度學習架構中實現了GNS框架,發現它可以學習準確地模擬流體,剛性固體和可變形材料相互影響的各種物理系統。 我們的模型還可以很好地推廣到比經過訓練的系統更大的系統和更長的時間范圍。 雖然以前的學習模擬方法高度專注于特定任務,但我們發現單個GNS模型在數十個實驗中表現良好,并且通常對超參數選擇具有魯棒性。 我們的分析表明,性能是由以下幾個關鍵因素決定的:其計算遠程交互作用的能力,空間不變性的歸因偏差以及可減輕長時間模擬軌跡上的誤差累積的訓練程序。
模型
一般的可學習模擬
我們假設是世界在時間t的狀態。在K個時間步上應用物理動力學可得出狀態軌跡,
。一個模擬器,s:X→ X, 通過將先前的狀態映射到因果的未來狀態來對動力學建模。 我們將模擬的“展開”軌跡表示為:
,它由
迭代計算 時間步長。 模擬器計算反映當前狀態如何變化的動力學信息,并使用它來將當前狀態更新為預測的未來狀態。 一個例子是數值微分方程求解器:這些方程計算動力學信息,即時間導數,而積分器是更新機制。
一個可學習的模擬器使用參數化函數近似器(
)計算動力學信息,其參數可以針對某些訓練目標進行優化。
表示動力學信息,其語義由更新機制確定。 可以將更新機制視為采用
的函數,并使用
來預測下一個狀態,即
。 在這里,我們假設一個簡單的更新機制(一個Euler積分器)和代表加速度的Y。 但是,也可以使用更復雜的更新程序,這些更新程序不止一次調用
,例如高階積分器。
模擬圖上的消息傳遞
我們可學習的模擬方法采用物理系統的基于粒子的表示形式,即,其中N個粒子的每個xi表示其狀態。物理動力學是通過粒子之間的相互作用來進行近似的,例如,在粒子之間進行能量和動量的交換。粒子間相互作用的建模方式決定了模擬方法的質量和普遍性,例如,可以模擬的效果和材料的類型,方法在哪種情況下效果良好或較差等。我們對學習這些相互作用感興趣,從原則上講,它應該允許學習任何系統的動力學可以表示為粒子動力學。因此至關重要的是,不同的
值應使
跨越很大范圍的粒子間相互作用函數。
基于粒子的模擬可以看作是圖形上的消息傳遞。節點對應于粒子,并且邊緣對應于粒子之間的成對關系,在該關系上計算相互作用。我們可以在此框架中理解SPH之類的方法-節點之間傳遞的消息可能對應于使用密度內核評估壓力。
我們利用基于粒子的模擬器與圖上的消息傳遞之間的對應關系來定義基于GN的通用。 我們的
分為三個步驟-編碼器,處理器和解碼器。
編碼器定義。 編碼器:將基于粒子的狀態表示,X嵌入為潛圖(latent graph),
,其中
)。 節點嵌入
,是粒子狀態的學習函數。添加有向邊以在具有某些潛在交互作用的粒子節點之間創建路徑。邊緣嵌入
是相應粒子ri; j的成對屬性的學習函數,例如,它們的位置之間的位移,彈簧常數等。圖形級嵌入
可以表示諸如重力和磁場之類的全局屬性( 盡管在我們的實現中,我們只是將它們附加為輸入節點功能)。
處理器定義。 處理器:通過M個學習的消息傳遞步驟來計算節點之間的交互,以生成一系列更新的潛圖(latent graph)
)。 它返回最終圖形
。 消息傳遞允許信息傳播并遵守約束:所需的消息傳遞步驟數可能會隨著交互的復雜性而擴展。
解碼器定義。 解碼器:從最終潛圖的節點
)。 學習
應該使
表示反映相關的動力學信息,例如加速度,以便在語義上對更新過程有意義。
GNS實施細節
輸入和輸出表示。 每個粒子的輸入狀態向量分別代表位置,的先前速度序列,并具有捕獲靜態材料特性(例如,水,沙,團,剛性,邊界粒子)的特征,
。 如果適用,系統的整體特性g包括外力和整體材料特性。 監督學習的預測目標是每粒子平均加速度
。 請注意,在我們的數據集中,我們只需要
向量:使用有限差分從
計算出
和
。
編碼器詳細信息。 ENCODER通過為每個粒子分配一個節點并在“連接半徑” R內的粒子之間添加邊來構造圖形結構G0,該半徑反映了粒子的局部相互作用,并且對于相同分辨率的所有模擬均保持不變。 為了生成卷展欄,在每個時間步上,圖形的邊緣都由最近的鄰居算法重新計算,以反映當前粒子的位置。
ENCODER將和
實現為多層感知器(MLP),它們將節點特征和邊緣特征編碼為大小為128的潛在向量
和
。
我們測試了兩種ENCODER變體,以其使用絕對位置還是相對位置信息來區分。 對于絕對變量,的輸入是上述的xi,并帶有全局特征。
的輸入,即ri; j實際上沒有攜帶任何信息,因此被丟棄,其中
為
設置為可訓練的固定偏差矢量。 相對的ENCODER變體旨在對絕對空間位置施加不變的歸納偏差。
被迫通過遮蔽來忽略xi內的pi信息。
被提供了相對位置位移,其大小為
。 兩種變體都將全局屬性g連接到每個xi上,然后傳遞給“
。
處理器詳細信息。 我們的處理器使用具有相同結構的MGN(其中M為超參數)堆棧,作為內部邊緣和節點更新功能的MLP,以及共享或不共享的參數。 我們使用沒有全局功能或全局更新(類似于交互網絡)的GN,并且在輸入和輸出潛在節點與邊屬性之間存在殘余連接。
解碼器詳細信息。 我們解碼器的學習函數,是MLP。 在DECODER之后,使用Euler積分器更新將來的位置和速度,因此
對應于加速度
,具有2D或3D尺寸,具體取決于物理域。 如上所述,監督訓練目標只是這些
向量。
神經網絡參數化。 所有MLP都有兩個隱藏層(具有ReLU激活),其后是一個未激活的輸出層,每個層的大小為128。所有MLP(輸出解碼器除外)之后是LayerNorm(層。 我們通常發現訓練穩定性得到了改善。
訓練
軟件。 我們使用TensorFlow 1,Sonnet 1和“ Graph Nets”庫實施了模型。
訓練噪聲。 對復雜而混亂的仿真系統進行建模需要模型減輕長時間部署時的錯誤累積。 因為我們在基本事實單步數據上訓練我們的模型,所以永遠不會為它們提供被此類累積噪聲破壞的輸入數據。 這意味著,當我們通過向模型提供自己的噪聲,先前的預測作為輸入來生成推廣時,其輸入不在訓練分布范圍內這一事實可能導致其產生更大的誤差,從而迅速累積進一步的誤差。 我們使用一種簡單的方法使模型對嘈雜的輸入更具魯棒性:在訓練過程中,我們以隨機行走噪聲破壞模型的輸入位置和速度,因此訓練分布更加 與推出期間產生的分布相似。
正則化。我們使用訓練期間在線計算的統計數據,將所有輸入和目標向量的元素歸一化為零均值和單位方差。初步實驗表明,歸一化可加快訓練速度,但融合性能并未得到明顯改善。
損失函數和優化程序。我們從訓練軌跡中隨機采樣粒子狀態對,計算目標加速度
,并根據預測的每個粒子加速度計算L2損失,即
。我們使用最小批量大小2,使用Adam優化器針對這種損失優化了模型參數
。我們最多執行了20M梯度更新步驟,指數學習速率從
下降到
。盡管模型可以以更少的步驟進行訓練,但我們避免使用過高的學習率來減少數據集之間的差異,并使設置之間的比較更加公平。
我們在訓練過程中通過在5個保持不變的驗證軌跡上進行全長展示來定期評估我們的模型,并記錄了相關的模型參數以獲得最佳展示MSE。當我們觀察到MSE的下降幅度可忽略不計時,我們停止了訓練,在GPU / TPU硬件上,對于較小,較簡單的數據集,MSE通常在幾個小時內;對于較大,更復雜的數據集,則長達一周。
模型效果以及動畫:https://www.linkresearcher.com/theses/bb7cfd1d-20a8-4f08-8a2b-a64dd04e37b6