首页> 中国专利> 一种用于大数据的高精度角度传感器误差补偿方法

一种用于大数据的高精度角度传感器误差补偿方法

摘要

本发明公开了一种用于大数据的高精度角度传感器误差补偿方法,针对大样本数据集,采用将样本集划分为多个子块,分别并行的训练子神经网络,训练结果进行加权平均作为最终误差补偿模型中神经网络的连接权值,且加权比例根据子神经网络训练结果的误差占比进行确定。该方案采用并行算法能够有效地降低误差补偿算法的计算复杂度和存储复杂度,而且能够提高处理速度。采用加权处理方式获得连接权值能够提高误差补偿模型的补偿精度。应用统计学习的方法获得了隐含层节点数的估计公式,与传统的通过试错法确定隐含层节点数的方式相比,本发明减少了运算量并提高了算法的精度。

著录项

  • 公开/公告号CN107014339A

    专利类型发明专利

  • 公开/公告日2017-08-04

    原文格式PDF

  • 申请/专利权人 北京理工大学;

    申请/专利号CN201710280372.8

  • 申请日2017-04-26

  • 分类号G01B21/22(20060101);G06N3/08(20060101);

  • 代理机构11120 北京理工大学专利中心;

  • 代理人付雷杰;仇蕾安

  • 地址 100081 北京市海淀区中关村南大街5号

  • 入库时间 2023-06-19 02:55:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-22

    授权

    授权

  • 2017-08-29

    实质审查的生效 IPC(主分类):G01B21/22 申请日:20170426

    实质审查的生效

  • 2017-08-04

    公开

    公开

说明书

技术领域

本发明属于角度传感器测量技术领域,具体涉及一种用于大数据的高精度角度传感器误差补偿方法。

背景技术

角度传感器是一种将角度信号转换为易于处理的信号(如电信号)从而获取角度,速度,位移等数值量的装置。它广泛应用于先进制造、自动控制、航天航空、大地测量等领域。随着科学技术的发展与进步,对传感器的准确度、稳定性和工作环境的要求相对提高。在实际测量时,受测量环境的干扰、工作元器件老化等因素,传感器的性能受到一定影响,从而使系统产生非线性误差。因而对系统的非线性校准是影响测量精度的重要因素。

目前,常见的传感器误差补偿方法包括查表法、硬件补偿法和最小二乘法等。上述方法只检测了部分点作为采样数据,样本量较少,难以反应传感器的整体精度;然而现有技术仅适用于固定的误差源或者是某一类角度传感器、通用性差和难以推广。关于倾角传感器误差补偿,常用的方法是曲面拟合法和神经网络法。但曲面拟合法存在模型复杂、建模困难、计算量大、精度较低等缺点,且神经网络法存在难以确定隐含层节点数、计算量大、补偿速度慢等缺点。随着被测角度传感器数据位数增多,时间复杂度和存储复杂度随之增加,传统的方法不能适用于大数据环境下的误差补偿。

传统的方法提出了对样本数据分块进行误差建模的方法,但仅适用于少量数据的情况。

发明内容

有鉴于此,本发明提出了一种用于大数据的高精度角度传感器误差补偿方法,适用于大量数据的情况,而且能够提高误差补偿精度。

实现本发明的实施方案如下:

一种用于大数据的高精度角度传感器误差补偿方法,包括如下步骤:

步骤1、获得多组训练样本,每组训练样本包括角度传感器的测量值x和作为理想值的实际转角y;

步骤2、将所述训练样本划分成N个子样本,每个子样本对应一个神经网络,称为子神经网络;分别由N个子样本数据,计算得到每个子神经网络的隐含层节点pn,n=1,2,…,N,然后取平均,得到作为误差补偿模型的神经网络的隐含层节点数h;子神经网络与误差补偿模型的神经网络结构相同;

其中,第n个子神经网络的隐含层节点pn的计算方式为:

xin和yin为第n个子样本中的第i个测量值和实际转角,n取值为1~N,a、b、c均为预先确定的系数,m为子样本维数,m=M/N,M为样本总数;

步骤3、将步骤2所确定的隐含层节点数h,代入所有子神经网络;

步骤4、利用子样本训练步骤3得到的子神经网络,获得隐含层与输出层间的连接权值向量αn;且N个子神经网络并行训练;

步骤5、将步骤4获得的连接权值向量αn代入子神经网络,利用子样本输入子神经网络进行计算,获得子神经网络输出与子样本期望输出的误差均值en

