張穎博 ,劉音華,* ,劉婭
(1.中國科學院國家授時中心,西安 710600;2.中國科學院大學,北京 101408)
精確的鐘差預報可以運用在實時動態(tài)精密單點定位、衛(wèi)星自主導航以及接收機自主完好性檢測等方面[1]。在時間尺度的計算,為時間保持提供實時駕馭參考也很重要[2]。此外,鐘差預報在時間測量、時間比對等方面可以與實測的鐘差數(shù)據(jù)形成對照,度量測量的鐘差精確性等領(lǐng)域都具有十分重要的意義[3]。
比較成熟的鐘差預報模型有多項式QP 模型、灰色GM(1,1)模型、時間序列模型:典型的有ARMA 模型、神經(jīng)網(wǎng)絡(luò)模型等[4]。QP 模型形式簡單,但是容易受到噪聲和鐘差中的周期項影響,精度難以進一步提升[5]。GM(1,1)模型的灰微分方程與擬合的微分方程難以完全一致,影響模型的預報精度[6]。ARMA 模型的計算方法比較繁瑣,對非平穩(wěn)序列預報精度低[7]。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)由于結(jié)構(gòu)簡單、具有較強的非線性映射能力,在非線性擬合,預測數(shù)據(jù)等方面應(yīng)用十分廣泛[8]。
鐘差信號存在著頻率源的不穩(wěn)定性和多種噪聲,鐘差由趨勢項(頻率偏差產(chǎn)生)和非平穩(wěn)項(各類噪聲產(chǎn)生)組成[9]。而BP 模型則是利用非線性基函數(shù)實現(xiàn)從輸入到輸出的非線性映射,可以通過訓練來接近任何非線性函數(shù)[10]。網(wǎng)絡(luò)沿著誤差減小最快方向通過反向計算對權(quán)值和閾值進行調(diào)整,隨著訓練的進行,最終的誤差會逐漸減小。但是采用BP 模型預報鐘差過程中,初始權(quán)值和閾值為隨機值,經(jīng)過訓練可能陷入局部極值,即局部最優(yōu)解,錯失全局極值點,造成網(wǎng)絡(luò)訓練結(jié)果具有偶然性,導致鐘差預報結(jié)果有較大的不穩(wěn)定性。
針對這一問題,利用粒子群優(yōu)化(PSO)BP 神經(jīng)網(wǎng)絡(luò)的算法來提高鐘差預報的穩(wěn)定性和精確性。然而標準的粒子群算法也有陷入局部極值、后期收斂慢的問題[11]。因此需要改進粒子群優(yōu)化算法中重要參數(shù)的生成方法,然后進行迭代計算BP 神經(jīng)網(wǎng)絡(luò)最優(yōu)的初始權(quán)值和閾值。經(jīng)過試驗分析,改進后的PSO-BP 算法可以進一步提高鐘差預報精度。
對粒子群優(yōu)化算法中的三個重要參數(shù)的生成方法進行改進。從原本固定不變的值,優(yōu)化為隨著迭代不斷更新的值。
粒子群優(yōu)化算法中的粒子通過群內(nèi)相互學習、信息傳遞以及個體積累自身尋優(yōu)的經(jīng)驗,聚成一個群體,并且朝著目標——最優(yōu)位置前進,粒子通過個體最優(yōu)和群體最優(yōu)兩個位置向量更新自身的位置[12,13]。用適應(yīng)度函數(shù)來度量每次迭代運算時粒子得到的最優(yōu)位置。
求解方法如下:假設(shè)群體有s個粒子,每個粒子是D維向量,其中第i個粒子(i=1,2,…,s)的位置向量記為Xi=(xi1,xi2,…,xiD),粒子i每次迭代的最優(yōu)位置為Pi=(pi1,pi2,…,piD),所有粒子每次迭代的最優(yōu)位置為Pg=(pg1,pg2,…,pgD),粒子i的速度為Vi=(vi1,vi2,…,viD)。粒子i的第d維位置更新如式(1)和式(2)所示。
式中:k——迭代次數(shù);d——粒子i的維數(shù),取值1,2,…,D;ω——慣性權(quán)值;c1——個體學習因子;r1,r2——隨機值;c2——群體因子;α——速度的權(quán)重。
此外,防止粒子盲目搜索,將vid限制在(-vmax,vmax);xid限制在(-xmax,xmax)。
ω越大,粒子速度在相鄰兩次迭代計算時幅度變化越大,越有利于全局尋優(yōu);反之ω值越小,對于局部尋優(yōu)更有利[14]。為了平衡算法中全局尋優(yōu)和局部尋優(yōu)的能力,對PSO 算法中ω采用非線性遞減生成方法,原理如式(3)所示
式中:k——當前迭代次數(shù);ωmax——慣性權(quán)重的最大值,一般取0.9;ωmin——最小值,一般取0.4;K——總的迭代次數(shù)。
隨著運算的進行,ω非線性遞減。開始迭代尋優(yōu)時,適應(yīng)度較大,說明距離最優(yōu)解較遠,此時需要較大的ω值使算法具有較強的面向全局尋找最優(yōu)解的能力;隨著迭代的進行,選較小的ω值更有利于算法在局部尋找最優(yōu)解。
同時對PSO 算法中的學習因子通過非對稱線性變化的參數(shù)生成方法進行改進。在初始尋優(yōu)時,把c1設(shè)置較大、c2設(shè)置較小來擴大搜索范圍。隨著迭代的進行,c1線性遞減,c2線性遞增,在全局最優(yōu)位置上逐漸收斂粒子。原理如式(4)和式(5)所示
BP 模型原理參考文獻[15],不再詳細敘述。改進參數(shù)生成方法的PSO-BP 模型預報鐘差過程分為以下幾個步驟:
1)鐘差數(shù)據(jù)的預處理:首先將鐘差數(shù)據(jù)進行一次差分消除趨勢項,通過絕對中位差法(MAD)對異常值進行剔除并修正。對差分數(shù)據(jù)進行歸一化處理,目的是統(tǒng)一數(shù)據(jù)范圍,提高模型訓練過程中的穩(wěn)定性,并且加快模型訓練的速度。
2)劃分包括輸入數(shù)據(jù)和輸出數(shù)據(jù)在內(nèi)的鐘差數(shù)據(jù)的訓練集和測試集:劃分L組每組M維的數(shù)據(jù)作為輸入,記作T=(t(1),t(2)t(L));同時有L組每組J維的衛(wèi)星鐘差數(shù)據(jù)作為輸出Yf=(y(1),y(2)y(L))。M維輸入和J維輸出對應(yīng),將L組數(shù)據(jù)中的P組數(shù)據(jù)作為訓練集,T組作為測試集。
3)改進的PSO 算法實現(xiàn)步驟如下:
①確定神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu):設(shè)計的BP 模型輸入層、隱含層、輸出層神經(jīng)元個數(shù)M、I、J分別為4、9、1;隱含層層數(shù)為1。
②PSO 算法初始化:輸入到隱含的權(quán)值ωmi,共4 ×9 個;輸入到隱含的閾值bi,共9 個;隱含到輸出的權(quán)值ωij,共9 ×1 個;隱含到輸出的閾值bj,共1個。隨機初始化55 維向量{ωmi,bi,ωij,bj}作為粒子的位置向量Xi;同理初始化55 維速度向量Vi;粒子群規(guī)模s設(shè)置為50;K設(shè)置為100;適應(yīng)度為訓練后的BP 神經(jīng)網(wǎng)絡(luò)預測鐘差數(shù)據(jù)的均方誤差MSE:
式中:N——預報的歷元個數(shù);t(n)——實際鐘差;(n)——經(jīng)過訓練后的網(wǎng)絡(luò)預測的鐘差。
③根據(jù)粒子的位置和鐘差訓練集的輸入輸出數(shù)據(jù),得到適應(yīng)度值,更新粒子位置Pi和Pg。迭代完成時,如果存儲的每次迭代的全局最優(yōu)適應(yīng)度收斂,則輸出最優(yōu)適應(yīng)度的粒子位置。
④將最優(yōu)的粒子位置向量劃分不同層之間的權(quán)值和閾值輸入到BP 神經(jīng)網(wǎng)絡(luò)作為初值。
4)BP 神經(jīng)網(wǎng)絡(luò)通過反向修正方法獲得最佳的網(wǎng)絡(luò)權(quán)值和閾值。用經(jīng)過訓練的神經(jīng)網(wǎng)絡(luò)預測鐘差數(shù)據(jù),具體過程如下:
①初始化網(wǎng)絡(luò)的參數(shù):訓練次數(shù)、學習率和訓練目標。
②對處理好的訓練集數(shù)據(jù)進行訓練,隱含層傳遞函數(shù)f選為Sigmoid 函數(shù)[10],網(wǎng)絡(luò)對訓練集的第p組數(shù)據(jù)預測值Ya(p)為
③由網(wǎng)絡(luò)的實際輸出Ya與期望輸出Yf得到誤差E,當誤差E未達到訓練目標時,繼續(xù)進行迭代,達到訓練目標時迭代完成。由測試集的輸入數(shù)據(jù)對鐘差數(shù)據(jù)進行預測,對預測數(shù)據(jù)反歸一化、反差分得到預測的原始鐘差,通過測試集的期望鐘差計算均方根誤差RMSE。模型預報鐘差流程如圖1 所示。
圖1 改進的PSO-BP 模型鐘差預報流程圖Fig.1 Improved clock difference prediction flow chart of PSO-BP model
采用IGS 提供的鐘差產(chǎn)品數(shù)據(jù)進行試驗分析,訓練集數(shù)據(jù)時段最好選取整數(shù)倍的BDS 運行周期。選取時間為2023 年2 月8 日0 時至9 日24 時的數(shù)據(jù),采樣間隔為5 min,共有576 個歷元的鐘差數(shù)據(jù)點。前288 個歷元的鐘差數(shù)據(jù)作為訓練集,后288個歷元的鐘差數(shù)據(jù)作為測試集。
改進的PSO 算法中的ω值以非線性遞減的方法生成,c1和c2值則以非對稱線性變化的方式生成。與ω取值為0.9、c1和c2取值為1.49445 的固定值的標準PSO 算法作對比。
把每一次PSO 算法迭代后的全局最優(yōu)適應(yīng)度值存儲在數(shù)組中,通過得到的適應(yīng)度最小值及相應(yīng)的迭代次數(shù)衡量改進算法的有效性。選取PRN24、PRN30、PRN35 和PRN38 四顆衛(wèi)星,用前24 h 鐘差作為訓練集數(shù)據(jù)輸入到PSO 算法中進行迭代尋找最優(yōu)適應(yīng)度值。PSO 算法對四顆衛(wèi)星鐘差迭代過程中全局最優(yōu)適應(yīng)度值變化曲線如圖2 所示。
圖2 PSO 參數(shù)優(yōu)化前后全局最優(yōu)適應(yīng)度值變化Fig.2 Global optimal fitness changes before and after PSO parameter optimization
從圖2 中可以大致看出,PSO 算法優(yōu)化前,雖然迭代前期收斂較快,但在最終得到的全局最優(yōu)適應(yīng)度并不是最小值,也就是陷入局部的最優(yōu)解。參數(shù)改進后的PSO 算法得到最終的適應(yīng)度值較改進前變小,搜索精度更高,后期搜索收斂速度加快。參數(shù)優(yōu)化前后對四顆衛(wèi)星鐘差預報過程中最終迭代得到的全局最優(yōu)適應(yīng)度值的統(tǒng)計表如表1 所示。
表1 全局最優(yōu)適應(yīng)度對比統(tǒng)計表Tab.1 Global optimal fitness comparison table
從表1 中可以看出,經(jīng)過參數(shù)優(yōu)化后的PSO 算法,得到全局最優(yōu)適應(yīng)度值的迭代次數(shù)較優(yōu)化前減少較多。并且適應(yīng)度更小,粒子位置更佳。所以對PSO 算法中的參數(shù)生成方法改進后,在搜索極值時的速度和精度有所改善。
通過PRN24、PRN26、PRN35、PRN38 四顆衛(wèi)星鐘差預報結(jié)果對比BP 模型和改進的PSO-BP 模型的鐘差預報性能。兩種模型采用相同結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),不同的是初始權(quán)值和閾值:改進的PSO-BP 模型使用迭代尋優(yōu)的結(jié)果,而BP 模型采用隨機數(shù)。用前24 h 共288 個歷元數(shù)據(jù)作為訓練集進行建模,預報后24 h 的衛(wèi)星鐘差,分別進行10 次獨立的預報,用RMSE 衡量預報精度。BP 和PSO-BP 預報結(jié)果如圖3 所示。10 次預報結(jié)果的RMSE 值的統(tǒng)計結(jié)果:均值MEAN 和標準差STD 如表2 所示。
表2 10 次預報RMSE 統(tǒng)計表Tab.2 10 times forecast RMSE table 單位:ns
圖3 兩種模型十次鐘差預報的RMSE 值對比圖Fig.3 Comparison of RMSE for the 10 times clock difference forecast of the two models
由圖3 可以看出,BP 模型在針對同一組數(shù)據(jù)進行多次試驗后,由于初始權(quán)值和閾值為隨機值,因此很容易陷入局部最優(yōu),導致網(wǎng)絡(luò)預測數(shù)據(jù)的不穩(wěn)定,造成訓練后的網(wǎng)絡(luò)不可重現(xiàn)。而經(jīng)過改進的PSO-BP 模型,在預測鐘差數(shù)據(jù)時采用尋優(yōu)后的初始權(quán)值和閾值,盡管預測鐘差結(jié)果也有差異,但是波動更小、更穩(wěn)定。由表2 計算可得,對于PRN24衛(wèi)星,10 組試驗PSO-BP 模型預報數(shù)據(jù)的精度較BP模型提高了50.4%;穩(wěn)定性提高了80.6%。PRN26衛(wèi)星預報精度提高了43.8%;穩(wěn)定性提高了73.3%。PRN35 衛(wèi)星預報精度提高了43.6%;穩(wěn)定性提高了69%。PRN38 衛(wèi)星預報精度提高了32%;穩(wěn)定性提高了77.8%。
為了進一步驗證參數(shù)改進的PSO-BP 模型鐘差預報的精度,對12 顆BDS 鐘差進行預報并與三種傳統(tǒng)的鐘差預報模型:ARMA、QP 和GM(1,1)進行對比分析。這里僅給出改進的PSO-BP 模型與三種傳統(tǒng)模型對PRN26、PRN35、PRN38、PRN39 四顆衛(wèi)星在288 個歷元的預報結(jié)果,預報對比如圖4 所示。
圖4 四種模型預報誤差對比圖Fig.4 Comparison of prediction errors of four models
由圖4 可以看出,改進的PSO-BP 模型鐘差預報誤差在0 附近波動,精度更高,波動更小。隨著預報歷元的增加雖然四種模型會出現(xiàn)預報效果變差的情況,但是改進的PSO-BP 模型鐘差預報誤差變化要小,預報的穩(wěn)定度更好。預報誤差的統(tǒng)計結(jié)果RMSE 和STD 如表3 所示。
表3 鐘差預報誤差統(tǒng)計表Tab.3 Clock difference forecast error table單位:ns
由表3 可得,PRN26 號衛(wèi)星:改進的PSO-BP 模型相對于ARMA、QP、GM(1,1)模型的預報精度分別提高了96.5%、43.3%、91.1%;預報的穩(wěn)定性分別提高了81.6%、34.4%、81.9%。PRN35 衛(wèi)星:改進的PSO-BP 相對其他三種模型預報精度分別提高了66.7%、72.6%、76.5%;預報的穩(wěn)定性分別提高了23.1%、69.2%、25.9%。PRN38 衛(wèi)星:改進的PSO-BP 相對其他三種模型預報精度分別提高了92.8%、79.4%、78.1%;預報的穩(wěn)定性分別提高了46.4%、85.4%、28.6%。PRN39 衛(wèi)星:改進的PSOBP 相對其他三種模型預報精度分別提高了70.2%、43.3%、66.7%;預報的穩(wěn)定性分別提高了50%、60%、52.9%。因此改進的PSO-BP 模型無論是預報精度還是預報的穩(wěn)定性都較傳統(tǒng)的三種模型有很大的提升。
四種模型對12 顆衛(wèi)星預報288 個歷元的鐘差數(shù)據(jù)的RMSE 值和STD 值統(tǒng)計結(jié)果如圖5 所示。
圖5 12 顆BDS 鐘差預報RMSE 值對比圖Fig.5 Comparison of RMSE for 12 BDS clock difference forecasts
從圖5 和圖6 的12 顆衛(wèi)星的鐘差預測結(jié)果可以看出:大部分衛(wèi)星,經(jīng)過改進的PSO-BP 模型比傳統(tǒng)模型在預測精度和穩(wěn)定性方面都有所提高??傮w的預報精度相對于ARMA 模型提升了86.5%;穩(wěn)定性提升了61.6%。相對于QP 模型精度提升了26.8%;穩(wěn)定性提升了6.6%。相對于GM(1,1)模型精度提升了79%;穩(wěn)定性提升了56.1%。
圖6 12 顆BDS 鐘差預報STD 值對比圖Fig.6 Comparison of STD for 12 BDS clock difference forecasts
為了解決傳統(tǒng)BP 模型在訓練過程中陷入局部最優(yōu)解而導致預測鐘差不穩(wěn)定的問題,采用粒子群優(yōu)化神經(jīng)網(wǎng)絡(luò)模型。為了進一步提升粒子群算法計算速度和搜索精度,改進了粒子群算法幾個重要參數(shù)的生成方法。通過和不同模型的對比驗證了該模型的有效性,說明改進的PSO-BP 模型在鐘差預報方面有較高的應(yīng)用價值。