楊雷靜,王竣可,蘇 杭
(1.北京郵電大學 電子工程學院,北京 100876;2.湖北三江航天紅峰控制有限公司,孝感 432100)
1913 年,法國科學家G.Sagnac 提出了Sagnac 效應,即沿閉合光路相向傳播的兩光波之間的相位差正比于閉合光路法向的輸入角速度[1]。基于此原理,并結合光纖通信器件技術與工藝基礎的發展,1976 年,美國Utah 大學Victor Vali 和Richard W.Shorthill 在實驗室成功演示了第一個光纖陀螺儀(Fiber-Optic Gyroscope,FOG),標志著FOG 的誕生[2]。其應用范圍非常廣泛,主要包括慣導系統、汽車和船舶導航、無人機和機器人、防震和平穩系統、航空航天工業、石油和天然氣勘探等多個領域[3]。FOG 中核心光電子器件受溫度的影響性能指標會發生變化,主要受溫度影響的是光纖環,根據Shupe 理論,溫度環境變化會直接導致FOG 產生相位誤差,從而導致FOG 的零偏誤差增大[4]。
由溫度變化引起的FOG 零偏誤差是非線性的,即隨著溫變速度的變化,漂移量不是恒定的,常常受到一段時間內大范圍溫度變化的影響,需要進行復雜的補償和校準。針對FOG 受溫度變化影響帶來的零偏誤差,研究人員建立了多種模型進行溫度誤差補償。總體而言,分為傳統溫度補償模型和神經網絡溫度補償模型,傳統的溫度補償模型有多項式算法、支持向量機等[5],相較而言,神經網絡對于復雜非線性關系具有良好的逼近能力,模型補償精度高,近年來,運用神經網絡模型對FOG 進行溫度補償成為探索趨勢。有學者采用反向傳播(Back Propagation,BP)神經網絡以及各種改進BP 神經網絡模型來補償FOG 溫度誤差[6]。但FOG 的輸出常常不是受到某一時刻的溫度影響,在一段時間范圍內溫度的變化都會影響FOG 的輸出,而BP 神經網絡簡單的全連接(Fully Connected,FC)結構只能依據單一時刻溫度影響來補償對應的溫度誤差,導致補償精度有限;有學者提出采用循環神經網絡(Recurrent Neural Network,RNN)來補償FOG溫度誤差,憑借RNN 的記憶性特點,可以有效改進BP 神經網絡模型的不足[7],但是RNN 只能記憶上一時刻的輸入值,對于全局的擬合效果不佳;有學者提出采用長短期記憶神經網絡模型(Long Short-Term Memory,LSTM)對FOG 進行溫度補償[8],LSTM 模型可以解決RNN 存在的長距離依賴以及梯度消失和梯度爆炸的問題,而對于LSTM 中的超參數選擇,常常通過試湊法決定,不具有客觀性,導致最終建模效果不佳。針對該問題,本文通過將粒子群算法(Particle Swarm Optimization,PSO)的慣性權重,個體學習因子,社會學習因子由固定值改變為分段非線性(Piecewise Nonlinear,PN)的動態值,對LSTM 模型超參數進行尋優,建立了PN-PSO-LSTM 模型。實驗結果表明,與BP 神經網絡模型、傳統PSO-LSTM 模型相比,本文提出的PN-PSO-LSTM 模型補償精度更高。
在FOG 諸多應用場景中,對實時性需求非常高,因為它直接影響系統的響應速度、穩定性和準確性,比如在航空航天、船舶和車輛導航系統中,需要實時獲取和處理陀螺儀提供的角速度和方向信息,以確保航行的準確性和安全性。采用神經網絡模型來提高補償精度時,其巨大的參數量和模型深度導致無法在計算資源有限的硬件設備進行推理,如何滿足FOG 實時性的需求是非常重要的研究課題。本文在綜合考慮FOG 實際應用場景、模型參數數量以及模型輸出精度后,為上述得到的優化模型提出了一套合適的壓縮方案來解決神經網絡對硬件資源消耗大的問題,包括知識蒸餾、參數剪枝、非線性函數線性化、定點數量化等方法。
神經網絡的計算是高度并行的,而FPGA 具有可實現大規模并行計算的能力。FPGA 中的可編程邏輯單元和內部存儲器可以同時執行多個計算任務,從而在神經網絡的推理過程中實現高效的并行計算。此外,FPGA 還具有低延遲、低功耗、靈活性等特征,綜上所述,本文采用Verilog 語言實現壓縮模型,并在搭載Xilinx 某型芯片的FPGA 開發板上測試成功。壓縮后模型相較于壓縮前模型大小減小94.1%,補償速度也比PC 端提升98.47%。
在光纖環中,存在兩束干涉光,分別按順時針(Clock Wise,CW)和逆時針(Counter Clock Wise,CCW)方向傳播。當環境溫度發生變化時,光纖的折射率也發生變化,導致兩束光在經過距離端點處z的一段光纖基元dz時產生相位延遲,其計算公式如下:
式(1)(2)中,?cw(t)為順時針光沿光纖環傳輸產生的相移;?ccw(t)為逆時針光沿光纖環傳輸產生的相移;L為光纖環長度;n為光纖折射率,β0為光在真空中的傳輸系數,其值為2π/λ,λ為光波長,c為光在光纖環中傳播的速度,T為光纖內溫度,ΔT為光纖環z點處的溫度變化量。式(1)與式(2)相減并化簡得到光纖環溫度變化產生的Shupe 誤差為:
式(3)表明,環境溫度引起的相位誤差 Δ?(t)與溫度、溫度變化率等有關。由IEEEStd952-1997 標準提供的單軸FOG 溫度誤差模型如下[9]:
式(4)中,E為溫度誤差,DT為漂移速率溫度敏感系數,ΔT為溫度變化,DdT為溫度斜坡漂移速率敏感系數,dT/dt為溫度變化率,為時變溫度梯度漂移率敏感系數,為溫度梯度。FOG 內部溫度場分布的復雜性導致溫度梯度的測量變得困難。因此,建立FOG 溫度誤差、溫度以及溫度變化率之間的關系,補償FOG 的輸出,提高FOG 的輸出精度。
LSTM 是Hochreiter 等提出的RNN 的變體,其具有記憶長短期信息的能力。該模型引入門結構,將系統認為重要時刻的數據信息一直保留傳遞,而不像RNN 只保留上一時刻的數據信息,這對FOG 溫度變化帶來的誤差有更好的補償效果。相較于RNN,LSTM克服了機器學習中梯度消失和梯度爆炸的問題[10]。LSTM 單元的狀態是由長期記憶單元和各個門控結構組成,其單元結構如圖1 所示。

