張 博 何海龍 顧振海 盧珊珊
(西安電子工程研究所 西安 710100)
穩定平臺的應用面非常廣泛。不僅車載跟蹤武器上用到,飛機吊艙也有涉及[1],而且是船上跟蹤系統不可缺少的組成部分。主要的干擾因素有在陸地上行駛受到的路面顛簸、空中飛行受到的氣流和飛行器振動以及海上風浪引起的搖擺。穩定平臺可以通過獲取傳感器采集的干擾信息,完成自身姿態解算,抵消掉控制帶寬允許的干擾,實現在干擾條件下,平臺保持相對穩定,為跟蹤系統提供平穩的跟蹤環境。隨著傳感器和控制技術不斷發展,穩定平臺的抗干擾能力也在不斷提高。由于平臺干擾通常是無規則的振動干擾,很難對其采用傳統建模分析。隨著人工智能領域深度學習技術的發展,神經網絡已經可以通過大量數據訓練捕捉無規則數據的潛在規律,在很多領域都實現了復雜信號的模擬建模。本文通過采用長短時記憶網絡算法(Long Short Term Memory Network,LSTM)[2]對虛擬振動數據進行深度學習,實現對新數據的預測,預測量可以作為穩定平臺的控制前饋,進而提高穩定平臺的控制精度。
在人工智能領域中,深度學習一直是備受關注的熱點話題。因為在過去幾年中很多事件都與它相關,比如用谷歌大腦[3](Google Brain)完成的貓臉識別、Alphago[4]在圍棋比賽中勝過李世石。深度學習算法確實在很多方面超越了傳統機器學習算法。
在深度學習的影響下,誕生了越來越多的計算支持或者框架,如Nivdia的cuda[5]、cuDnn,Google的tensorflow[6],Facebook的torch和微軟的PipeDream等等。
深度學習的實現過程通常是使用神經元搭建神經網絡,合理規劃的神經網絡拓撲結構,在經過大量數據訓練后,可以很好地記錄下數據輸入和輸出的潛在關系。訓練好的神經網絡可以依據記錄下的輸入和輸出關系計算出給定輸入的對應輸出。
當不同信號輸入到神經網絡時,為了得到指定輸出,會通過誤差反向傳播來自適應修改神經網絡各單元的權值,以到達下次輸入信號再給定時,可以得到離指定輸出更靠近的值。經過大量數據訓練后的神經網絡,由于權值(或者參數)已經可以滿足訓練集的輸入都可以正確得到期望輸出,所以當新的不在訓練集的數據信號輸入時,可以按照訓練數據的規律得到對應的輸出。如果新數據輸入和輸出的關系跟訓練數據集類似,那神經網絡的輸出將非常接近輸出值,因此神經網絡也被認為是一個萬能模型,可以反應很多復雜的數據內在關系。
RNN(Recurrent neural network,循環神經網絡)[7]主要用于處理有先后關系的序列數據。因為在傳統的神經網絡中,信息正向傳播通過輸入層、隱含層,最后由輸出層輸出,層與層之間都是全連接的,且每層之間的節點是沒有連接關系的。這種普通的神經網絡無法用來處理一些有先后關系的序列信息。例如,在機器翻譯應用中,同樣幾個詞,用不同順序排列會表示不同的意思。但是如果使用這幾個詞作為輸入元素,用普通神經網絡去訓練,不管這幾個詞的順序如何變化,輸出都不會變。也就無法翻譯出這幾個詞合成句子的真實含義。而RNN算法每處理一個輸入信息,都會考慮前一個輸入信息的狀態記憶,經過綜合處理后,得到一個輸出信息,即隱藏層之間的節點之間建立了先后連接。理論上,RNN能夠對任何長度的序列數據進行處理。
這種包含輸入層、隱藏層和輸出層的結構已經被證實可以等效表示更多層的網絡結構,所以圖1中的神經網絡中只有三層結構??梢悦黠@看到圖1中循環神經網絡模型的隱藏層比傳統神經網絡模型的隱藏層多出了一個環形結構。這個環形表示RNN隱藏層的輸入不僅有輸入層進來的信息,而且包括之前隱藏層輸出的信息。通過兩方面的信息進行權值調整,就對前后兩組數據進行了關聯,從而反應了帶有先后順序的數據之間的關系。