步骤6、将N个子神经网络的连接权值向量αn进行加权平均,获得最终的连接权值向量加权平均所用权值wn根据步骤5的误差均值en确定,误差均值en越大,对应的权值wn越小;将最终的连接权值向量代入神经网络,获得角度传感器的误差补偿模型;

步骤7、进行实际测量时,将角度传感器输出的测量值作为误差补偿模型的输入,误差补偿模型输出即为误差补偿后的角度值。

优选地,子样本个数N根据训练神经网络时的时间复杂度t1和各子样本并行运算时子样本数据集间的数据通信时间t2确定。

优选地,子样本个数N的计算方式为:

其中,k为中间变量,round()为取整函数,tp为一次浮点数运算时间,tc为移动一个数据字的时间。

优选地,步骤2中,当M位于104至106之间时,取k=15。

优选地,所述神经网络和子神经网络为傅里叶神经网络,且为单输入单输出的前向神经网络结构。

优选地,所述步骤6中,权值wn的计算方式为:

优选地,所述步骤1中,转台带动角度传感器非匀速旋转一周,获取多组转台实际转角y和角度传感器对转角的测量值x,作为训练样本。

有益效果:

(1)传统的神经网络方法通过试错法确定隐含层节点数,而本发明在第2步中应用统计学习的方法获得了隐含层节点数的估计公式,减少了运算量并提高了算法的精度。

(2)本发明采用数据并行算法处理大数据误差补偿问题,将样本集进行划分,能够有效地降低误差补偿算法的计算复杂度和存储复杂度。进一步地,本发明针对大量数据的误差补偿方法在第二步中由算法的时间复杂度和数据通信时间确定了样本划分数,提高了算法的运行速度,减少了算法的运行时间。

(3)针对并行训练子样本后得到的权值,本发明在第六步中通过取加权平均得到最终的误差补偿模型,进一步地提高了误差补偿的精度。

(4)本发明采用傅里叶三角基函数作为神经网络的激励函数,将非线性优化问题转化为线性优化问题,且本发明提出的补偿方法能够以任意精度逼近非线性函数,具有良好的泛化能力,结构简单,易于实现。

(5)本发明采用神经网络权值直接确定法得到权值计算公式,并采用并行SVD方法计算大型稀疏矩阵的伪逆以加快权值的计算速度。由于该补偿方法减少了神经网络迭代计算权值的时间,加快了算法的运行速度。

附图说明

图1为一种用于大数据的高精度角度传感器误差补偿方法的原理示意图。

具体实施方式

下面结合附图并举实施例,对本发明进行详细描述。

本发明提供了一种用于大数据的角度传感器误差补偿方法,针对大样本数据集,采用将样本集划分为多个子块,分别并行的训练子神经网络,训练结果进行加权平均作为误差补偿模型神经网络的输出权值,且加权比例根据子神经网络训练结果的误差占比进行确定。

首先,该方案采用数据并行算法处理大数据误差补偿问题,将样本集进行划分,能够有效地降低误差补偿算法的计算复杂度和存储复杂度,而且能够提高处理速度。

其次,该方案采用加权处理方式获得连接权值能够提高误差补偿模型的补偿精度。

此外,本发明在神经网络的结构构建时,应用统计学习的方法获得了隐含层节点数的估计公式,与传统的通过试错法确定隐含层节点数的方式相比,本发明减少了运算量并提高了算法的精度。

下面结合图1对本发明的实现过程进行详细描述。如图1所示,该方法包括如下步骤:

步骤1、获得多组训练样本,每组训练样本包括角度传感器的测量值x和作为理想值的实际转角y。

本实施例中,高精度转台带动角度传感器非匀速旋转一周,获取多组转台实际转角y(理想值)和角度传感器对转角的测量值x,作为训练样本。

步骤2、将训练样本划分成N个子样本,每个子样本对应一个神经网络,称为子神经网络;分别由N个子样本数据,计算得到每个子神经网络的隐含层节点pn,n=1,2,…,N,为使这N个子神经网络具有相同的结构,对这N个值取平均,得到作为误差补偿模型的神经网络的隐含层节点数h。

子神经网络与误差补偿模型的神经网络结构相同,本发明所使用的神经网络为单输入单输出的傅里叶神经网络,其采用傅里叶三角基函数作为神经网络的激励函数。

