曾祥潘 廣東省廣州市白云區景泰小學
吳俊杰 北京師范大學物理系
孫麗君 山東省淄博第二中學
近年來,隨著計算機硬件的高速發展,以深度學習為代表的人工智能技術如計算機視覺、自然語言處理等在生產生活等諸多領域中取得了長足進步。這些應用能夠成功部署都依賴于大量訓練數據。那么,在物理研究等領域能否引入深度學習?答案是肯定的。但所面臨的一個問題是,深度學習是以數據驅動的,而在物理實驗中經常難以取得大量準確的數據。為此,有不少科學家提出了解決方案。其中,美國布朗大學應用數學系的Karniadakis教授及其合作者們提出了一套深度學習算法框架,將其命名為“物理信息神經網絡”(Physics-informed Neural Network,簡稱PINN)。PINN被提出后迅速獲得了大量關注,并在物理學、工程等領域得到了應用。
本文在平拋運動的學習中,引入開源PINN深度學習框架,模擬出平拋運動數值,從而了解PINN的基本原理及其在物理研究中的使用方法,培養學生利用計算機解決問題的習慣,體驗人工智能技術在科學研究中的應用。
神經網絡是深度學習框架的主要模型。物理信息神經網絡是指在神經網絡中嵌入了物理公式,利用物理公式作為限制條件加入神經網絡,使得神經網絡的訓練結果滿足物理規律。物理公式的嵌入方法,通常加入到神經網絡的損失函數(Loss)。其基本訓練流程如圖1所示。

物理信息神經網絡這一深度學習框架的訓練過程,首先要生成訓練集。通常利用隨機函數,根據物理公式的適用范圍生成一批隨機數作為訓練集。訓練集從神經網絡輸入層進入,經過隱藏層等一系列計算,最后從輸出層取得計算結果;同時,訓練集也經過物理公式計算,得到精確數值。取得神經網絡計算的近似值與物理公式計算的精確值之后,計算出兩者的均方誤差,作為損失函數,通過反向傳播調整神經網絡參數,使得神經網絡的計算接近精確數值。經過多輪的訓練,神經網絡的計算結果最終與精確值擬合。
平拋運動是高中力學中的一個曲線運動。物體以一定的初速度沿水平方向拋出,如果物體僅受重力作用,這樣的運動叫作平拋運動。物體做平拋運動的公式如圖2所示。平拋運動可看作是水平方向的勻速運動和豎直方向的自由落體運動的合運動。
為了降低深度學習框架的使用難度,簡化代碼和神經網絡配置,本案例只選取平拋運動豎直方向位移公式作為研究對象。豎直方向位移公式轉化Python代碼為:
y=1/2*g*t**2
代碼中的“y”是豎直方向位移,“g”是重力加速度,“t”是時間。
本文使用了開源物理信息神經網絡框架,全部代碼文件可在以下網址取得:https://github.com/SachchitV/PINN_Simple。使用物理信息神經網絡前先在框架主文件進行配置,包括神經網絡結構、訓練集以及損失函數。
(1)配置神經網絡結構及訓練參數
神經網絡的類型有很多種,目前最熱門的是卷積神經網絡。然而,物理信息神經網絡只需要最簡單的全連接神經網絡就能夠很好地工作。
全連接神經網絡結構配置項目如圖3所示。
輸入層。計算豎直位移公式,對神經網絡輸入t(時間),計算出y(豎直位移),因此輸入層只需要一個數值t,設為1。
輸出層。計算豎直位移結果,輸出一個數值y,設為一。
隱藏層與神經元。這兩項關系到整個神經網絡的規模并影響計算結果的精度。如果設置較大,計算的精度一般會比較高;但是神經網絡規模大,訓練時間和推理時間明顯變長。經過試驗發現,對于平拋運動豎直位移數值這類比較簡單的計算,只需要規模比較小的神經網絡就能夠取得滿意的結果。本例設為2個隱藏層、10個神經元。
訓練次數,即Echo,神經網絡訓練次數。可從100開始,逐次增加,根據訓練結果調整,直至訓練結果與精確值擬合。


學習率,用于設定神經網絡每次訓練時調整參數的步長,保持默認值即可。如果發現增加訓練次數后,數據擬合沒有改善,可以適當增加學習率。
(2)準備訓練集
物理信息神經網絡可以使用實驗實測數據作為訓練集,也可以用隨機函數生成訓練集。在本例中使用隨機函數生成訓練集,考慮到平拋運動實驗中物體落地過程的時間較短,隨機數生成范圍設定為0~2秒,隨機生成50個數據(如圖4)。

圖4 生成訓練集
(3)嵌入物理公式
物理公式在損失函數中嵌入(如圖5)。其中g為重力加速度常數,取值為9.80665。t是時間,把生成的訓練集賦值給t。最后把豎直位移公式的計算代碼“1/2*g*t**2”加入損失函數。

圖5 損失函數內嵌物理公式
在物理信息神經網絡框架配置完成后,運行代碼文件,神經網絡訓練完成的效果如圖6所示。
圖6中的左側圖像是神經網絡沒有訓練,計算出模擬值與精確值的擬合情況,屬于欠擬合狀態。右側圖像是訓練3000遍后數據的擬合情況,數據完全擬合。物理信息神經網絡完美地模擬了平拋運動豎直位移的變化過程。

圖6 模型訓練前后數據擬合對比