圖1 循環神經網絡結構
RNN算法原理圖如圖2所示。傳統神經網絡的隱藏層輸出可用公式(1)表示,偏置參數bi可以看成xn的一個特殊情況,通常被放到xn考慮。所以公式(1)的矩陣形式如公式(2)所示。

圖2 循環神經網絡原理圖

(1)
S=f(WinX)
(2)
St=f(WinX+WSSt-1)
(3)
公式(2)中S表示隱藏層的輸出狀態,其中St是當前LSTM單元的輸出狀態,St-1表示上一個LSTM單元的輸出狀態,Win是隱藏層的權值序列,X表示上一級輸入層的輸出,作為隱藏層的輸入。對比RNN的矩陣表達式(3),RNN多出了一個WsSt-1,使得隱藏層的輸出跟上一個單元的隱藏層輸出建立了關聯,假設輸入序列的每個輸入元素對應一個LSTM單元,通過這種隱藏層關聯就對序列每個元素的順序進行了聯系,可以更好地體現數據序列的先后順序差別。
RNN解決較短的數據序列問題非常有效。但是當數據序列過長時,會出現梯度消失等現象。因此在RNN的基礎上誕生了LSTM算法。
LSTM(Long Short-Term Memory,長短時記憶結構)由Sepp Hochreiter和Jurgen Schmidhuber兩人在1997年提出,并在后續工作中被許多人提煉和推廣,在很多問題上都有非常出色的表現,被廣泛使用。
圖3和圖4分別表示RNN網絡和LSTM網絡的一個單元的運算過程。圖3中的三個方框對應t-1、t、t+1三個相鄰的RNN單元。X表示輸入,h表示輸出,可以看到這些單元的輸入信息都有兩個,一個是x輸入,一個是上一單元的h輸出量。對于圖4中的LSTM單元,每一個單元的輸入信息有三個,除了x輸入量和上一單元的h輸出量外,還多了一個狀態輸出量(可以用C來表示)。對比圖3和圖4還可以看到RNN單元內部只有一個觸發(這里是tanh觸發[8]),而LSTM單元中除了一個觸發外,還有很多閾值處理。這種處理被分為三部分:遺忘門、輸入門、輸出門。

圖3 RNN單元運算過程

圖4 LSTM單元運算過程
ft=σ(Wf·[ht-1,xt]+bf)
(4)
LSTM的遺忘門示意圖如圖5所示。其中方框中的σ表示sigmoid函數處理。遺忘門的功能是決定哪些輸入信息應丟棄或者保留。來自前一單元的h輸出和當前x輸入的信息同時作為sigmoid函數的輸入量,輸出值介于0和1之間,如公式(4)所示,越接近0意味著越應該丟棄,越接近1意味著越應該保留。

圖5 LSTM的遺忘門示意圖

(5)
LSTM的輸入門示意圖如圖6所示。輸入門的功能是決定哪些輸入信息應該保存到單元中作為單元狀態C。如公式5所示輸入門由兩部分組成,第一部分是經過sigmoid函數輸出的0~1之間的值(可以看成是閾值)。第二部分是上一單元的h輸出和本單元的x輸入經過tanh觸發的主要包含當前信息的候選值向量。最后將兩部分的輸出值相乘,可以看到sigmoid函數的輸出閾值,決定了候選向量中哪些信息是重要且需要保留下來的。

圖6 LSTM的輸入門示意圖

(6)


圖7 LSTM的單元狀態示意圖

(7)
LSTM的輸出門示意圖如圖8所示。輸出門同樣有一個sigmoid函數的輸出閾值,通過和單元狀態Ct的tanh觸發輸出相乘的到了最終輸出ht。

圖8 LSTM的輸出門示意圖
在RNN的基礎上LSTM對數據進行了有篩選的記憶,通過遺忘門、輸入門和輸出門的閾值變化決定了信息遺忘、更新、傳遞的比例。從而可以適應長數據信息的深度學習。
穩定平臺遇到的振動干擾通常是沒有固定周期,幅值不確定的。但是在模擬平臺振動干擾時通常使用正弦曲線來測試。這里可以先用一個正弦曲線測試一下LSTM算法。輸入為如圖9所示的正弦信號,以每連續5個點的值作為輸入,來預測第6個點的值。