圖2 LSTM 整體模型圖Fig.2 LSTM over all model diagram
首先,定義長期記憶單元的值,記作c。在每個時間步驟t,LSTM 單元會接收到一個輸入值xt和前一個時間步驟的狀態值ht-1。然后,它會計算輸入門it、遺忘門ft、數據輸入gt和輸出門ot的值,這些值由式(5)-(8)計算得出:
其中,Wi、Wf、Wg和Wo是權重矩陣,bi、bf、bg和bo是偏置向量,σ是sigmoid 函數。接下來LSTM單元會更新長期記憶單元ct的值,使用式(9)計算得出:
其中,⊙表示對應相乘,ct-1表示上一時刻的長期記憶單元值。最后LSTM 單元會根據輸出門ot和長期記憶單元ct的值,計算當前時刻的輸出值ht:
這樣LSTM 模型可以自適應地選擇何時讀取或遺忘過去的信息,以及何時輸出當前的信息。對于FOG溫度補償模型,由于溫度是連續的數據,LSTM 模型可以保留整段溫度參數中對系統影響最大的數據,來更好地補償修正FOG 零偏輸出。本文以溫度和溫度變化率作為輸入,溫度補償值作為輸出,一層LSTM 層,一層FC 層進行建模。
LSTM 模型在訓練時需要人為調整的超參數有學習率,神經元個數,通過試湊法往往導致訓練結果陷入局部最優解,本文采用改進PSO 算法來優化LSTM溫度補償模型。
PSO 算法的基本原理是通過模擬生物群體中個體間的信息交流和協作來搜索最優解。算法中的“粒子”是搜索空間中的一個候選解,每個粒子都有一個位置和速度向量,表示它當前的搜索狀態和搜索方向。每個粒子根據自身經驗和群體經驗來更新自己的速度和位置,以期望更好地搜索到全局最優解[11]。
基本流程為:
(1)隨機生成一定數量的粒子,粒子的位置向量中包含了LSTM 模型中待優化的超參數,并隨機給定它們的初始位置和速度。
(2)分別使用每個粒子中的LSTM 超參數進行訓練,根據訓練結果與真實零偏輸出計算均方誤差(Mean Square Error,MSE)得到每個粒子的適應度。
(3)對于每個粒子,將其適應度與其歷史最優位置的適應度相比,若更好就替代其位置成為歷史最優位置。再從所有粒子的歷史最優位置中,選擇全局最優位置。
(4)根據式(11)(12),更新每個粒子的速度和位置,其中ω、c1、c2分別為慣性權重、個體學習因子和社會學習因子,r1、r2為[0,1]范圍內均勻分布的隨機數:
其中,vk表示第k次粒子的速度,xk表示其位置,表示其個體歷史最優位置表示全局最優位置。
(5)判斷是否滿足停止條件(如達到最大迭代次數或目標函數值小于某個閾值),如果滿足,則算法結束;否則,回到第(2)步。
在標準的PSO 里,慣性權重ω,個體學習因子c1,社會學習因子c2分別都是固定的一個經驗值,這無法保證系統在尋優過程中既滿足大范圍搜尋的同時又盡可能穩定地收斂,因此帶來了局限性。慣性權重控制PSO 算法中探索和開發之間的平衡。更高的慣性權重意味著粒子將更頻繁地移動到新的鄰域,增加探索。另一方面,較小的慣性權重可以使粒子保持在相同的鄰域附近,并在其中尋找最優解。針對ω,文獻[12]提出采用線性變換ω代替固定值,但是其搜尋能力和收斂穩定性有限,本文采用式(13),即分段非線性ω代替標準PSO 算法里的ω:
式(13)中,ωmax、ωmin為慣性權重的最大值和最小值;Tmax為最大迭代次數;k為當前迭代次數。如圖3 所示,對比傳統線性變換ω,采用式(13)時,ω在尋優初始階段從ωmax更加緩慢地減小,可以在初始階段保持一個較大的值,使系統盡可能探索更多的領域;在尋優結束階段,ω減小到ωmin的變化率也更加平緩,使粒子在結束階段時能盡可能在自身附近尋優,系統更加穩定。