下面针对隐含层节点数h的确定和子样本数N的确定进行详细描述。

(1)隐含层节点数h的确定

在实际应用中发现,隐含层节点数与训练样本的个数、训练样本与期望输出之间的偏差有关,因此本发明设置了V1~V5,作为反映该偏差的变量。

隐含层节点数h是通过N个子神经网络的隐含层节点pn取平均得到,各子神经网络隐含层节点pn的确定方式相同,这里以第n个子神经网络为例,说明pn的取得。记xin和yin为第n个子样本中的测量值和实际转角,n取值为1~N;m为个子样本的维数,m=M/N,M为样本总数;令V2n=V12V4n=V2n/m,在进行大量实验的基础上,将xin和yin代入到单输入单输出傅里叶神经网络模型和上述公式中,采用试错法确定最佳隐含层节点数p,并记录相应的m,V1n,V2n,V3n,V4n与V5n的值,根据隐含层节点数与m,V1,V2,V3,V4,V5相关性分析可知,V2、V3与V1的相关度较高,V4与V5的值对隐含层节点数影响较小,故忽略,利用最佳隐含层节点数p、m、V1、V2,通过线性回归方法可获得隐含层节点数的估计公式为a、b、c为其系数。根据隐含层节点数的估计公式,记由第n个子样本的数据计算得到的隐含层节点数为pn(n=1,2,…N;N为样本划分数),令并将h作为误差补偿模型的神经网络的隐含层节点数,同时作为后续步骤中每个子神经网络的隐含层节点数,以保证各个子神经网络具有相同的结构,并采用与原大量实验不同的样本集验证了公式的准确性。

实验证明,经由上式确定的隐含层节点数加快了神经网络结构的建立,确保了神经网络的学习精度。神经网络隐含层节点数p与子样本维数m,V1,V2,V3,V4,V5的实验数据结果以及相关性分析分别如表1和表2所示。

其中,试错法为通过大量实验确定隐含层节点数,当神经网络输出与输入的误差不满足精度阈值时,增加隐含层节点数,若误差增大则减小隐含层节点数,通过多次尝试得到准确的隐含层节点数。

隐层节点数样本数mV1V2V3V4V51740962.636.8978.400.0016.0427163844.9924.88283.090.00160.041210241.321.7319.690.0016.04208192.3.5212.41141.300.00160.04

表1隐含层节点数与各数值间的关系

(注:表1只列出了部分数据结果)

表2隐含层节点数与各数值间的相关性分析

(2)子样本划分:

本发明将训练样本划分成N个子样本,每个子样本对应一个神经网络,子神经网络采用子样本进行训练,训练出的权值通过加权平均作为误差补偿模型神经网络的权值。

其中,子样本的个数N可以采用预先设定的值,或者是一个经验值。实际上,N越少,分组越多,计算复杂度或者说时间复杂度越小,但是会增加通信时间。这个通信时间是指子样本数据集间的数据通信时间,由于本发明采用并行处理方式,因此,会由主节点向各个计算节点分发数据,计算节点计算完成后,会将计算结果传递回主节点,因此,该数据通信时间包括主节点向N个计算节点分发数据的时间以及各个计算节点向主节点传递权值向量的时间。为了权衡时间复杂度t1和各子样本并行运算时子样本数据集间的数据通信时间t2,在确定N时,需要考虑t1和t2这两个因素。本实施例给出了一种具体确定方案:

设本发明采用权值直接确定法训练神经网络权值,权值直接确定法训练的时间复杂度为O(h3)。将下面隐含层节点数h的表达式代入O(h3)中,

由于可得时间复杂度为round()为取整函数。又令tp为承担神经网络训练的软件的一次浮点数运算时间,因此训练神经网络时的时间复杂度每个子样本数据集间的数据通信时间t2包括主节点向N个计算节点分发数据的时间以及各个计算节点向主节点传递权值向量的时间。基于并行计算的特征,数据分发时间为权值向量的传递时间总计为N,因此每个子样本数据集间的数据通信时间其中,tc为移动一个数据字的时间,M为总样本数,N为样本划分数;其中,O(·)为等阶无穷小一次浮点数运算时间;由t1和t2公式可知,随着N的增大,t1减小的越来越慢,当N超过数值S时,数据通信时间t2的时间复杂度增加,t2成为整个算法执行时间的主要部分;算法的整体时间复杂度为t=t1+t2,将t1=t2时N的取值作为样本划分数的估计值。令t1=t2,可得由此可得为便于计算令(其中k为常数,)。由于样本划分数应为整数,因此在同等训练精度要求下和终止条件相同时,N为较佳地,当M位于104至106之间,取k=15。

