潘海涛,蔡成林
(1.桂林电子科技大学 信息与通信学院,广西 桂林 541004;2.湘潭大学 自动化与电子信息学院,湖南 湘潭 411105)
全球导航卫星系统(GNSS)的欺骗干扰被认为是生命安全(SoL)应用程序的主要威胁,这些应用程序主要依赖于使用没有信号或数据级保护的开放服务(OS),故卫星导航信号欺骗干扰检测是必不可少的。经过研究人员的努力,目前已经提出了许多有效的欺骗干扰检测技术:载噪比监测、利用信号到达时间和捕获相关峰联合检测的欺骗式干扰检测、多天线欺骗识别、使用合成数组的欺骗识别、使用到达方向(DOA)进行欺骗识别、载波相位差的欺骗干扰检测、使用信号质量监控(SQM)、与其他定位技术例如惯导的一致性检测、代码和相位速率一致性检查、接收星历信息的一致性检查和接收者自主完好性监测(RAIM)。
鉴于文献[5]提出包括Position⁃Velocity⁃Time(PVT)结果、伪距、多普勒、载波相位等中间观测量多节点协同欺骗干扰检测算法;文献[6]提出伪距双差、卫星与载体的距离双差以及卫星钟差双差计算得到误差值;韩国航空航天协会通过监视位置、测量值、信号功率和导航消息检测欺骗攻击;文献[8]提出了一种方法从载波相位观测和导航信息中精确估计一对固定天线之间的到达频率差的一致性检测方法,效果明显,导航信号观测值对于欺骗干扰检测至关重要;文献[9]提出机器学习检测欺骗干扰的模型。本文提出选取观测值:卫星号、伪距、载波相位、多普勒值、信噪比、接收机钟差和接收机时钟频漂作为特征点进行神经网络的训练输入,然后对此进行训练学习便可以检测欺骗干扰。
研究人员通过从远程位置收集GPS信号来模拟测量信号,使用有源GPS SMA天线在相距约100 m的两个位置收集大量GPS信号,将位置1收集的数据作为正确的GPS数据,而在位置2收集的数据则是欺骗干扰者打算稍后重播的欺骗数据,正确数据和欺骗数据分别标记为0和1,将两个标记的数据组合起来,得到用于测试神经网络的数据集。使用的软件是开源的gnsssdrgui.exe和开源的rtknavi.exe。
从接收到的GPS信号中提取以下参数作为神经网络的输入特征:卫星号、伪距、载波相位、多普勒频移、信噪比、接收机钟差、接收机频漂。
信噪比(SNR):表示将GPS信息的信号与噪声和干扰混合后的强度。可以使用特定算法从接收到的信号中进行测量和计算。
伪距:每颗GPS卫星都有一个唯一的Gold码,其自相关函数具有等边三角形形状,当相关性完善时,它的峰值就会出现。通过将Gold代码与其接收机生成的副本进行互相关,可以使用此特性查找信号从卫星到接收机的传播时间。计算出的时间差Δ与光速一起用于估计卫星与接收机之间的距离,即伪距。
式中:是接收机的接收时间;是卫星的传输时间。
GPS信号和参考信号的相位差定义为:
式中是相位模糊度。通过对时间进行微分,可以计算出接收到的GPS信号和参考信号之间的频率差,这种差异是多普勒频移f 的指标,即:
在BP神经网络(Back Propagation Neural Network)中,每个神经元都有一个激活函数,两个神经元之间的每个连接都有一个权重。第一层中神经元的激活和偏置分别由和表示。每个神经网络的第一层是输入层并具有激活作用=x ,其中,x 是从每个接收到的GPS信号中提取的输入特征向量。从(-1)层的第个神经元到层中的神经元权重由表示。因此,可以计算如下:
式中(⋅)称为激活函数。最广泛使用的激活函数是Sigmoid、双曲正切(Tanh)和校正线性单位(ReLU),如下所示:
反向传播算法用于最小化损失函数并找到最佳权重和偏差值,即如何更改网络中的权重和偏置来改变损失函数值。最终通过它能够计算损失函数与权重和偏置之间的偏导数。
使用输入初始化权重和偏差的初始化值,可以使用式(9)和式(10)计算输出,它是对攻击存在与否的预测,目的是最小化损失函数,该损失函数是获得的输出与期望输出之间的误差。该损失函数定义为:式中:是单个输入向量,的期望输出,是相同给定输入的神经网络输出;是训练样本的总数;是网络中的层数。
反向传播算法用于最小化损失函数并找到最佳权重和偏差值。通过计算关于和的偏导数找到代价函数的最小值。因此,考虑一个单独的训练示例,将第层中节点的误差定义为:
或通过以下方式以矩阵形式表示:
式中T表示转置操作。通过使用式(14)和式(15),可以计算网络中所有层的误差。因此,成本函数相对于权重和偏差的梯度可以表示为:
接下来,可以使用以下公式更新=-1,-2,…,2的权重和偏差值:
式中是正则化项。
图1总结了神经网络训练过程,包括前馈和反向传播算法。
图1 神经网络训练流程图
接收的数据使用智领通信研发的KDZL⁃SDR⁃EL01通用软件无线电,以超过正常接收机接收功率4 dB以上的功率重新播发到目标接收机,即可成功欺骗接收机,如图2,图3所示,在1 000历元时看到观测值发生了变化,证明被欺骗干扰了。
图2 载波相位观测图
图3 多普勒观测图
考虑到输入数据的单位不一样,有些数据的范围可能特别大,导致神经网络收敛慢、训练时间长;其次,数据范围大的输入在模式分类中的作用可能会偏大,故训练神经网络前一般需要对数据进行归一化预处理。在Matlab软件里使用的归一化函数为mapminmax。为了进行神经网络的训练,必须对数据集进行以下划分:
1)训练集:用于训练模型,找出最佳的和。
2)验证集:用以确定模型超参数,选出最优模型。
3)测试集:仅用于对训练好的最优函数进行性能评估。
必须保证测试集完全独立,直到模型调整和参数训练全部完成前将测试集进行封存。
在Matlab 2018软件里使用newff创建神经网络进行训练,设置的隐含层数为1,隐含层神经元为20个,激活函数使用Tanh。
网络训练好之后进行仿真测试,采用sim函数得出预测值,绘制标签值与预测值的接收者操作特征(Receiver Operating Characteristic,ROC)曲线来评价基于BP神经网络的欺骗与正确信号分类模型的好坏,曲线越靠近轴、越接近坐标轴上方效果越好,图4是混杂有欺骗信号和真实信号的检测效果评价图,图5表示系统的检测概率。从图中可以得出,模型的检测准确率达到了83%,从而验证了基于BP神经网络的机器学习欺骗干扰检测模型是行之有效的,同时也印证了神经网络在处理非线性数据的泛化、预测和分类的能力。
图4 有真实和欺骗信号的ROC
图5 检测概率
本文采用BP神经网络对真实和虚假的导航信号进行二分类,采集了卫星号、伪距、载波相位、多普勒值、信噪比、接收机钟差和接收机频漂等主要特征点作为神经网络的输入,进行有监督的机器学习训练,形成一个有效的神经网络模型,通过仿真测试证明此方法的有效性。但是目前此方法适用于后处理阶段,因此,本文所提出的方法在未来可以向在线训练、在线学习方向发展,同时也可增加特征点的个数,使得学习效果更明显、检测概率更高。