圖3 ω 隨迭代次數k 變化圖Fig.3 Graph of ω changing with number of iterations k

圖4 PN-PSO-LSTM 算法流程圖Fig.4 PN-PSO-LSTM algorithm flowchart
當增大c1時,會增強粒子的個體認知能力,但是收斂速度緩慢;當增大c2時,會增強粒子的社會認知能力,收斂速度迅速,但是極易使算法早熟。為了保證PSO 算法的搜索能力和協調粒子的個體認知及社會認知能力,采用與構建ω相同的方法,將c1、c2的取值與粒子當前的迭代次數聯系起來。其函數表達式為:
式中,c1max、c1min、c2max和c2min為c1、c2的最大值和最小值;Tmax為最大迭代次數;k為當前迭代次數。
在本實驗中,將課題組某型FOG 置于溫箱的水平轉臺上,FOG 敏感軸指向天頂,并將溫度設定為-20℃,溫箱變溫速率配置為4℃/min,隨后逐漸升溫至60℃,每隔一秒采集溫度數據和FOG 輸出數據。先在相同的條件下進行兩次實驗,得到兩組數據。其中一組數據用作訓練集,另一組數據用作測試集,再在不同溫變速率下分別進行一組升溫實驗和降溫實驗,得到二組數據作為驗證集,來驗證溫度補償模型在不同溫度條件下的適應性。然后將得到的數據進行100 s 滑動平均,再經過歸一化得到實驗所需FOG 誤差和溫度數據,最后分別進行 BP 神經網絡,PSO-LSTM,PN-PSO-LSTM 建模進行補償,得到實驗結果如下。
圖5、圖6、圖7 分別為采用BP 神經網絡模型,傳統PSO-LSTM 模型以及PN-PSO-LSTM 網絡模型的訓練結果,以及各模型對應的補償結果。表1 顯示了各模型的補償MSE、零偏穩定性和角度隨機游走,對比可得,PN-PSO-LSTM 網絡模型補償結果的均方誤差相較于BP 網絡模型降低74.4%,相較于PSO-LSTM模型降低53.5%;零偏穩定性相較于BP 模型降低48.8%,相較于PSO-LSTM 模型降低31.6%;角度隨機游走相較于BP 模型降低49.6%,相較于PSO-LSTM模型降低30.4%,補償效果均有較大的提高。圖8、圖9 為改變溫度條件后,分別采用三種模型對FOG 零偏輸出進行補償的結果圖,表2 為在升溫條件下驗證集上各模型的補償MSE、零偏穩定性和角度隨機游走,對比可得PN-PSO-LSTM 網絡模型補償結果的均方誤差相較于BP 網絡模型降低72.5%,相較于PSO-LSTM 模型降低59.4%;零偏穩定性相較于BP模型降低33.3%,相較于PSO-LSTM 模型降低29.1%;角度隨機游走相較于BP 模型降低55.8%,相較于PSO-LSTM 模型降低41.0%;表3 為在降溫條件下驗證集上各模型的補償MSE、零偏穩定性和角度隨機游走,對比可得PN-PSO-LSTM 網絡模型補償結果的均方誤差相較于BP 網絡模型降低65.0%,相較于PSO-LSTM 模型降低57.0%;零偏穩定性相較于BP模型降低30.5%,相較于PSO-LSTM 模型降低28.6%;角度隨機游走相較于BP 模型降低40.2%,相較于PSO-LSTM 模型降低35.7%。