圖9 測試用數據
整個訓練過程是隨機從圖9曲線中取出連續的6個值(前5個作為輸入,第6個作為輸出),一共取600組作為訓練數據集。再在剩下的數據中隨機取300組作為驗證結果的測試數據集(根據前5個數算出第6個數的估計值,得到估計值與真值的誤差)。這里采用有6個單元的LSTM網絡作為模型網絡。當經過600組訓練數據經過72次迭代,1000次訓練周期后,得到的訓練誤差和輸出誤差如圖10所示。可見測試誤差和訓練誤差都接近于0,而且兩條曲線幾乎重合。表明LSTM網絡的權值參數已經充分訓練,具備通過前5個時刻的曲線數據來預測下一個時刻曲線數據的能力。

圖10 訓練誤差與輸出誤差
圖11中實線代表LSTM模型預測的數據,虛線代表輸入的連續5個時刻的數據。可以看到在同一時刻,預測數據在上升和下降過程中都優先于5個輸入數據,并且趨勢和輸入曲線保持一致。

圖11 預測的曲線數據
經過訓練的LSTM模型參數可以移植到FPGA搭建的相同模型中,以實現相同的預測功能。
穩定平臺振動干擾的周期是不固定的,但是可以通過自身姿態調解抵消的只有部分周期的干擾。這里模擬周期變化的正弦曲線進行LSTM模型輸入,來實現對隨機周期曲線的預測。
用多周期拼接出的測試數據如圖12所示,用同樣的6個單元的LSTM網絡作為模型。訓練后的誤差如圖13所示。

圖12 測試用多周期數據
圖13和圖10相比測試誤差出現了波動,可見當周期隨機時,預測結果出現了明顯誤差,但是都在0.03°以內。取隨機一個周期測試模型的結果如圖14所示。

圖13 隨機周期誤差

圖14 隨機周期波形預測
當為了提高本文LSTM對變幅值正弦曲線的適用性,在隨機周期的訓練參數的基礎上隨機改變幅值,得到如圖15所示的訓練數據。

圖15 測試用多周期隨機幅值數據
對于頻率隨機和幅值隨機的波效預測,之前的6個LSTM單元已經無法達到要求了,只能把單元數增加到12個最后得到了比較好的預測結果。預測誤差和預測結果分別如圖16和圖17所示。

圖16 隨機周期隨機幅值誤差

圖17 隨機周期隨機幅值波形預測
從測試結果上看12個LSTM單元組成的網絡已經可以很好地預測隨機頻率隨機幅值的曲線,且預測誤差都能達到0.3mil以內。
對于隨機正弦曲線,如果已知曲線頻率和曲線幅值,是可以直接用上一時刻的值計算出下一時刻的值的。所以LSTM網絡的關鍵其實是得到曲線頻率和幅值特征。如果使用兩組LSTM分別對輸入曲線進行幅頻特征的提取,就可以計算出下一時刻的值。由于LSTM網絡提取頻率和幅度信息相對于提取整個曲線規律信息要容易,所以可以用更少的LSTM單元數實現對隨機正弦曲線的預測。
但是對于穩定平臺的實際振動情況,需要用實際數據來實現對LSTM網絡模型的訓練,只要訓練數據具備實際情況的各種特征,合理規劃網絡結構是可以實現對隨機振動的預測功能的。
本文測試了用LSTM單元組成的模型可以實現對隨機周期隨機幅值的曲線值預測。雖然訓練時間很長,但是單次正向傳播時間很短,可以滿足實時解算要求。在實際使用中可搭建相同的模型,并將訓練好的參數寫入,以實現功能。
在LSTM的基礎上又衍生出了新的GRU(Gate Recurrent Unit,循環門單元)算法[9],運算量相對少一些,考慮到硬件的計算能力和時間成本,也可以考慮GRU算法來實現對穩定平臺控制的前饋預測。