基于改进PSO-BP 模型的钟差预报研究
2024-04-26张颖博刘音华刘娅
张颖博 ,刘音华,* ,刘娅
(1.中国科学院国家授时中心,西安 710600;2.中国科学院大学,北京 101408)
0 引言
精确的钟差预报可以运用在实时动态精密单点定位、卫星自主导航以及接收机自主完好性检测等方面[1]。在时间尺度的计算,为时间保持提供实时驾驭参考也很重要[2]。此外,钟差预报在时间测量、时间比对等方面可以与实测的钟差数据形成对照,度量测量的钟差精确性等领域都具有十分重要的意义[3]。
比较成熟的钟差预报模型有多项式QP 模型、灰色GM(1,1)模型、时间序列模型:典型的有ARMA 模型、神经网络模型等[4]。QP 模型形式简单,但是容易受到噪声和钟差中的周期项影响,精度难以进一步提升[5]。GM(1,1)模型的灰微分方程与拟合的微分方程难以完全一致,影响模型的预报精度[6]。ARMA 模型的计算方法比较繁琐,对非平稳序列预报精度低[7]。传统的神经网络由于结构简单、具有较强的非线性映射能力,在非线性拟合,预测数据等方面应用十分广泛[8]。
钟差信号存在着频率源的不稳定性和多种噪声,钟差由趋势项(频率偏差产生)和非平稳项(各类噪声产生)组成[9]。而BP 模型则是利用非线性基函数实现从输入到输出的非线性映射,可以通过训练来接近任何非线性函数[10]。网络沿着误差减小最快方向通过反向计算对权值和阈值进行调整,随着训练的进行,最终的误差会逐渐减小。但是采用BP 模型预报钟差过程中,初始权值和阈值为随机值,经过训练可能陷入局部极值,即局部最优解,错失全局极值点,造成网络训练结果具有偶然性,导致钟差预报结果有较大的不稳定性。
针对这一问题,利用粒子群优化(PSO)BP 神经网络的算法来提高钟差预报的稳定性和精确性。然而标准的粒子群算法也有陷入局部极值、后期收敛慢的问题[11]。因此需要改进粒子群优化算法中重要参数的生成方法,然后进行迭代计算BP 神经网络最优的初始权值和阈值。经过试验分析,改进后的PSO-BP 算法可以进一步提高钟差预报精度。
1 改进的粒子群优化算法
对粒子群优化算法中的三个重要参数的生成方法进行改进。从原本固定不变的值,优化为随着迭代不断更新的值。
1.1 粒子群优化算法
粒子群优化算法中的粒子通过群内相互学习、信息传递以及个体积累自身寻优的经验,聚成一个群体,并且朝着目标——最优位置前进,粒子通过个体最优和群体最优两个位置向量更新自身的位置[12,13]。用适应度函数来度量每次迭代运算时粒子得到的最优位置。
求解方法如下:假设群体有s个粒子,每个粒子是D维向量,其中第i个粒子(i=1,2,…,s)的位置向量记为Xi=(xi1,xi2,…,xiD),粒子i每次迭代的最优位置为Pi=(pi1,pi2,…,piD),所有粒子每次迭代的最优位置为Pg=(pg1,pg2,…,pgD),粒子i的速度为Vi=(vi1,vi2,…,viD)。粒子i的第d维位置更新如式(1)和式(2)所示。
式中:k——迭代次数;d——粒子i的维数,取值1,2,…,D;ω——惯性权值;c1——个体学习因子;r1,r2——随机值;c2——群体因子;α——速度的权重。
此外,防止粒子盲目搜索,将vid限制在(-vmax,vmax);xid限制在(-xmax,xmax)。
1.2 参数改进的粒子群优化算法
ω越大,粒子速度在相邻两次迭代计算时幅度变化越大,越有利于全局寻优;反之ω值越小,对于局部寻优更有利[14]。为了平衡算法中全局寻优和局部寻优的能力,对PSO 算法中ω采用非线性递减生成方法,原理如式(3)所示
式中:k——当前迭代次数;ωmax——惯性权重的最大值,一般取0.9;ωmin——最小值,一般取0.4;K——总的迭代次数。
随着运算的进行,ω非线性递减。开始迭代寻优时,适应度较大,说明距离最优解较远,此时需要较大的ω值使算法具有较强的面向全局寻找最优解的能力;随着迭代的进行,选较小的ω值更有利于算法在局部寻找最优解。
同时对PSO 算法中的学习因子通过非对称线性变化的参数生成方法进行改进。在初始寻优时,把c1设置较大、c2设置较小来扩大搜索范围。随着迭代的进行,c1线性递减,c2线性递增,在全局最优位置上逐渐收敛粒子。原理如式(4)和式(5)所示
2 改进的钟差预报PSO-BP 模型
BP 模型原理参考文献[15],不再详细叙述。改进参数生成方法的PSO-BP 模型预报钟差过程分为以下几个步骤:
1)钟差数据的预处理:首先将钟差数据进行一次差分消除趋势项,通过绝对中位差法(MAD)对异常值进行剔除并修正。对差分数据进行归一化处理,目的是统一数据范围,提高模型训练过程中的稳定性,并且加快模型训练的速度。
2)划分包括输入数据和输出数据在内的钟差数据的训练集和测试集:划分L组每组M维的数据作为输入,记作T=(t(1),t(2)t(L));同时有L组每组J维的卫星钟差数据作为输出Yf=(y(1),y(2)y(L))。M维输入和J维输出对应,将L组数据中的P组数据作为训练集,T组作为测试集。
3)改进的PSO 算法实现步骤如下:
①确定神经网络结构:设计的BP 模型输入层、隐含层、输出层神经元个数M、I、J分别为4、9、1;隐含层层数为1。
②PSO 算法初始化:输入到隐含的权值ωmi,共4 ×9 个;输入到隐含的阈值bi,共9 个;隐含到输出的权值ωij,共9 ×1 个;隐含到输出的阈值bj,共1个。随机初始化55 维向量{ωmi,bi,ωij,bj}作为粒子的位置向量Xi;同理初始化55 维速度向量Vi;粒子群规模s设置为50;K设置为100;适应度为训练后的BP 神经网络预测钟差数据的均方误差MSE:
式中:N——预报的历元个数;t(n)——实际钟差;(n)——经过训练后的网络预测的钟差。
③根据粒子的位置和钟差训练集的输入输出数据,得到适应度值,更新粒子位置Pi和Pg。迭代完成时,如果存储的每次迭代的全局最优适应度收敛,则输出最优适应度的粒子位置。
④将最优的粒子位置向量划分不同层之间的权值和阈值输入到BP 神经网络作为初值。
4)BP 神经网络通过反向修正方法获得最佳的网络权值和阈值。用经过训练的神经网络预测钟差数据,具体过程如下:
①初始化网络的参数:训练次数、学习率和训练目标。
②对处理好的训练集数据进行训练,隐含层传递函数f选为Sigmoid 函数[10],网络对训练集的第p组数据预测值Ya(p)为
③由网络的实际输出Ya与期望输出Yf得到误差E,当误差E未达到训练目标时,继续进行迭代,达到训练目标时迭代完成。由测试集的输入数据对钟差数据进行预测,对预测数据反归一化、反差分得到预测的原始钟差,通过测试集的期望钟差计算均方根误差RMSE。模型预报钟差流程如图1 所示。
图1 改进的PSO-BP 模型钟差预报流程图Fig.1 Improved clock difference prediction flow chart of PSO-BP model
3 改进的PSO-BP 模型的钟差预报试验分析
采用IGS 提供的钟差产品数据进行试验分析,训练集数据时段最好选取整数倍的BDS 运行周期。选取时间为2023 年2 月8 日0 时至9 日24 时的数据,采样间隔为5 min,共有576 个历元的钟差数据点。前288 个历元的钟差数据作为训练集,后288个历元的钟差数据作为测试集。
3.1 参数改进前后PSO 算法对比试验
改进的PSO 算法中的ω值以非线性递减的方法生成,c1和c2值则以非对称线性变化的方式生成。与ω取值为0.9、c1和c2取值为1.49445 的固定值的标准PSO 算法作对比。
把每一次PSO 算法迭代后的全局最优适应度值存储在数组中,通过得到的适应度最小值及相应的迭代次数衡量改进算法的有效性。选取PRN24、PRN30、PRN35 和PRN38 四颗卫星,用前24 h 钟差作为训练集数据输入到PSO 算法中进行迭代寻找最优适应度值。PSO 算法对四颗卫星钟差迭代过程中全局最优适应度值变化曲线如图2 所示。
图2 PSO 参数优化前后全局最优适应度值变化Fig.2 Global optimal fitness changes before and after PSO parameter optimization
从图2 中可以大致看出,PSO 算法优化前,虽然迭代前期收敛较快,但在最终得到的全局最优适应度并不是最小值,也就是陷入局部的最优解。参数改进后的PSO 算法得到最终的适应度值较改进前变小,搜索精度更高,后期搜索收敛速度加快。参数优化前后对四颗卫星钟差预报过程中最终迭代得到的全局最优适应度值的统计表如表1 所示。
表1 全局最优适应度对比统计表Tab.1 Global optimal fitness comparison table
从表1 中可以看出,经过参数优化后的PSO 算法,得到全局最优适应度值的迭代次数较优化前减少较多。并且适应度更小,粒子位置更佳。所以对PSO 算法中的参数生成方法改进后,在搜索极值时的速度和精度有所改善。
3.2 改进的PSO-BP 模型和BP 模型钟差预报对比试验
通过PRN24、PRN26、PRN35、PRN38 四颗卫星钟差预报结果对比BP 模型和改进的PSO-BP 模型的钟差预报性能。两种模型采用相同结构的神经网络,不同的是初始权值和阈值:改进的PSO-BP 模型使用迭代寻优的结果,而BP 模型采用随机数。用前24 h 共288 个历元数据作为训练集进行建模,预报后24 h 的卫星钟差,分别进行10 次独立的预报,用RMSE 衡量预报精度。BP 和PSO-BP 预报结果如图3 所示。10 次预报结果的RMSE 值的统计结果:均值MEAN 和标准差STD 如表2 所示。
表2 10 次预报RMSE 统计表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 模型在针对同一组数据进行多次试验后,由于初始权值和阈值为随机值,因此很容易陷入局部最优,导致网络预测数据的不稳定,造成训练后的网络不可重现。而经过改进的PSO-BP 模型,在预测钟差数据时采用寻优后的初始权值和阈值,尽管预测钟差结果也有差异,但是波动更小、更稳定。由表2 计算可得,对于PRN24卫星,10 组试验PSO-BP 模型预报数据的精度较BP模型提高了50.4%;稳定性提高了80.6%。PRN26卫星预报精度提高了43.8%;稳定性提高了73.3%。PRN35 卫星预报精度提高了43.6%;稳定性提高了69%。PRN38 卫星预报精度提高了32%;稳定性提高了77.8%。
3.3 改进的PSO-BP 模型和三种传统模型钟差预报对比试验
为了进一步验证参数改进的PSO-BP 模型钟差预报的精度,对12 颗BDS 钟差进行预报并与三种传统的钟差预报模型:ARMA、QP 和GM(1,1)进行对比分析。这里仅给出改进的PSO-BP 模型与三种传统模型对PRN26、PRN35、PRN38、PRN39 四颗卫星在288 个历元的预报结果,预报对比如图4 所示。
图4 四种模型预报误差对比图Fig.4 Comparison of prediction errors of four models
由图4 可以看出,改进的PSO-BP 模型钟差预报误差在0 附近波动,精度更高,波动更小。随着预报历元的增加虽然四种模型会出现预报效果变差的情况,但是改进的PSO-BP 模型钟差预报误差变化要小,预报的稳定度更好。预报误差的统计结果RMSE 和STD 如表3 所示。
表3 钟差预报误差统计表Tab.3 Clock difference forecast error table单位:ns
由表3 可得,PRN26 号卫星:改进的PSO-BP 模型相对于ARMA、QP、GM(1,1)模型的预报精度分别提高了96.5%、43.3%、91.1%;预报的稳定性分别提高了81.6%、34.4%、81.9%。PRN35 卫星:改进的PSO-BP 相对其他三种模型预报精度分别提高了66.7%、72.6%、76.5%;预报的稳定性分别提高了23.1%、69.2%、25.9%。PRN38 卫星:改进的PSO-BP 相对其他三种模型预报精度分别提高了92.8%、79.4%、78.1%;预报的稳定性分别提高了46.4%、85.4%、28.6%。PRN39 卫星:改进的PSOBP 相对其他三种模型预报精度分别提高了70.2%、43.3%、66.7%;预报的稳定性分别提高了50%、60%、52.9%。因此改进的PSO-BP 模型无论是预报精度还是预报的稳定性都较传统的三种模型有很大的提升。
四种模型对12 颗卫星预报288 个历元的钟差数据的RMSE 值和STD 值统计结果如图5 所示。
图5 12 颗BDS 钟差预报RMSE 值对比图Fig.5 Comparison of RMSE for 12 BDS clock difference forecasts
从图5 和图6 的12 颗卫星的钟差预测结果可以看出:大部分卫星,经过改进的PSO-BP 模型比传统模型在预测精度和稳定性方面都有所提高。总体的预报精度相对于ARMA 模型提升了86.5%;稳定性提升了61.6%。相对于QP 模型精度提升了26.8%;稳定性提升了6.6%。相对于GM(1,1)模型精度提升了79%;稳定性提升了56.1%。
图6 12 颗BDS 钟差预报STD 值对比图Fig.6 Comparison of STD for 12 BDS clock difference forecasts
4 结束语
为了解决传统BP 模型在训练过程中陷入局部最优解而导致预测钟差不稳定的问题,采用粒子群优化神经网络模型。为了进一步提升粒子群算法计算速度和搜索精度,改进了粒子群算法几个重要参数的生成方法。通过和不同模型的对比验证了该模型的有效性,说明改进的PSO-BP 模型在钟差预报方面有较高的应用价值。