表1 各算法效果對比Tab.1 Comparison of the effectiveness of various algorithms

表2 驗證集各算法效果對比(升溫)Tab.2 Comparison of the effectiveness of various algorithms in the validation set with temperature rising

表3 驗證集各算法效果對比(降溫)Tab.3 Comparison of the effectiveness of various algorithms in the validation set with temperature decreasing

圖5 BP 神經網絡補償結果圖Fig.5 BP neural network compensation result diagram

圖6 PSO-LSTM 補償結果圖Fig.6 PSO-LSTM compensation result diagram

圖7 PN-PSO-LSTM 補償結果圖Fig.7 PN-PSO-LSTM compensation result diagram

圖8 升溫條件下各模型補償效果圖Fig.8 Compensation effect diagram of each model under heating conditions

圖9 降溫條件下各模型補償效果圖Fig.9 Compensation effect diagram of each model under cooling conditions
深度學習模型通常具有巨大的參數數量,需要大量的存儲空間。對于移動設備、邊緣設備和云平臺等資源受限的環境,壓縮模型可以減少存儲需求,降低模型部署和傳輸的成本,對于實時應用場景至關重要。深度學習模型壓縮是在保持模型性能的前提下減小模型的存儲空間和計算成本的過程,可以為深度學習模型提供更廣泛的應用場景[13]。
基于上一節訓練好的模型,本文設計并實現了一套適用于FOG 應用場景的壓縮方案。壓縮方案包括:(1)知識蒸餾;(2)模型剪枝;(3)非線性函數線性化;(4)定點數量化。流程圖如圖10 所示。

