趙 宇
(國家廣播電視總局2021 臺,黑龍江 齊齊哈爾 161000)
人工智能技術在本文中特指基于深度學習技術算法的人工智能技術,深度學習算法在模式識別、特征提取等方面有著廣泛的應用。 其對數據結果的預測也是目前研究的熱門方向,在各行業中,設計者試圖通過對神經網絡模型的訓練,使AI 不斷接近甚至超過人類對事物的判斷和預測能力。
Automl 目前的主要研究領域為元學習及神經架構自動搜索,其中神經架構自動搜索技術較為重要,通常將神經網絡的超參數自動優化也包括在神經架構自動搜索技術中。
本文探討了基于神經架構自動搜索技術(Neural Architecture Auto-search,NAS)生成的神經網絡,應用于無線短波發射機設備故障預測的研究及實現,對設備故障的預測本質是一個分類及回歸問題[1]。 何種神經網絡結構能夠較好地完成該類任務,本研究將這個問題交給Automl 技術進行自動處理,最后進行結果測試。
目前為止,包括商用與開源的Automl 框架平臺為數不多,如AZURE,谷歌的Automl,Auto-sklearn,MLBox,TPOT,H2O Automl 等,其中除谷歌的Automl 外,大部分框架難以訓練出現代的深度學習網絡,Auto keras 是能與谷歌Automl 在支持技術上對標的一個開源深度強化學習框架[2]。
Auto keras 框架使用的是加強型NAS 技術即enas,enas 技術以圖論為基礎,針對如何自動構建神經網絡結構這一問題,究其本質是針對可變長的結構序列進行結構空間的搜索。 因此,與NAS 技術類似,enas 使用一個擅長序列處理的RNN 循環神經網絡作為其生成真實網絡的控制器(見圖1),可稱之為controller 網絡,該controller 網絡對將要生成的真實網絡按照有向圖的拓撲結構進行空間搜索,RNN 鏈上的每一個生成節點都預測之前的殘差及算子,多次迭代生成子網后,針對精度反饋再反向訓練controller 網絡,直至搜索收斂出最優結構及參數。
圖1 RNN 控制網絡原理
其中enas 較NAS 的優勢在于,它是依據圖論、子圖的共享權值,因此在訓練過程中相當于遷移學習,避免重新訓練子模型,因此非常高效,而NAS 技術僅使用梯度策略進行模型的訓練,效率相對較低。
人工神經網絡的計算需要調用大量的計算機程序,因此,整個故障預測系統的結構考慮設定為分布式計算結構,將訓練機和投入使用的預測機分布在不同的層次,在運行時支持同步計算和同步預測。
無線短波發射系統的核心是短波發射機,一部大功率的短波發射機通常關聯了復雜的子系統,如控制操作系統、冷卻控制系統、真空電子管器件、音頻處理系統、調制系統、電力系統等。 其故障的種類和規律具有多樣性,因此,如果要設計一個用于故障預測的系統,首先必須避免進行模型的多分類計算,而是通過將所有子系統匯集到中央控制系統的故障信息輸出,針對每一個單獨的故障類型使用Auto keras 進行單獨故障建模,最后部署至應用場景時,確保多個模型是分布式并行預測的。 匯總計算結果,能得到最終的預測結果。
基于此,整個預測系統的架構設計如圖2 所示。
圖2 訓練數據集部分數據
(1)自動化訓練機。 存取發射機中央控制系統的秒數據,對故障歷史信息進行自動分類的存儲管理,形成大數據庫,提供故障數據集、干擾數據集的文件格式導出功能。 同時,該機會自主統計所有故障的發生頻率,形成一個排序統計表,按照故障發生的頻度對要訓練的模型進行優先排序。 進行訓練時,系統先根據該故障進行數據回溯,并隨機抽取數據啟動Auto keras 進行模型的生成,訓練完成后進行模型的保存、自主生成網絡結構的圖片展示及精度的匯報,供操作人員決定是否使用該模型,然后進行下一條故障模型的搜索生成。 對于不同的故障類型,此訓練活動是不定期的,是否進行自動化訓練取決于近期該故障的數據集是否采集到足夠多的新數據。 另外,考慮到每一次自動訓練耗時較長(一般為十幾個小時到幾天時間),訓練機采用多機分布式輪流訓練結構,每臺訓練機都會配置支持cuda 的顯卡,并提供終止自動訓練和手動訓練的功能。
(2)故障預測系統。 提供前端顯示界面的主機,匯總實時計算結果,支持故障預測結果的顯示。
(3)分布式預測機。 使用由Auto keras 生成的模型進行故障預測的主機(或虛擬主機),每一臺預測機在接到實時秒數據后都將應用自己的預測模型給出預測結果至數據庫。 每臺預測機使用的預測模型由操作人員根據自動訓練機產生的模型擇優選擇上傳使用。
短波發射機的故障預測系統設計,首先要進行數據集數據的選取。 為了能夠較好地解決這個問題,通常的選取原則是多因素、多維度,為防止訓練結果的過擬合,樣本量要足夠大[3]。 而用于訓練神經網絡的數據集的完備程度,依賴于短波發射機房數據的采集廣度和深度,針對短波發射機的故障預測,關聯性較大的數據有:溫度控制數據、發射機運行秒數據、該種故障發生的歷史頻度作為先驗經驗。 這些數據的采集依賴于機房的信息化建設,可以通過發射機設備的通信接口、單片機的通信接口、數據的統計計算等途徑,進行程序的開發獲得。
以上述數據為例,構建如圖2 所示數據集trainval(由訓練機自動生成),數據集的格式為csv 格式,便于Auto keras 中的結構化數據分類器進行讀取,其中defected 代表故障發生的標簽,該數據集包含了短波發射機故障發生前數十秒的數據的平均統計值,也包含了并未發生故障用于訓練模型的干擾條目。 同理生成另外的一份數據集evalval 用于測試最終模型生成的效果。
在訓練機上部署anaconda 虛擬環境,在虛擬的Python3.9 環境下安裝tensorflow 和Auto keras 框架,Auto keras 框架基于keras,而keras 在后期被包含于tensorflow 中,無須單獨安裝,因此,可以從keras 框架導入plot_model 用于對自動生成的神經網絡進行繪圖,以便于直觀地了解程序自動生成的神經網絡的層次結構。 前期準備代碼如下:
可以預見,短波發射機的故障預測問題是一個數據的分類問題。
Auto keras 框架的使用便捷靈活,首先是初始化結構化數據分類器tructuredDataClassifier:
這里設置max_trials=3,表示keras 進行神經網絡架構搜索時,最多嘗試3 種不同的神經網絡單元,與谷歌Automl 一樣,Auto keras 支持的神經網絡模型有:卷積神經網絡(CNN)、循環神經網絡(RNN)、長短期記憶網絡(LSTM)。
Auto keras 的分類器初始化完畢后,開始進行訓練數據集train 的數據填充:
為了測試方便,這里設置訓練集在神經網絡中的傳播迭代周期為10,即epochs=10,加大該值將增長模型生成的時間及計算成本。
準備完畢,開始搜索最優模型,程序在這里進行模型結構的自我生成,也是enas 技術的核心運行階段:
predicted_y = clf.predict(test_file_path)
Auto keras 最終給出的神經網絡結構如圖4 所示:
圖4 最終的神經網絡結構
可見,Auto keras 認為解決該問題的最優模型應使用較多的全連接神經網絡結構,即dense 層。
最后,對該模型使用驗證數據集evalval 進行效果評估,
print(clf.evaluate(test_file_path,"survived"))
結果如圖5 所示:
圖5 測試結果
可見,使用Auto keras 生成、而非人為設計的神經網絡的準確率達到了81.43%,導出此模型并上載至預測機,即可對短波發射機的實時秒數據進行故障預測。
通過對Auto keras 的實際使用及測試可以發現,Automl 技術自動生成的神經網絡應用效果與人工進行結構設計、超參數調優的神經網絡的應用效果較為接近。 在進行人工設計神經網絡時,結構設計及超參調優往往依靠專家經驗和知識,時間和調整的成本與Automl 技術相比處于劣勢。 解決復雜問題或者設計結構復雜的深度神經網絡,需要較多的生成模型且要獲得相對不錯的計算結果時,使用Automl 技術不失為一種高效的方法。