神經網絡在Amesim中的理論介紹

2021-02-20 Simcenter 1D 系統仿真

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.

相關焦點

  • 神經網絡在複雜系統建模中的應用
    張國寧,陸軍指揮學院作戰實驗室,副教授,研究方向為作戰複雜系統建模及實驗神經網絡是模擬生物的大腦結構、工作模式的一種模型,廣泛應用於科研和工程中,是當前被世界各國大力推進、重點發展的人工智慧最重要的技術。「深度學習」的內核就是神經網絡。
  • 知識蒸餾:如何用一個神經網絡訓練另一個神經網絡
    如果你曾經用神經網絡來解決一個複雜的問題,你就會知道它們的尺寸可能非常巨大,包含數百萬個參數。例如著名的BERT模型約有1億1千萬參數。為了說明這一點,參見下圖中的NLP中最常見架構的參數數量。各種模型結構的參數數量在Kaggle競賽中,勝出的模型通常是由幾個模型組成的集合。
  • Python 實現 BP 神經網絡
    多層前向神經網絡由三部分組成:輸出層、隱藏層、輸出層,每層由單元組成;輸入層由訓練集的實例特徵向量傳入,經過連接結點的權重傳入下一層,前一層的輸出是下一層的輸入;隱藏層的個數是任意的,輸入層只有一層,輸出層也只有一層;除去輸入層之外,隱藏層和輸出層的層數和為n,則該神經網絡稱為n層神經網絡,如下圖為2層的神經網絡;一層中加權求和,根據非線性方程進行轉化輸出
  • 入門 | 一文了解神經網絡中的梯度爆炸
    本文將介紹深度神經網絡中的梯度爆炸問題。閱讀本文,你將了解:什麼是梯度爆炸?誤差梯度是神經網絡訓練過程中計算的方向和數量,用於以正確的方向和合適的量更新網絡權重。在深層網絡或循環神經網絡中,誤差梯度可在更新中累積,變成非常大的梯度,然後導致網絡權重的大幅更新,並因此使網絡變得不穩定。在極端情況下,權重的值變得非常大,以至於溢出,導致 NaN 值。網絡層之間的梯度(值大於 1.0)重複相乘導致的指數級增長會產生梯度爆炸。
  • ResNet:殘差神經網絡
    深度卷積網絡的瓶頸理論上,增加網絡層數後,網絡可以進行更加複雜的特徵模式的提取,所以當模型更深時可以取得更好的結果。但VGG、GoogLeNet等網絡單純增加層數遇到了一些瓶頸:簡單增加卷積層,訓練誤差不但沒有降低,反而越來越高。
  • 神經網絡訓練中回調函數的實用教程
    作者 | Andre Ye 編譯 | VK 來源 | Towards Data Science❝回調函數是神經網絡訓練的重要組成部分❞回調操作可以在訓練的各個階段執行回調可以利用許多創造性的方法來改進訓練和性能,節省計算資源,並提供有關神經網絡內部發生的事情的結論。本文將詳細介紹重要回調的基本原理和代碼,以及創建自定義回調的過程。ReduceLROnPlateau是Keras中默認包含的回調。
  • 2021年必火的圖神經網絡到底是什麼?
    )是一種基於圖結構的深度學習方法,從其定義中可以看出圖神經網絡主要由兩部分組成,即「圖」和「神經網絡」。這裡的「圖」是圖論中的圖數據結構,「神經網絡」是我們熟悉的深度學習NN結構,如MLP,CNN,RNN等。要了解圖神經網絡我們需要先回顧一下「圖」和「神經網絡」的基本概念。1.1圖的定義Definition 1 (圖):我們用來表示圖,其中V表示圖中所有節點的集合,E表示圖中所有邊的集合,
  • 圖神經網絡三劍客:GCN、GAT與GraphSAGE
    ©PaperWeekly 原創 · 作者|桑運鑫學校|上海交通大學研究方向|圖神經網絡在金融領域的應用2019 年號稱圖神經網絡元年,在各個領域關於圖神經網絡的研究爆發式增長。本文主要介紹一下三種常見圖神經網絡:GCN、GAT 以及 GraphSAGE。
  • 收藏 | 用 Keras 實現神經網絡來解決梯度消失的問題
    在這篇文章中,我們將學習如何使用Keras創建一個自歸一化的深度前饋神經網絡。這將解決梯度不穩定的問題,加速訓練收斂,提高模型性能。背景在他們的2010年裡程碑論文中,Xavier gloriot和Yoshua Bengio提供了關於訓練深度神經網絡困難的寶貴見解。
  • 機器學習之旅分享4 | 稀疏連接的張量神經網絡
    (Block-term Tensor Neural Networks)是指將稀疏連接的張量層Block-term tensor layer (BT-layers)應用於神經網絡中,目的在於保留甚至提升模型的數據表徵能力下,大大減少深度神經網絡 (DNNs)的模型參數。
  • 如何建立神經網絡預測模型
    最近忙畢設,公眾號好久沒更新,想來想去不知道寫啥,就講點畢設裡面用到的神經網絡預測模型吧!1 模型輸入輸出介紹1.1 回歸神經網絡模型輸入輸出介紹輸入神經元可以理解為自變量,輸出神經元可理解為因變量。圖1-1 三層神經網絡圖% 輸入數據矩陣,並將導入的結構數組轉換成矩陣u = cell2mat(struct2cell(load('data.mat'))); %導入mat文件數據p = u(1:5,:); %1-5行表示5個輸入神經元t = u(6:7,:);
  • 不使用先驗知識與複雜訓練策略,從頭訓練二值神經網絡!
    選自 arxiv作者:Joseph Bethge、Marvin Bornstein、Adrian Loy、Haojin Yang、Christoph Meinel機器之心編譯參與:張璽、路來自德國哈索普拉特納研究院 (Hasso Plattner Institute) 的研究者近日發布論文,介紹了他們提出的訓練二值神經網絡新方法
  • 神經網絡多樣性的意義何在?既然多層感知機在理論上已經可以擬合任何函數,為什麼要有不同的形式?
    這裡忽略了機器學習/深度學習中比較核心的一個問題:learning。是learning使得我們找到某個解。雖然多層感知機可以擬合一切well-behaving函數,甚至可以把卷積網絡包含。但給定數據之後,學習算法沒有足夠的inductive bias引導我們找到那個你真正想要的解。網絡結構的多樣性以及和數據分布的適配正是引入了這種inductive bias。
  • 神經網絡簡介(上)
    這類機器學習的系統會自行確定需要注意哪些特徵,神經網絡就是這類系統的例子。神經網絡神經網絡是一種深度學習算法,可以說它是最常見的深度學習算法,有時候會用神經網絡來代表深度學習詞。神經網絡可以從輸入數據進行學習到哪些特徵比較重要。神經網絡模型裡最基本的構建塊就是神經元。
  • 人工神經網絡之正反向傳播
    第一章以極度細微的方式介紹構成 ANN 的基本元素,比如層、節點、箭頭、轉換函數、權重和分數,並寫出 ANN 漂亮的代數和矩陣表達形式;第二章主講正向傳播和反向傳播,數學符號非常繁重,但是每小節都有一個簡單例子入手幫助理解後面嚴謹的數學推導;第三章用 Matlab 代碼實現一個簡單的識別手寫數字的 ANN。
  • 神經網絡中的蒸餾技術,從Softmax開始說起
    有時,你的單個模型可能太大(例如GPT-3),以至於通常不可能將其部署到資源受限的環境中。這就是為什麼我們一直在研究一些模型優化方法 ——量化和剪枝。在這個報告中,我們將討論一個非常厲害的模型優化技術 —— 知識蒸餾。Softmax告訴了我們什麼?當處理一個分類問題時,使用softmax作為神經網絡的最後一個激活單元是非常典型的用法。
  • 神經網絡架構之優化器與調度器詳解
    本文介紹使用優化器和調度器提升模型訓練和調整超參數前言優化器是神經網絡架構的重要組成部分。
  • 教程 | 神經網絡的奧秘之優化器的妙用
    選自 Towards Data Science機器之心編譯作者:Piotr Skalski參與:張璽、路加強對神經網絡內部運行流程的理解有助於研究者和開發者訓練神經網絡本文作者 Piotr Skalski 撰寫了一系列文章介紹神經網絡的奧秘,本文就是其中一篇,介紹了神經網絡訓練過程中的常見優化策略,並進行了分析和對比,包括梯度下降、小批量梯度下降、動量梯度下降、RMSProp、Adam 等。之前的文章介紹了,我可以只使用 Numpy 來創建神經網絡。這項挑戰性工作極大地加深了我對神經網絡內部運行流程的理解,還使我意識到影響神經網表現的因素有很多。
  • 神經網絡中的幾個FM家族模型(FNN、NFM、AFM、DeepFM)
    本章將介紹幾個經典的FM家族模型,並從內部演化的角度來探討它們之間的聯繫與區別,這幾個模型如圖1中的虛線框所示。圖1首先,我們先簡要回顧一下FM模型(更詳細的介紹請見之前的文章:再看FM模型)。FM是因子分解機(Factorization Machines,2010)的簡稱,實現了特徵的兩兩自動交叉,通過特徵隱向量的內積來學習交叉特徵的權重。
  • 深度 | 輕量級深度卷積神經網絡在農業機器人中的應用
    在本文中,作者提出了學習輕量級模型的一個非常新穎的方式,在實現精度超過 90% 的同時讓訓練速度快了一個數量級,讓參數也少了一個數量級。作者主要使用了以下三個步驟:1). 將預先訓練好的模型適應於手頭的任務中。2). 在適應的模型中使用模型壓縮技術來學習到一個具有更少參數的輕量級深度卷積神經網絡(DCNN)3).