圖10 壓縮流程圖Fig.10 Compression flowchart
知識蒸餾是模型壓縮的一種常用方法,最早是由Hinton 在2015 年首次提出并應用在分類任務上面。知識蒸餾中的大模型稱為教師模型,小模型稱為學生模型。來自教師型輸出的監督信息稱為知識,而學生模型學習遷移來自教師模型的監督信息的過程稱為蒸餾。不同于一般的模型壓縮,由于實時性的需求,FOG輸出數據是單獨連續的,所以模型補償數據也需要單獨連續,即神經網絡模型在進行推理時不能像訓練那樣將多組數據進行打包輸入。又因為LSTM 模型具有記憶特征,對于溫度補償誤差來說,其訓練與推理對輸入數據的打包數量需要統一。這就導致了對實時性有要求的小模型在每次訓練時需要單組數據進行輸入,訓練速度大大降低。對于上一節訓練好的高精度模型,采用知識蒸餾的壓縮方法訓練得到小模型,這不僅解決了大模型訓練時由于單組數據輸入帶來的訓練速度緩慢問題,也比直接訓練得到的小模型精度更高。經過知識蒸餾,神經元個數減少50%。
模型剪枝是一種通過減少模型中不必要或冗余的參數和連接來壓縮模型的技術,它的目標是在保持模型性能的同時減小模型的存儲空間和計算成本。top-k剪枝方法是一種簡單有效且具有高靈活性的剪枝方法[15]。本文采用top-k 剪枝方法,剪枝原理如圖11 所示:基于式(5)-(8),一個輸入維數為ni,輸出維數為no的LSTM 層,有ht-1∈Rno×1,Wh∈Rno×no,先將Wh進行分組,每組c個元素,在c個元素中只保留絕對值最大的k個,其余賦0 值。在本文中,針對輸入為2輸出為16 的LSTM 層,在大量實驗測試后,選取c=4,k=2 進行剪枝,最終Wh參數量減半,即Wh∈R8×16。同理,針對16 輸入,1 輸出的全連接層的權重也用相同剪枝方法,對于Wh與Wfc,參數量減少50%。至此,整體模型參數減少84%。

圖11 Top-k 剪枝示意圖Fig.11 Top k pruning diagram
由于LSTM 模型中的非線性激活函數tanh 函數和sigmoid 函數需要復雜的指數運算,這些運算在FPGA上具有較高的計算復雜度,而分段線性函數僅需要簡單的比較和乘法操作,計算復雜度較低,能夠更有效地在硬件上實現。將非線性激活函數改為分段線性函數可以更好地適應硬件資源的分配和利用,提高FPGA 的效率。本文采用式(16)代替tanh 函數,用式(17)代替sigmoid 函數。
在基于PyTorch 框架下訓練得到的LSTM 模型,其參數為32 位浮點數,浮點數計算需要更多的計算資源。相比之下,定點數計算可以使用更簡單和高效的算術運算,減少了計算復雜度,提高了計算效率,本文采用線性量化將輸入數據及各參數進行量化[16]。線性量化的原理由式(18)(19)給出:
其中W為原數據,m為整數位比特數,f為小數位比特數,因為是有符號數,最終Qm,f所占比特數為m+f+1。本文在綜合考慮FPGA 內存占比和模型精度后,對參數采取12 比特量化,其中8 比特小數位,3 比特整數位,1 比特符號位。量化比特數與誤差如表4所示。

表4 量化對比Tab.4 Quantitative comparison
最終完成模型壓縮后實驗結果如圖12 和表5 所示,在模型壓縮后,其補償誤差仍然比BP 神經網絡模型低59.4%,比傳統PSO-LSTM 神經網絡模型低26.1%。對比全精度PN-PSO-LSTM 模型,誤差增加58.8%,模型大小減小94.1%。

表5 壓縮后效果對比Tab.5 Comparison of compressed effects

圖12 壓縮后模型補償結果圖Fig.12 Diagram of model compensation results after compression
基于Xilinx 公司某芯片,采用Verilog 語言實現壓縮后的模型,整體系統框圖如圖13 所示,主要包括LSTM 模塊和FC 模塊[17]。其核心是采用使能信號控制的思想,完成式(5)~式(10)的運算。為保證中間運算過程數據精度的同時盡可能減少資源占比,通過大量實驗測試,將輸入數據位數設置為23 bit,最終運算結果位數保留為45 bit。

