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