本文是一篇教育性教程,詳細解析了PyTorch自動微分引擎如何在物理信息神經網絡(PINN)訓練中計算梯度。PINN訓練需要兩個層次的微分:首先通過網絡計算物理導數ŷ'(t)=dŷ/dt,然後計算依賴於ŷ'(t)的損失函數對參數的梯度∇θL。作者採用一個1-3-3-1多層感知機,並求解初值問題y'(t)+y(t)=0, y(0)=1,逐步追蹤了完整的微分流水線。文章首先描述了前向傳播過程中計算圖的構建,隨後展示了反向傳播如何通過一次遍歷計算出全部22個參數梯度。重點在於解釋create_graph=True這一關鍵參數,它啓動圖上圖機制,使得基於物理殘差的損失函數能夠被正確微分。每一處的伴隨值(adjoint)都與Tahimi(2026)的手工推導進行了數值驗證,從而將P/Q敏感性框架與PyTorch autograd引擎實際使用的向量-雅可比積(VJP)聯繫起來。全文共25頁,包含9幅計算圖和分析圖表,適合希望深入理解自動微分底層實現的讀者。這篇文章不僅解釋了理論,還提供了完整的數值計算示例,使讀者能夠逐節點跟蹤計算過程。通過使用一個具體的簡單ODE問題,作者清晰地展示了從網絡輸出到損失函數再到參數梯度的完整鏈式法則應用。對於希望將自動微分應用於科學計算和物理模擬的研究人員來説,這是一份寶貴的教學資源。
從頭實現自動微分:PyTorch如何在物理信息神經網絡中計算梯度
文章摘要
本文通過一個1-3-3-1多層感知機和初值問題y'(t)+y(t)=0, y(0)=1,詳細追蹤了PyTorch自動微分引擎在物理信息神經網絡訓練中的完整計算流程,包括前向計算圖構建、反向傳播計算22個參數梯度,以及通過create_graph=True實現基於物理殘差的正確微分的圖上圖機制。所有伴隨值均與Tahimi(2026)的手工推導核對,將P/Q敏感性框架與PyTorch的向量-雅可比積聯繫起來。
從頭實現自動微分:PyTorch如何在物理信息神經網絡中計算梯度