一种面向gnss多种失效状态的车辆定位误差智能预测方法
技术领域
1.本发明涉及一种车辆定位误差的智能预测方法,尤其涉及一种面向gnss多种失效状态的车辆定位误差智能预测方法,属于车辆导航定位领域。
背景技术:
2.在车辆定位领域中,ins和gnss的组合定位系统应用非常广泛;ins是一种自主式的导航系统,不受外界信号的干扰,但容易产生累积误差,定位精度会随定位过程的进行而不断下降;gnss可以全天候实时地提供车辆的三维绝对位置和速度等信息;一般来说,gnss需要4颗卫星才能完成对车辆的实时定位;其中三颗卫星用于获得三维位置,同时还需要一颗卫星同步卫星时钟和接收时钟的时间差;当车辆周围有高楼遮挡,或是进入隧道时,无法接收到4颗卫星的信号,此时gnss无法实现实时定位;
3.对此,普遍的解决方法是引入其他辅助传感器;通过多传感器融合算法建立模型辅助ins进行定位,常用的辅助传感器包括视觉传感器和激光雷达等,视觉传感器可以根据已知物体在图像上的像素大小和位置可以推算出实际环境中视觉传感器与该物体的距离和角度,视觉传感器的缺点是易受周围环境的影响,成像质量不稳定;而激光雷达通过向周围物体发送激光脉冲,然后接收反射回的激光脉冲来获取周围物体的距离和角度等信息,相对视觉传感器而言,激光雷达受外界环境影响较小,但激光雷达的成本较高,难以广泛应用;虽然辅助传感器在一定程度上可以对ins的定位误差进行修正,但是由于缺乏绝对位置信息的观测更新,修正后的定位结果中依然存在累积误差;
4.随着人工智能技术的飞速发展,由于机器学习算法具有强大的自学习以及非线性映射能力,利用机器学习方法建立gnss失效时的累积误差模型,并将其引入到融合定位系统中,对gnss失效期间定位系统的累积误差进行预测和补偿,从而减小gnss失效时的定位误差;现有的误差预测方法都将gnss的状态简单归类为失效和有效两种,当可见星大于等于4颗时gnss为有效状态,可以为车辆提供三维位置和速度信息;而当可见星数量不足4颗时gnss为失效状态,此时车辆虽然可能可以接收到部分卫星信号但无法解算车辆位置信息,仅能依赖ins进行定位;由于传统方法的局限性,可能接收到的部分卫星信息并未被有效利用。
5.本发明对gnss的失效状态进一步细化,根据当前gnss所能接收到的不同卫星数分为4种不同的失效状态,分别为gnss接收到0颗、1颗、2颗和3颗可见星时的失效状态;接着,对gnss的不同失效状态分别使用深度学习网络建立子任务模型,考虑到gnss观测量为序列数据这一特点,在深度学习网络结构中,rnn对于序列数据的处理表现出色,故使用rnn建立定位误差预测模型;在rnn的实际运用中,多采用lstm这一变体,可以解决普通rnn由于梯度消失和梯度爆炸,而难以学习间隔较远特征的问题;相比普通rnn只有向前传递的状态,lstm通过增加门控使得网络可在较长的持续时间内累积信息,并且达到收敛状态;此外,考虑gnss的4种不同失效状态的子任务模型具有相似性:模型输出都为误差预测,模型输入数据相似(不同的是gnss数据由于可见星数目不同而引入的数据维数不同),可以使用多任务
学习的方法对这4个子任务同时进行训练;多任务学习采用soft参数共享机制,可以有效解决4个子任务模型单独训练时由于样本数量较少,泛化性能不足的问题。
技术实现要素:
6.本发明的目的是提出一种面向gnss多种失效状态的车辆定位误差智能预测方法;该方法根据所能接收到的卫星数对gnss的失效状态进行分类,分别利用lstm网络建立不同失效状态的定位误差预测模型,并利用多任务学习机制,提高模型的泛化性能;最终,训练后的模型可以根据实际的可见卫星数量,判断当前工况所属的子任务模型类别,得到准确的定位误差预测值。
7.本发明采用的技术方案如下:一种面向gnss多种失效状态的车辆定位误差智能预测方法,其特征在于深入考虑gnss失效时的部分可见卫星信息,对gnss的不同失效状态进行建模,分别设计lstm深度学习网络,并采用多任务学习的思想进行参数共享的训练,从而提高各个子任务模型的泛化能力;具体步骤包括:步骤一:确定模型的输入和输出
8.根据gnss失效时的可见星数目将失效状态分为0颗星、1颗星、2颗星和3颗星4类,然后将定位误差预测模型分为4个子任务模型,分别对应着0颗、1颗、2颗和3颗可见星时的定位误差预测任务;由各子任务模型的训练任务可知,输出量即为gnss失效状态下的定位误差;输入量应为定位误差的主要影响因素,主要包括可以表示卫星分布的方位角、高度角,此外考虑到定位误差的时间相关特性,将失效时间t也作为输入量:需要指出的是,不同子任务的输入量个数是不同的,即0颗可见星时,没有卫星的方位角、高度角作为输入量,当有多颗可见卫星时,每颗卫星的方位角、高度角都作为输入量;
9.步骤二:制作训练样本
10.大量准确的样本是进行有效模型训练的基础;4子个任务的输入量会随着可见星数目的不同而产生变化,但是输出量都是需要预测的定位误差,训练样本的真值为gnss没有失效时的定位结果与4种不同失效状态下产生的定位结果的差值:在只获得gnss没有失效时的数据真值的基础上,通过模拟gnss不同失效状态,即可获得4个子任务模型所需要的数据样本;本发明采用多任务学习的机制,每个子任务模型在训练时都可以从其他子任务模型中获得额外的信息,因此基于多任务学习的模型可以学到相比单任务模型更好的隐层表示,这在一定程度上可以弥补训练数据缺乏的影响,从而节约时间和经济成本;
11.同时为了保证所训练模型的泛化性能,4个子任务的样本数量应大致相当,而不宜有较为悬殊的差距;
12.本发明中的样本通过两种方法获取:第一种方法是采集真实遮挡环境下的样本数据,利用传统紧耦合算法进行车辆位置解算,并以高精度的光纤组合导航系统作为基准获取定位误差,同时记录输入量所需的相关传感器数据;第二种方法是在开阔地带采集各传感器数据,采用事后模拟部分卫星失效的方法获取各子任务所需的训练样本;
13.步骤三:模型结构设计及训练
14.根据定位误差预测任务的特点,对子任务模型结构和多任务的协调机制分别进行优化设计;
15.(1)子任务的设计
16.在实际应用中,为解决普通rnn因梯度消失和梯度爆炸,难以学习间隔较远的特征
的问题,通常采用lstm网络;相比普通的rnn只有向前传递的状态,lstm可以增加门控使得网络可在较长的持续时间内累积信息,并达到收敛状态;使用lstm的当前输入和上一个时刻传递的状态进行拼接再乘以权重得到以下公式:
[0017][0018][0019][0020][0021]
其中x
(t)
是时刻t的输入向量,对应在训练过程中的时变gnss观测量,h
(t)
是当前隐藏层向量,h
(t)
包含了所有lstm单元的输出;式(1)中是经过计算得到的输入数据,i表示第i个lstm单元,b、u、w分别是lstm单元的偏置、输入权重和循环权重;式(2)中为外部输入门,b
g
、u
g
、w
g
分别是外部输入门的偏置、输入权重和循环权重;式(3)中为输出门,控制lstm单元的输出,b
o
、u
o
、w
o
分别是输出门的偏置、输入权重和循环权重;式(4)中b
f
、u
f
、w
f
分别是遗忘门的偏置、输入权重和循环权重,σ为激活函数,遗忘门f
i(t)
是单元i在时刻t下控制自循环的权重,来选择哪些信息需要遗忘;长期记忆状态用于记忆gnss长时间失效时先前的误差状态对当前误差的影响;短期记忆状态用于记忆gnss短时间失效时先前的误差状态对当前误差的影响;lstm通过以下公式实现选择记忆:
[0022][0023]
对输入的x
(t)
进行选择记忆,则是传给下一个状态的信息;
[0024]
(2)多任务学习
[0025]
由于需要训练4个结构相似的lstm网络,这4个lstm网络的输入量会随着可见星数目的不同而发生变化;只有0颗星时完全没有gnss观测量,而有一颗可见星时则有卫星的高度角和方位角作为输入量,有多颗可见星时则有每个卫星的高度角和方位角作为输入量;输出量则都是定位误差,这意味着可以用同一个损失函数去同时训练4个输入量不同但有相似之处的lstm网络;
[0026]
实践证明,在大多数情况下,大量的数据输入对模型的泛化性能会有所提高;但在本模型训练中,考虑到时间成本和经济成本,要取得大量的训练数据较为困难;由于需要采集4种不同gnss失效情况下的观测量,如果对每个子任务分别单独使用lstm网络进行训练,那么最终得到的泛化性能可能难以满足实际应用的需求;
[0027]
因此本专利采用基于多任务学习的训练方法;多任务学习可以看成是归纳迁移的一种形式,归纳传递通过引入归纳偏置(inductive bias)来帮助改进模型;深度学习网络模型在执行多任务学习时主要有两种最常用的方法,使用soft参数共享和hard参数共享进
行学习;由于hard参数共享在所有子任务之间共享隐藏层,不太符合本方法的实际情况;所以在本方法中多任务学习采用soft参数共享机制;多任务学习的设计如下:
[0028]
1)soft参数共享机制
[0029]
根据上文提到的4个子任务模型的特点,本方法中多任务学习主要采用soft参数共享,分别设计4个结构相似的lstm深度学习网络,每个网络的输入量对应着不同的子任务模型,同时每个网络都有自己的参数;每个子任务模型之间的参数距离是正则化的,以保证各子任务之间参数的相似性,因此采用l2距离正则化;令θ
ij
为第i个子任务模型的第j个共享隐藏层,则正则化项如下:
[0030][0031]
其中n为多任务学习定位误差预测模型中子任务的数目,一共包括4个子任务模型,j为所有子任务模型需要共享的隐藏参数层;
[0032]
2)损失函数设计
[0033]
注意到这4个lstm网络最终的输出都是相同的,即误差预测量,故设置相同的损失函数对网络进行训练,通过在网络的隐藏层中共享梯度进行优化;与传统的多任务学习soft参数共享存在一个主任务和多个辅助任务不同,在本发明中,每个子任务在训练过程中都有其他3个子任务作为辅助任务,同时每个子任务也作为其他3个子任务的辅助任务;此外,4个子任务的loss反向传播的梯度量级可能不同,在反向传播到共享隐藏层部分时,梯度量级小的子任务对整个定位误差预测模型参数更新的比重少,从而造成学习不充分的问题,因此通过引入权重,以平衡每个子任务的梯度;其总体损失函数为:
[0034][0035]
其中α
i
是第i个子任务的loss权重,为待学习的参数,l
i
为第i个子任务的损失函数,每个子任务的损失函数l
i
为:
[0036][0037]
其中m
i
为第i个子任务的样本数,为预测定位误差值,y
m
为真实误差预测值;其总体损失函数展开为:
[0038][0039]
3)优化算法
[0040]
优化算法采用后向传播算法进行训练;在后向传播网络中,增加任务会影响深度学习网络参数的更新,比如增加额外的任务增加了隐层有效的学习率,具体取决于每个任务输出的错误反馈权重;后向传播网络经常会增加噪声防止深度学习网络过拟合,如添加正则化项;增加任务也可认为是增加了噪声,从而提高后向传播网络的泛化性能;计算第i个子任务的权重α
i
为:
[0041][0042]
其中t为当前迭代的次数,t为控制子任务权重灵活性的参数,k为超参数,且k=∑
i
α
i
(t),w
i
(t
‑
1)计算方式如下:
[0043][0044]
其中为第i个子任务的第t次迭代训练的平均损失值;
[0045]
(3)模型验证
[0046]
在定位误差预测模型验证时使用交叉验证的方式进行验证,采用10次10折交叉验证的方式,以得到泛化性能最佳的定位误差预测模型;模型验证步骤如下:
[0047]
1)划分数据集
[0048]
交叉验证是一种模型的选择方法,将所有的数据集分为训练集、验证集和测试集;训练集用于模型的训练,验证集用于模型的评估和选择,测试集则用于对整个训练方法的评估;本发明采用10次10折交叉验证法,10折指每次划分将训练模型所需的数据集随机分为10个子集,一次模型训练中使用其中的9个子集作为训练集,1个子集作为验证集;10次则是对整个数据集以不同的方式划分10次;
[0049]
2)验证模型
[0050]
通过每次对数据集的划分,每次训练使用划分后的9个子集,进行10次同样的模型训练,最终得到10个定位误差预测模型及每个模型的平均验证误差;对模型数据集进行10次不同的划分,则最终需要训练100次;
[0051]
3)模型选择
[0052]
在每次划分数据集且训练时,选择的定位误差预测模型为10次训练中平均验证误差最小的模型;在10次划分数据集后,选择的模型为10次训练模型验证误差最小的那个模型;最终选择的模型损失值l为:
[0053][0054]
其中l
(i)
为第i次划分数据集的损失值;
[0055]
步骤四:模型实施
[0056]
在训练模型通过测试之后,将定位误差预测模型保存为savedmodel格式;实际实施中,将保存的模型进行部署并开展应用,根据实际的可见星数目所决定的输入量个数,选择相应的子任务模型,所部署的子任务模型通过前向计算,最终得到定位误差的预测值。
[0057]
本发明的优点:
[0058]
(1)模型灵活性高。和传统的gnss/ins组合定位方法只考虑失效状态和有效状态相比,本发明所建立的定位误差预测模型考虑了4种不同的gnss失效状态,可以充分利用部分可见卫星的信息。
[0059]
(2)模型泛化性能好。相比单个任务单独训练的模型,采用多任务学习机制的模型通过共享隐层参数,可以学到更好的内部表示,从而提供模型泛化性能,得到更加准确的定位误差预测值。
附图说明
[0060]
图1为定位误差预测模型训练流程图。
[0061]
图2是定位误差预测模型总体结构图。
具体实施方式
[0062]
ins和gnss组合定位系统是车辆定位领域中运用十分广泛的定位系统;但由于gnss的特性,导致gnss会在一些路况中失效而导致定位系统无法正常定位,现有的误差预测方法只考虑失效和有效两种状态,没有充分利用gnss失效状态时接收到的部分卫星信息;本方法首先根据gnss的不同失效状态分别进行建立深度学习网络;然后考虑到gnss观测量的特点,使用rnn对每个子任务进行建立模型,建模时采用lstm这一rnn的变体,可以解决普通rnn梯度消失和梯度爆炸的问题;其次利用多任务学习的机制对4个子任务模型进行训练,采用soft参数共享方式对4个子任务模型的参数进行共享;图1为定位误差预测模型训练流程图,具体步骤包括:
[0063]
步骤一:确定模型的输入和输出
[0064]
根据gnss失效时的可见星数目将失效状态分为0颗星、1颗星、2颗星和3颗星4类,然后将定位误差预测模型分为4个子任务模型,分别对应着0颗、1颗、2颗和3颗可见星时的定位误差预测任务;由各子任务模型的训练任务可知,输出量即为gnss失效状态下的定位误差;输入量应为定位误差的主要影响因素,主要包括可以表示卫星分布的方位角、高度角;此外考虑到定位误差的时间相关特性,将失效时间t也作为输入量;需要指出的是,不同子任务的输入量个数是不同的,即0颗可见星时,没有卫星的方位角、高度角作为输入量,当有多颗可见卫星时,每颗卫星的方位角、高度角都作为输入量;
[0065]
步骤二:制作训练样本
[0066]
大量准确的样本是进行有效模型训练的基础;4个子任务模型的输入量会随着可见星数目的不同而产生变化,但是输出量都是需要预测的定位误差,训练样本的真值为gnss没有失效时的定位结果与4种不同失效状态下产生的定位结果的差值;在只获得gnss没有失效时的数据真值的基础上,通过模拟gnss不同失效状态,即可获得4个子任务所需要的数据样本;本发明采用多任务学习的机制,每个子任务模型在训练时都可以从其他子任务模型中获得额外的信息,因此基于多任务学习的模型可以学到相比单任务模型更好的隐层表示,这在一定程度上可以弥补训练数据缺乏的影响,从而节约时间和经济成本;
[0067]
同时为了保证所训练模型的泛化性能,4个子任务模型的样本数量应大致相当,而不宜有较为悬殊的差距;
[0068]
本发明中的样本通过两种方法获取:第一种方法是采集真实遮挡环境下的样本数据,利用传统紧耦合算法进行车辆位置解算,并以高精度的光纤组合导航系统作为基准获取定位误差,同时记录输入量所需的相关传感器数据;第二种方法是在开阔地带采集各传感器数据,采用事后模拟部分卫星失效的方法获取各子任务所需的训练样本;
[0069]
步骤三:模型结构设计及训练
[0070]
根据定位误差预测任务的特点,对子任务的模型结构和多任务的协调机制分别进行优化设计;图2为定位误差预测模型总体结构图;
[0071]
(1)子任务的设计
[0072]
在实际应用中,为解决普通rnn因梯度消失和梯度爆炸,难以学习间隔较远的特征的问题,通常采用lstm网络;相比普通的rnn只有向前传递的状态,lstm可以增加门控使得网络可在较长的持续时间内累积信息,并达到收敛状态;使用lstm的当前输入和上一个时刻传递的状态进行拼接再乘以权重得到以下公式:
[0073][0074][0075][0076][0077]
其中x
(t)
是时刻t的输入向量,对应在训练过程中的时变gnss观测量,h
(t)
是当前隐藏层向量,h
(t)
包含了所有lstm单元的输出;式(1)中是经过计算得到的输入数据,i表示第i个lstm单元,b、u、w分别是lstm单元的偏置、输入权重和循环权重;式(2)中为外部输入门,b
g
、u
g
、w
g
分别是外部输入门的偏置、输入权重和循环权重;式(3)中为输出门,控制lstm单元的输出,b
o
、u
o
、w
o
分别是输出门的偏置、输入权重和循环权重;式(4)中b
f
、u
f
、w
f
分别是遗忘门的偏置、输入权重和循环权重,σ为激活函数,遗忘门f
i(t)
是单元i在时刻t下控制自循环的权重,来选择哪些信息需要遗忘;长期记忆状态用于记忆gnss长时间失效时先前的误差状态对当前误差的影响;短期记忆状态用于记忆gnss短时间失效时先前的误差状态对当前误差的影响;lstm通过以下公式实现选择记忆:
[0078][0079]
对输入的x
(t)
进行选择记忆,则是传给下一个状态的信息;
[0080]
(2)多任务学习
[0081]
由于需要训练4个结构相似的lstm网络,这4个lstm网络的输入量会随着可见星数目的不同而发生变化;只有0颗星时完全没有gnss观测量,而有一颗可见星时则有卫星的高度角和方位角作为输入量,有多颗可见星时则有每个卫星的高度角和方位角作为输入量;输出量则都是定位误差,这意味着可以用同一个损失函数去同时训练4个输入量不同但有相似之处的lstm网络;
[0082]
实践证明,在大多数情况下,大量的数据输入对模型的泛化性能会有所提高;但在本模型训练中,考虑到时间成本和经济成本,要取得大量的训练数据较为困难;由于需要采集4种不同gnss失效情况下的观测量,如果对每个子任务分别单独使用lstm进行训练,那么最终得到的泛化性能可能难以满足实际应用的需求;
[0083]
因此本专利采用基于多任务学习的训练方法;多任务学习可以看成是归纳迁移的一种形式,归纳传递通过引入归纳偏置(inductive bias)来帮助改进模型;深度学习网络
模型在执行多任务学习时主要有两种最常用的方法,使用soft参数共享和hard参数共享进行学习;由于hard参数共享在所有子任务之间共享隐藏层,不太符合本方法的实际情况;所以在本方法中多任务学习采用soft参数共享机制;多任务学习的设计如下:
[0084]
1)soft参数共享机制
[0085]
根据上文提到的4个子任务模型的特点,本方法中多任务学习主要采用soft参数共享,分别设计4个结构相似的lstm深度学习网络,每个网络的输入量对应着不同的子任务模型,同时每个网络都有自己的参数;每个子任务模型之间的参数距离是正则化的,以保证各子任务之间参数的相似性,本方法采用l2距离正则化;令为第i个子任务模型的第j个共享隐藏层,则正则化项如下:
[0086][0087]
其中n为多任务学习定位误差预测模型中子任务的数目,一共包括4个子任务模型,j为所有子任务模型需要共享的隐藏参数层;
[0088]
2)损失函数设计
[0089]
注意到这4个lstm网络模型最终的输出都是相同的,即误差预测量,故设置相同的损失函数对网络进行训练,通过在网络模型的隐藏层中共享梯度进行优化;与传统的多任务学习soft参数共享存在一个主任务和多个辅助任务不同,在本发明中,每个子任务在训练过程中都有其他3个子任务作为辅助任务,同时每个子任务也作为其他3个子任务的辅助任务;此外,4个子任务的loss反向传播的梯度量级可能不同,在反向传播到共享隐藏层部分时,梯度量级小的子任务对整个误差预测模型参数更新的比重少,从而造成学习不充分的问题,因此通过引入权重,以平衡每个子任务的梯度;其总体损失函数为:
[0090][0091]
其中α
i
是第i个子任务的loss权重,为待学习的参数,l
i
为第i子任务的损失函数,每个子任务的损失函数l
i
为:
[0092][0093]
其中m
i
为第i个子任务的样本数,为预测定位误差值,y
m
为真实误差预测值;其总体损失函数展开为:
[0094][0095]
3)优化算法
[0096]
优化算法采用后向传播算法进行训练;在后向传播网络中,增加任务会影响深度学习网络参数的更新,比如增加额外的任务增加了隐层有效的学习率,具体取决于每个任务输出的错误反馈权重;后向传播网络经常会增加噪声防止深度学习网络过拟合,如添加正则化项;增加任务也可认为是增加了噪声,从而提高后向传播网络的泛化性能;计算第i个子任务的权重α
i
为:
[0097][0098]
其中t为当前迭代的次数,t为控制子任务权重灵活性的参数,k为超参数,且k=∑
i
α
i
(t),w
i
(t
‑
1)计算方式如下:
[0099][0100]
其中为第i个子任务的第t次迭代训练的平均损失值;
[0101]
(3)模型验证
[0102]
在定位误差预测模型验证时使用交叉验证的方式进行验证,采用10次10折交叉验证的方式,以得到泛化性能最佳的模型;模型验证步骤如下:
[0103]
1)划分数据集
[0104]
交叉验证是一种模型的选择方法,将所有的数据集分为训练集、验证集和测试集;训练集用于模型的训练,验证集用于模型的评估和选择,测试集则用于对整个训练方法的评估;本发明采用10次10折交叉验证法,10折指每次划分将训练模型所需的数据集随机分为10个子集,一次模型训练中使用其中的9个子集作为训练集,1个子集作为验证集;10次则是对整个数据集以不同的方式划分10次;
[0105]
2)验证模型
[0106]
通过每次对数据集的划分,每次训练使用划分后的9个子集,进行10次同样的模型训练,最终得到10个定位误差预测模型及每个模型的平均验证误差;对模型数据集进行10次不同的划分,则最终需要训练100次;
[0107]
3)模型选择
[0108]
在每次划分数据集且训练时,选择的定位误差预测模型为10次训练中平均验证误差最小的模型;在10次划分数据集后,选择的模型为10次训练模型验证误差最小的那个模型;最终选择的模型损失值l为:
[0109][0110]
其中l
(i)
为第i次划分数据集的损失值;
[0111]
步骤四:模型实施
[0112]
在训练模型通过测试之后,将模型保存为savedmodel格式;实际实施中,将保存的模型进行部署并开展应用,根据实际的可见星数目所决定的输入量个数,选择相应的子任务模型,所部署的子任务模型通过前向计算,最终得到定位误差的预测值。
转载请注明原文地址:https://win.8miu.com/read-250319.html