步骤3:将步骤2所确定的隐含层节点数h,代入所有子神经网络。

本发明采用单输入单输出傅里叶神经网络结构,其中每个子神经网络结构均为输入层、隐含层和输出层构成的前向神经网络。

步骤4、利用子样本训练对应的子神经网络中,采用权值直接确定法获得隐含层与输出层间的连接权值向量αn;N个子神经网络并行训练。

本步骤对每个子神经网络进行权值训练时,基于傅里叶神经网络结构,根据步骤2获得的隐含层节点数h和神经网络权值直接确定法,利用并行SVD方法计算傅里叶神经网络结构的隐含层与输出层间的连接权值向量αn

采用神经网络权值直接确定法,则由X*α=γ

其中,γ=[y1>2 …>m]T,X为激励矩阵,γ为目标输出向量。为傅里叶神经网络中的激励函数。

可得α=pinv(X)*γ(pinv(X)表示X的伪逆)

采用并行SVD算法计算X的伪逆,从而得到权值向量α。应用并行SVD算法计算伪逆前,对矩阵X进行QR分解,不仅确保了计算精度,还能有效地提高大型稀疏矩阵的计算速度。该算法利用Jocabi旋转变换和数据间的传递通信,并行实现了伪逆的求解过程。

将步骤2划分得到的样本块作为训练样本分别去训练相应的子神经网络结构。具体算法如下:

对矩阵X做QR分解即X=QR(其中Q为正交矩阵,R为上三角矩阵),然后应用并行Jocabi方法计算R的SVD分解形式。将R按列进行分块R=[R1,R2,…,Rr],其中,r=2p,p为计算节点数。对单位矩阵I按照相同的方法也将其划分成块I=[I1,I2,…,Ir]。

为Jacobi变换矩阵

(R*J(i,j,θ)仅改变R的i,j两列的值,其余各列的值均不变,选取适当的θ可使得i,j两列正交)。

(1)获取样本数据以及样本量m,确定隐含层节点数h以及目标输出向量γ。

(2)计算激励矩阵X,得到权值计算公式为α=pinv(X)*γ。确定计算节点数p。

(3)对X进行QR分解,即X=QR,则

α=pinv(X)*γ=pinv(R)*QTγ。

(4)由h和p的值,确定R和I中每个列块的列数。设置松弛系数λ(λ位于0.01至0.1之间),对各个节点自身包含的列块Ri,Rj做单边Jocabi旋转变换使得(ai,aj与bi,bj分别为矩阵R做一次Jocabi旋转变换前与变换后的第i,j列)并相应地更新Ii,Ij

(5)所有节点按照指环序列传递列块,继续下一轮变换。

(6)重复(4),直到满足各自的收敛条件,R变换成正交矩阵。

(7)将I变换后的矩阵记为V,对R变换后的矩阵做归一化处理使得R=UΣ(U为正交矩阵),得到矩阵R的SVD分解式R=UΣVT

(8)计算权值α=V*pinv(∑)*(QU)T*γ。

步骤5、加权针对每个子神经网络,将步骤4获得的连接权值向量αn代入子神经网络,利用子样本输入子神经网络进行计算,获得子神经网络输出与子样本期望输出的误差均值en

步骤6、建立误差补偿模型:将N个子神经网络的连接权值向量αn进行加权平均,获得最终的连接权值向量其中,加权平均所用权值wn根据步骤5的误差均值en计算获得,误差均值en越大,对应的权值wn越小。然后,将最终的连接权值向量代入神经网络,获得角度传感器的误差补偿模型。

假设N个子神经网络结构经步骤4训练得到的权值向量分别为(n=1,2,…,N),相应的神经网络的激励矩阵分别为Xn,则神经网络输出为On=Xnn。定义每个子神经网络的误差均值为其中m为子样本维数,Oi为神经网络输出值,yi为期望值。

其中一种加权权值的实现方式为将代入误差补偿模型的神经网络,得到角度传感器的误差补偿模型。

步骤7,误差补偿:进行实际测量时,将角度传感器输出的测量值作为神经网络的输入,采用步骤6获得的误差补偿模型,获得误差补偿后的角度值。

至此,本流程结束。

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号