圖13 系統整體框圖Fig.13 Overall system block diagram
LSTM 模塊設計框圖如圖14 所示。(1)首先將存有剪枝后非零權重的位置信息的數據以二進制格式存入Vivado ROM IP 核中,同時將上一時刻輸出ht-1一起輸入路復用器中,通過對比非零權重位置信息的數據,選擇性輸出與非零權重位置對應的ht-1值,而其余ht-1值將不會被輸入計算。

圖14 LSTM 設計框圖Fig.14 LSTM design block diagram
(2)再將權重數據Wi、Wf、Wg和Wo,偏置數據bi、bf、bg和bo也存入ROM IP 核中,結合輸入xt一起傳入矩陣向量乘法器中,xt先與Wi、Wf、Wg和Wo進行矩陣乘法運算,再與對應偏置相加得到計算結果。然后經過激活函數的運算,原本非線性激活函數經過第3 節線性化之后,只需要進行簡單移位運算和加減法運算即可,最后經過激活函數運算可得it、ft、gt、ot四個門控值,即完成了式(5)~式(8)的運算過程。
(3)將輸出it、ft、gt輸入C 運算單元,同時將上一時刻ct-1從移位寄存器中輸入C 運算單元,ft和ct-1完成對應相乘運算,it和gt完成對應相乘運算,然后再將兩結果相加,可計算得到ct,即完成了式(9)的運算過程。
(4)將ct輸入移位寄存器保存,以便與下一時刻的各數據計算,同時將ct、ot輸入H 運算單元,在H運算單元中,ct先經過激活函數tanh,計算過程與第(2)步中激活函數運算一樣,計算結果再與ot對應相乘,得到ht。
(5)將H 運算單元運算結果ht輸入移位寄存器,以便與下一時刻各數據進行計算。
(6)移位寄存器輸出ht給FC 模塊,同時回到(1),進行循環計算。
FC 層結構和LSTM 模塊相似,直接將FC 層權重、偏置、非零權重位置信息以及LSTM 層ht輸入矩陣向量乘法器,最終輸出即為整體模型輸出結果。Vivado2018.3 仿真結果如圖15 所示,由于FPGA 運算過程中對數據位有截斷,所以推理結果與PC 端有些許誤差,推理結果對比如圖16 所示,誤差對比如表6所示。可見推理結果與PC 端推理結果相比誤差可忽略不計。

表6 FPGA 輸出結果對比Tab.6 Comparison of FPGA output

圖15 Vivado 仿真結果Fig.15 Vivado simulation results

圖16 FPGA 輸出結果與PC 對比圖Fig.16 Comparison between FPGA output results and PC
在速度方面,PC 端i7-13700CPU 推理速度為33.2 ms,而在FPGA 中,本文對時鐘的配置為50 MHz,圖17 為時序報告表,其中WNS 表示最差負時序裕量,意味著在實際需求的時鐘周期內有額外的2.114 ns 來滿足時序要求,所以實際運行周期是滿足配置的時鐘周期的,完整推理時間為0.508 ms,速度對比PC 端i7-13700CPU 提升98.47%。資源占比如表7 所示,可見充分合理利用了該FPGA 開發板的資源。

表7 資源占比Tab.7 Resource proportion

圖17 時序報告Fig.17 Timing report
本文通過分析 FOG 溫度誤差特性,提出PN-PSO-LSTM 溫度補償模型,對比傳統BP 神經網絡模型陀螺輸出零偏均方誤差降低74.4%,相較于PSO-LSTM 模型均方誤差降低53.5%。在此基礎上,針對FOG 溫度補償實時性的需求,設計了一套模型壓縮方案,在模型大小減小94.1%的同時,誤差仍然比傳統全精度模型更低。最后,對比PC 端i7-13700CPU,壓縮模型部署在FPGA 上后推理速度提升98.47%。綜上,本文實現了PN-PSO-LSTM 全精度溫度補償模型及相應的壓縮小模型,并完成了壓縮小模型的FPGA部署。針對不同的硬件資源和工程需要,可將全精度模型應用于硬件資源充裕且精度要求苛刻的場景,壓縮小模型應用于硬件資源受限且精度標準相對寬松的場景。