1.什麼是Neural Network Builder
Neural Network Builder是Simcenter Amesim中內嵌的一個基於Python開發的App,它可以幫助用戶快速地完成神經網絡的定義、訓練、驗證、導出等工作。其具體功能如下:
▶Neural Network Builder可以直接通過Simcenter Amesim中創建的物理模型得到仿真數據,進而訓練得到該物理模型所對應的神經網絡,從而用神經網絡來替換物理模型,模擬真實世界物理現象。以此大大提高複雜模型的計算速度,是實現模型簡化與實時化的一種有效途徑。
▶Neural Network Builder結合Simcenter Amesim中搭建的物理模型,可以在仿真環境中有效地幫助控制算法工程師得到豐富的訓練樣本數據,從而大大提高應用神經網絡的複雜控制算法開發的效率,加快用戶產品面世周期。同時採用虛擬手段獲得豐富的測試工況,對於提高網絡訓練的精度,減少測試準備時間,降低測試成本有著重要意義。
採用Neural Networlk Builder創建得到的神經網絡可以直接生成Simcenter Amesim中的子模型,參與仿真計算。也可以生成Open Neural Network Exchange(ONNX)格式的文件,用於ONNX兼容的第三方軟體。
▲圖 1-1 Neural Network Builder工作流程
採用Neural Network Builder創建神經網絡主要步驟如下:
▶數據集導入——用於神經網絡的訓練和驗證
▶神經網絡參數定義——輸入變量、輸出變量、超參數等
▶神經網絡訓練和驗證——通過樣本數據訓練網絡並綜合比較結果精度
2.Neural Network Builder功能介紹
Neural Network Builder基於Simcenter Amesim的仿真結果進行神經網絡的創建,因此首先需要在物理模型中指定神經網絡的輸入變量與輸出變量。具體步驟如下:
▶在Simcenter Amesim中通過滑鼠拖拽的方式將物理模型中的變量放到「watch variables」窗口中,這些變量將作為訓練和驗證神經網絡時的輸入輸出。確保該工作在仿真運行前進行。
▲圖 2-1 在Simcenter Amesim中添加神經網絡的輸入輸出
▶在Simcenter Amesim中創建物理模型的外部激勵環境。外部激勵的數據可以採用在單一模型中串聯輸入的形式,也可以採用Simcenter Amesim中批處理仿真方式(Batch run)並行輸入,還可以從多個模型獲得。如下圖所示,灰色背景部分為物理模型,將要被神經網絡替換。右側為外部的激勵數據源。
▲圖 2-2 在Simcenter Amesim中創建物理模型及其外部激勵環境
▶保存模型並運行。
2.1.創建Neural Network Builder工程
▶在Simcenter Amesim中的「App space」打開「Neural Network Builder」,如下圖所示:
▲圖 2-3 通過Simcenter Amesim的App space打開Neural Network Builder
▶從工具欄或菜單欄創建一個新工程並指定路徑和名稱
▲圖 2-4 創建新的Neural Network Builder工程
▶可以隨時通過工具欄對該工程進行保存,並通過菜單欄的「Open」或「Recent files」打開一個已有工程。
▶點擊「Import」按鍵,在打開的窗口中選擇相應仿真工程的*.ame文件,導入仿真結果。導入一旦完成後,可以在下方「variable」欄中看到相應的「watch variables」中拖拽過來的變量。同時,如果該仿真工程為批處理仿真,那麼不同參數組合對應的仿真批次也將在上方「result set」中呈現。
▶用戶可以根據實際場景或工況,對不同「result set」或「variable」重新命名,便於後續方便設置與查看。
▶在「result set」中,通過勾選框選擇用於訓練和驗證的仿真結果。
▶點擊「Import」導入所選的仿真結果。
▶如果有多個ame模型的仿真數據用於訓練樣本,可以重複上面的過程完成所有數據的導入工作。在這裡用戶需要確保,不同模型間,表示同一輸入或輸出變量「variable」的「alias」需要命名一致。
如下圖所示,指定樣本數據的用途:「training」、「validation」、「unused」。其定義如下:
▶training——用於訓練的數據樣本
▶validation——用於驗證的數據樣本
▶unused——閒置不用的數據樣本
如果導入的仿真數據中只有一個樣本數據集(result set),那麼Neural Network Builder會自動將其指定為訓練樣本。通過「Model setup」頁中的「split ratio」參數,用戶可以設置該單一數據集中用於訓練以及驗證的數據長度比例。
在「common variable」列出了所有導入的數據樣本,並以用戶重新指定的名稱(alias)進行區分。用戶可以將其指定為「input」、「output」、「unused」。
▶input——神經網絡的輸入變量
▶output——神經網絡的輸出變量
▶unused——閒置數據
這裡用戶需要至少指定一個輸入變量和一個輸出變量,通過右邊的「Data viewer」可以觀察數據曲線形狀。
▲圖 2-7 指定變量為網絡輸入或輸出並觀察每個批次數據的波形
點擊「Next」進入「Model setup」頁面,進行神經網絡參數的設置。
▲圖 2-8 神經網絡定義頁面
首先設置神經網絡的結構參數,如下:
▶sample time——神經網絡屬於時域離散系統,sample time對應系統輸入的採樣時間。對於一個高頻的動態系統,採樣時間需要設置恰當才能夠獲得系統輸入的瞬態響應特徵。同時,採樣時間不能小於系統輸入數據的採樣時間。
▶number of hidden layers——隱含層層數可以在1至6層之間進行選擇,層數越多對應的網絡也越複雜。4層的實踐效果表明已經滿足upper bound。
▶type——每一層的類型可以指定為靜態全網際網路:Dense(feed-forward)、動態網絡:RNN(Recurrent Neural Network) / LSTM(Long-Short Term Memory) / GRU(Gated Recurrent Unit)。
▶number of cells:每層神經元節點數。
▶activation:激活函數類型,可以在tanh/relu/linear這三種類型中選擇。
用戶需要指定訓練周期數,「epochs」限定了一個訓練過程完成時完整樣本經過網絡的次數。該參數需慎重選擇,避免發生欠擬合與過擬合現象。用戶點擊開始按鈕啟動訓練過程,右側曲線顯示出訓練誤差逐步減小的過程。通常經過足夠的訓練周期數後,訓練誤差會縮小到一個穩定值。如下所示:
▲圖 2-10 訓練神經網絡
訓練完成後點擊「Save model」並給模型命名即完成保存。單擊右側按鈕可以看到該網絡的詳細參數。如果需要修改參數並重新訓練,可通過「Model Parameters」的下拉菜單選擇「unnamed_model」,修改參數後重新開始訓練過程。
點擊「Next」進入「Results and export」頁面,進行神經網絡驗證與導出。
▲圖 2-12網絡驗證及導出頁面
如下圖所示,在「model」下拉菜單中選擇要驗證的網絡,點擊開始按鈕進行驗證。
▲圖 2-13網絡驗證
驗證完成後,統計數據將呈現在「Statistics」欄中,如下圖所示:
▲圖 2-14 訓練後網絡與實際結果的對比精度
上圖中「Overall」展示了該網絡總體的訓練質量:
▶Training fidelity——指網絡的輸出與所有用於訓練的樣本數據集的對比精度。
▶Validation fidelity——指網絡的輸出與所有用於驗證的樣本數據集的對比精度。
如果一個網絡的訓練質量較高且沒有發生過擬合的情況下,那麼「training fidelity」和「validation fidelity」將在保持在同一個量級上。反之則需要調整網絡參數的定義並再次訓練。
通過「Detailed」欄中的下拉菜單,用戶可以查看任意一個樣本數據集中的任意一個變量的真值和網絡輸出的對比精度。「fidelity index」給出了總體對比精度的百分比值。其右側曲線可以分別從:時域/數據點分布/誤差分布,三個方面來查看該變量的訓練精度。
▲圖 2-15 精確度評價:時域/數據點分布/誤差分布
驗證完成後可以通過「Export」按鈕將該網絡一鍵導出。
▲圖 2-16網絡驗證
▶Export to ONNX format——將該網絡導出成ONNX文件。兼容ONNX的第三方軟體可以讀入該網絡。
▶Create submodel——首先會創建一個ONNX文件,然後AMESIM會將該文件導入並以子模型(submodel)的形式呈現。
導出成Simcenter Amesim子模型時,用戶需要指定Simcenter Amesim的庫名稱和子模型名稱便於後續索引。同時也要指定該庫的存放路徑。根據用戶電腦安裝編譯器的實際情況選擇編譯器類型,通常和Simcenter Amesim的編譯器指定為相同即可。
▲圖 2-17網絡導出參數設置
參考文獻
[1] Goodfellow, Ian, Yoshua Bengio, and Aaron Courville. Deep learning. MIT press, 2016
[2] Keras: The Python Deep Learning library: https://keras.io
[3] Open Neural Network Exchange format: https://onnx.ai
[4] Iwasaki, M.「Development of new energy saving cooling system SLIM」 Automotive Summit, Nov.2010.
[5] Rozier, T. 「From the modeling of AC system to the complete Vehicle Thermal Management using one single platform」 Haus der Technik 2008.
[6] Yagisawa, K. 「From AC to complete Vehicle Thermal Management Using LMS Imagine Lab. Amesim」 International LMS Engineering Simulation Conference Oct. 2008.