发明内容
为解决上述问题,本发明提供一种基于IPSO-BPNN的长时人体下肢运动预测方法,能够覆盖系统延时,且预测结果更加接近实际观测数据。
一种基于IPSO-BPNN的长时人体下肢运动预测方法,包括以下步骤:
S1:对各下肢关节的关节角度数据进行预处理,得到各下肢关节对应的训练样本和测试样本,同时,按照设定比例分别将各训练样本和各测试样本中的数据划分为输入数据部分和输出数据部分,其中,所述下肢关节包括左髋关节、右髋关节、左膝关节、右膝关节、左踝关节以及右踝关节;
S2:分别将各下肢关节作为当前关节执行模型训练操作,得到各下肢关节对应BPNN关节角度预测模型,其中,所述模型训练操作为:
S21:基于粒子群算法获取BPNN网络中各节点的权值与阈值的初始值,得到初始BPNN网络;
S22:将各下肢关节对应的所有训练样本中输入数据部分垂直拼接得到训练输入总矩阵,然后将训练输入总矩阵作为初始BPNN网络的输入,当前关节对应的训练样本中输出数据部分作为初始BPNN网络的输出,对初始BPNN网络进行训练,得到当前关节对应BPNN关节角度预测模型;
S3:将各下肢关节对应的所有测试样本中输入数据部分垂直拼接得到测试输入总矩阵,将测试输入总矩阵分别输入各下肢关节对应BPNN关节角度预测模型,实现人体各下肢关节的角度预测。
进一步地,分别将各下肢关节作为当前关节执行预处理操作,得到当前关节对应的训练样本和测试样本,所述预处理操作具体为:
S11:采用最小-最大归一化法对当前关节的原始关节角度数据进行归一化处理,得到归一化后的关节数据(y1,y2,…yi…,yn),其中,i=1,2,...,n,n为采样点的个数;
S12:对归一化后的关节数据(y1,y2,…yi…,yn)进行重构,得到L+N个重构序列Sj={y1+(j-1)×t,y2+(j-1)×t,...,yn-(L+N)×t+1+(j-1)×t},其中,j=1,2,...,L+N,L为所述输入数据部分的数据长度,N为所述输出数据部分的数据长度,t为设定的时间跨度;
S13:将L+N个重构序列Sj组成重构矩阵S={S1,S2,...,SL+N}T,并将重构矩阵S的每一列分别作为一个样本数据,T表示转置;
S14:将重构矩阵S前70%的列作为训练样本,后30%的列作为测试样本;同时,将重构矩阵S的每一列的前L行作为所述输入数据部分,将后N行作为所述输出数据部分,且L至少为N的两倍。
进一步地,所述归一化后的关节数据(y1,y2,…yi…,yn)的获取方法为:
其中,ymin为设定的归一化后的关节数据可取得的最小值,ymax为设定的归一化后的关节数据可取得的最大值,xi为当前关节的原始关节角度数据,xmax为当前关节的原始关节角度数据中的最大值,xmin为当前关节的原始关节角度数据中的最小值。
进一步地,所述时间跨度t的设定满足如下条件:输入数据部分最后一个采样点与输出数据部分任意一个采样点之间的时间跨度TPre-q均大于系统的实测延迟τ,且有:
其中,q为输出数据部分任意一个采样点的序号,f为采样频率。
进一步地,步骤S21中所述基于粒子群算法获取BPNN网络中各节点的权值与阈值的初始值,得到初始BPNN网络具体为:
S21a:将BPNN网络中各节点的权值与阈值的初始值作为待定参数,并将待定参数作为粒子群算法中各粒子的位置属性,且待定参数的总数记为R,粒子群中包含的粒子总数记为M;
S21b:初始化每个粒子的位置属性Pm={Pmr}和速度属性Vm={Vmr},其中,Pmr为第m个粒子的第r个位置属性表征的第r个待定参数,Vmr为第m个粒子的第r个速度属性,且m=1,2,...,M,r=1,2,...,R;
S21c:分别将各粒子作为当前粒子执行适应度值获取操作,得到各粒子对应的适应度值Fm,其中,所述适应度值获取操作为:
将当前粒子当前的位置属性表征的待定参数代入BPNN网络,得到当前BPNN网络;将所述训练输入总矩阵输入当前BPNN网络,得到当前BPNN网络对当前关节的角度预测值,获取角度预测值的过程同时更新了当前BPNN网络的待定参数;将角度预测值与当前关节对应的训练样本中输出数据部分之间的均方误差MSE作为当前粒子对应的适应度值Fm;
S21d:根据各粒子对应的适应度值Fm获取各粒子的个体极值Gm以及种群极值Z;
S21e:根据各粒子的个体极值Gm以及种群极值Z,为每个粒子的速度属性设定如下三种不同的更新方式:
Vm-A=ωVm
Vm-B=ωVm+c1rand()(Gm-Pm)
Vm-c=ωVm+c1rand()(Gm-Pm)+c2rand()(Z-Pm)
其中,Vm-A为采用第一种更新方式得到的Ⅰ型速度属性,Vm-B为采用第二种更新方式得到的Ⅱ型速度属性,Vm-C为采用第三种更新方式得到的Ⅲ型速度属性,ω为设定的惯性因素,c1、c2均为设定的学习因子,rand()为介于(0,1)之间的随机数;
S21f:将各粒子当前的位置属性Pm分别与各粒子自身对应的Ⅰ型速度属性Vm-A、Ⅱ型速度属性Vm-B以及Ⅲ型速度属性Vm-C相加,对应得到各粒子的Ⅰ型位置属性、Ⅱ型位置属性以及Ⅲ型位置属性;
S21g:分别对各型位置属性下的粒子执行适应度值获取操作,得到各粒子在各型位置属性下对应的适应度值;
S21h:分别获取每个粒子在各型位置属性下对应的适应度值的最小值Fm_min,并将各最小值Fm_min对应的BPNN网络更新后的待定参数分别作为各粒子下一代位置属性Pm-new;
S21i:按照设定的异变概率初始化各粒子下一代位置属性Pm-new,再分别对异变前和异变后的各粒子执行适应度值获取操作,得到各粒子异变前和异变后对应的适应度值;同时,对于异变后对应的适应度值小于异变前对应的适应度值的粒子,将异变后的位置属性作为最终的下一代位置属性Pm-new,其余粒子下一代位置属性Pm-new保持不变;
S21j:重新获取具有下一代位置属性Pm-new的各粒子的个体极值Gm以及种群极值Z,然后重复步骤S21e~S21j,直到达到设定的最大迭代次数,将最终得到的种群极值Z对应的位置属性作为BPNN网络中各节点最终的权值与阈值的初始值。
进一步地,步骤S21d中各粒子的个体极值Gm的获取方法为:
将各粒子分别作为当前粒子执行以下步骤:
比较当前粒子当前代对应的适应度值与其上一代的适应度值,取其中较小的适应度值对应的位置属性作为当前粒子的个体极值Gm;初始化时,当前粒子的个体极值Gm等于当前粒子当前的位置属性;
种群极值Z的获取方法为:
比较各粒子当前对应的适应度值的大小,取其中的最小值对应的个体极值Gm作为种群极值Z。
进一步地,步骤S21i中所述异变概率U的设定方法为:
其中,W为当前迭代次数,Q为最大迭代次数。
有益效果:
1、本发明提供一种基于IPSO-BPNN的长时人体下肢运动预测方法,基于粒子群算法获取BPNN网络中各节点的权值与阈值的初始值,得到预测各个下肢关节的关节角度的6个预测模型,本发明的预测模型计算效率更高,改进的粒子群算法IPSO的迭代收敛速度更快,优化结果更好,预测结果更加接近实际观测数据。
2、本发明提供一种基于IPSO-BPNN的长时人体下肢运动预测方法,根据设定的时间跨度重构各个下肢关节的原始关节角度数据,使得预测时长可以根据实际预测需求调整,进而能够覆盖系统延时。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
一种基于IPSO-BPNN的长时人体下肢运动预测方法,包括以下步骤:
S1:对各下肢关节的关节角度数据进行预处理,得到各下肢关节对应的训练样本和测试样本,同时,按照设定比例分别将各训练样本和各测试样本中的数据划分为输入数据部分和输出数据部分,其中,所述下肢关节包括左髋关节、右髋关节、左膝关节、右膝关节、左踝关节以及右踝关节。
S2:分别将各下肢关节作为当前关节执行模型训练操作,得到各下肢关节对应BPNN关节角度预测模型,其中,所述模型训练操作为:
S21:基于粒子群算法获取BPNN网络中各节点的权值与阈值的初始值,得到初始BPNN网络。
S22:将各下肢关节对应的所有训练样本中输入数据部分垂直拼接得到训练输入总矩阵,然后将训练输入总矩阵作为初始BPNN网络的输入,当前关节对应的训练样本中输出数据部分作为初始BPNN网络的输出,对初始BPNN网络进行训练,得到当前关节对应BPNN关节角度预测模型。
也就是说,本发明建立了不同的模型来预测不同的下肢关节的关节角度。因此,各模型的输入为6个关节的输入矩阵的垂直叠加,只选取1个关节对应的训练样本中输出数据部分作为模型的输出。
S3:将各下肢关节对应的所有测试样本中输入数据部分垂直拼接得到测试输入总矩阵,将测试输入总矩阵分别输入各下肢关节对应BPNN关节角度预测模型,实现人体各下肢关节的角度预测。
也就是说,本发明将人体下肢6个关节的历史角度数据作为输入,未来的角度数据作为预测目标,建立多个模型分别输出髋、膝和踝三个关节的预测角度;预测模型如图1所示,具体可以分为以下3个部分:1、初始化。初始化分包括了数据的预处理和BPNN(BackPropagation Neural Network)模型构架两个部分,预处理是指对原始数据的滤波和时间序列空间重构,并划分数据的训练集和测试集;同时,构建BPNN神经网络的模型,确定其结构、初值等参数;2、IPSO(Improved Particle Swarm Optimization)算法。利用IPSO算法对BPNN网络的初始参数寻优,再将最优初始参数赋值给原网络,最后用训练集数据训练;3、测试。利用测试集数据给出预测,建立预测评价体系对结果进行分析。例如,建立以预测持续时间、迭代效率、RMSE和DC为核心的预测评价准则,对预测结果进行分析。
其中,n是数据的长度,y
k和
式实际测量角度和其平均值,f(x
k)是预测价值。
需要说明的是,预测结果评价标准的建立主要考虑模型的计算效率、预测时长、预测结果与实际观测数据的相似度,具体的评价公式和方法并不唯一。
进一步地,由于原始数据存在点丢失和脉冲干扰等问题,需要对原始时间序列进行中值平均滤波处理,以保证数据的连续性和平滑性。其次,由于不同关节角度波动范围不一致,为更快更好地得到预测模型,采用最小-最大归一化对原始数据进行归一化处理,并添加时间跨度T重构原始时间序列。具体的,对各下肢关节的关节角度数据进行预处理的方法包括以下步骤:
S11:采用最小-最大归一化法对当前关节的原始关节角度数据进行归一化处理,得到归一化后的关节数据(y1,y2,…yi…,yn),其中,i=1,2,...,n,n为采样点的个数;归一化的具体计算公式如下:
其中,ymin为设定的归一化后的关节数据可取得的最小值,ymax为设定的归一化后的关节数据可取得的最大值,例如ymax=1,ymin=-1,xi为当前关节的原始关节角度数据,xmax为当前关节的原始关节角度数据中的最大值,xmin为当前关节的原始关节角度数据中的最小值。
S12:对归一化后的关节数据(y1,y2,…yi…,yn)进行重构,得到L+N个重构序列Sj={y1+(j-1)×t,y2+(j-1)×t,...,yn-(L+N)×t+1+(j-1)×t},,其中,j=1,2,...,L+N,L为所述输入数据部分的数据长度,N为所述输出数据部分的数据长度,t为设定的时间跨度。
如图2所示,经过滤波和归一化后的离散数据(y1,y2,…yi…,yn)对应的采样时刻点(t1,t2,……,tn)的集合构成了原始时间序列{Rt}。定义BPNN模型单个关节角的输入数据长度为L,输出数据长度为N。假设L=6,N=3,也即采用6个历史数据来预测未来3个观测点的数据。在重构过程中,第j个重构序列从采样点t1+(j-1)*T开始。然后截取t1+(j-1)*T到tn-(L+N-j+1)*T+1的采样点之间的数据,构成时间序列{Sj},j是[1,L+N]之间的正整数。最终得到的重构总矩阵{{S1};{S2};……;{SL};……;{SL+N}},它代表一个关节的信息,如步骤S13中所述。
需要说明的是,输入数据部分最后一个采样点与输出数据部分任意一个采样点之间的时间跨度,也即预测持续时间TPre-q满足如下公式:
其中,q为输出数据部分任意一个采样点的序号,f为采样频率。
为了对协同控制产生积极的影响,预测持续时间TPre-q必须大于系统的实测延时τ,也即满足
因此,设定的时间跨度满足t>τ×f/q,例如,本发明t=5,则如图2所示,S1={y1,y2,...,yn-(L+N)×t+1},S2={y6,y7,...,yn-(L+N)×t+6},因此,可以得到重构序列的通式Sj={y1+(j-1)×5,y2+(j-1)×5,...,yn-(L+N)×t+1+(j-1)×5}。
S13:将L+N个重构序列Sj组成重构矩阵S={S1,S2,...,SL+N}T,并将重构矩阵S的每一列分别作为一个样本数据,T表示转置。
S14:将重构矩阵S前70%的列作为训练样本,后30%的列作为测试样本;同时,将重构矩阵S的每一列的前L行作为所述输入数据部分,将后N行作为所述输出数据部分,且L至少为N的两倍,如L=6,N=3。
也就是说,重构矩阵S每列的前L行作为BPNN模型的输入的一部分,构成输入矩阵{InL}。每列的最后N行为输出,构成输出矩阵{OutN}。除此之外,矩阵的前70%用于培训,后30%用于测试。
需要说明的是,还可以采用其他滤波算法对原始关节角度数据进行归一化处理,达到基本需求即可,本发明不作赘述。
进一步地,本发明设计了一个三层BPNN模型,如图3所示。模型的输入为6个节点的历史角度数据,数据长度L为6,因此输入层节点数为36。单个模型只预测单个关节的角度,输出数据长度N为3,因此输出层节点数为3。
采用tansig函数和purelin函数分别作为输入层到隐含层、隐含层到输出层的传递函数。BPNN的训练函数和阈值训练函数分别为trainlm函数和learndm函数。此外,采用均方误差(MSE,公式3)作为模型的误差性能函数。
其中n为数据长度,yk为实测值,f(xk)为预测值。
隐含层设计参考经验公式4,最后根据预测结果设置12个节点。
其中n为输入单元号,n
1为隐藏单元号,k为样本号。如果i>n
1,则
BPNN的学习目标设置为0.01,学习率设置为0.1,最大训练次数设置为50,000。需要说明的是,BPNN模型仅作为整个方法的基础部分,还可以使其他的神经网络模型,例如SVM和RBF模型作为替代。
下面详细介绍如何基于粒子群算法获取BPNN网络中各节点的权值与阈值的初始值,得到初始BPNN网络。
首先介绍经典粒子群算法(PSO)如下:
经典粒子群算法(PSO)通过设置N个粒子来模拟鸟类在多维空间中寻找最优解。每个粒子都有速度属性Vm和位置属性Pm,其中m是粒子标签。Vm表示质点的运动,如公式5所示。Pm表示粒子运动的结果,如公式6所示,也是对应优化问题的候选解。通过每个粒子的适应度值Fi来测量当前候选解与实际最优解的距离,该适应度值Fm用MSE来评估。个体极值Gm是个体粒子搜索相对于其历史和当前解的最优解。种群极值Z是整个粒子群相对于其历史解和当前所有个体极值的最优解。在搜索和迭代过程中,粒子种群通过跟踪单个极值和群极值,不断更新粒子的速度和位置,从而得到满足要求的最优解。最终群极值Z为最终优化结果。
Vm-new=ωVm+c1rand()(Gm-Pm)+c2rand()(Z-Pm) (5)
Pm-new=Vm+Pm (6)
方程的左边是新一代粒子的速度和位置,右边是上一代粒子的性质。ω是惯性因素,值是0.8。c1和c2是学习因子,都是1.5。rand()为一个介于(0,1)之间的随机数。
除此之外,本发明将种群大小M和最大迭代次数Q分别设置为50和300。为防止过度随机搜索,速度和位置阈值分别设置为[-1,1]和[-5,5]。
针对经典粒子群算法存在搜索速度慢、局部寻优等问题,本发明提出了一种改进的粒子群算法,主要对单个粒子的运动过程进行优化。图4说明了粒子群优化算法和IPSO算法的粒子运动过程,其中实线为优化前轨迹,虚线为优化后轨迹。
经典算法的计算结果只反映
而忽略了A和B两个拐点。在此基础上,本发明提出了一种新的粒子更新模式(公式7-10、图5),添加了两个搜索方向,即通过点A和B扩大搜索空间的粒子。另外,由于粒子运动后的适应度计算需要BPNN模型的验证训练,BPNN模型也带来了粒子位置的更新,因此我们对反馈进行了增强,以提高粒子的搜索效率。在此基础上,形成了新的三个搜索路径
新位置P
m-new是三条搜索路径中最接近实际最优解的,其适应度值最小。通过三种搜索路径的竞争和训练反馈,加快了单个粒子的搜索速度,从而加快了整个粒子群的收敛速度。
Vm-A=ωVm (7)
Vm-B=ωVm+c1rand()(Gm-Pm) (8)
Vm-C=ωVm+c1rand()(Gm-Pm)+c2rand()(Z-Pm) (9)
Pm-new=min(Fm(A),Fm(B),Fm(C)) (10)
为了解决局部优化问题,对更新后的单个极值进行变异操作,即以一定的概率U重新初始化粒子的位置属性(式11)。群极值的更新机制与原算法一致。
其中,W为当前迭代次数,Q为最大迭代次数。
基于以上陈述,本发明提供步骤S21中所述基于粒子群算法获取BPNN网络中各节点的权值与阈值的初始值,得到初始BPNN网络的具体步骤如下:
S21a:将BPNN网络中各节点的权值与阈值的初始值作为待定参数,并将待定参数作为粒子群算法中各粒子的位置属性,且待定参数的总数记为R,粒子群中包含的粒子总数记为M;
S21b:初始化每个粒子的位置属性Pm={Pmr}和速度属性Vm={Vmr},其中,Pmr为第m个粒子的第r个位置属性表征的第r个待定参数,Vmr为第m个粒子的第r个速度属性,且m=1,2,…,M,r=1,2,...,R;
S21c:分别将各粒子作为当前粒子执行适应度值获取操作,得到各粒子对应的适应度值Fm,其中,所述适应度值获取操作为:
将当前粒子当前的位置属性表征的待定参数代入BPNN网络,得到当前BPNN网络;将所述训练输入总矩阵输入当前BPNN网络,得到当前BPNN网络对当前关节的角度预测值,获取角度预测值的过程同时更新了当前BPNN网络的待定参数;将角度预测值与当前关节对应的训练样本中输出数据部分之间的均方误差MSE作为当前粒子对应的适应度值Fm;
S21d:根据各粒子对应的适应度值Fm获取各粒子的个体极值Gm以及种群极值Z;具体的,各粒子的个体极值Gm的获取方法为:
将各粒子分别作为当前粒子执行以下步骤:
比较当前粒子当前代对应的适应度值与其上一代的适应度值,取其中较小的适应度值对应的位置属性作为当前粒子的个体极值Gm;初始化时,当前粒子的个体极值Gm等于当前粒子当前的位置属性;
种群极值Z的获取方法为:
比较各粒子当前对应的适应度值的大小,取其中的最小值对应的个体极值Gm作为种群极值Z。
S21e:根据各粒子的个体极值Gm以及种群极值Z,为每个粒子的速度属性设定如下三种不同的更新方式:
Vm-A=ωVm
Vm-B=ωVm+c1rand()(Gm-Pm)
Vm-C=ωVm+c1rand()(Gm-Pm)+c2rand()(Z-Pm)
其中,Vm-A为采用第一种更新方式得到的I型速度属性,Vm-B为采用第二种更新方式得到的II型速度属性,Vm-C为采用第三种更新方式得到的III型速度属性,ω为设定的惯性因素,c1、c2均为设定的学习因子,rand()为介于(0,1)之间的随机数;
S21f:将各粒子当前的位置属性Pm分别与各粒子自身对应的I型速度属性Vm-A、II型速度属性Vm-B以及III型速度属性Vm-C相加,对应得到各粒子的I型位置属性、II型位置属性以及III型位置属性;
S21g:分别对各型位置属性下的粒子执行适应度值获取操作,得到各粒子在各型位置属性下对应的适应度值;
S21h:分别获取每个粒子在各型位置属性下对应的适应度值的最小值Fm_min,并将各最小值Fm_min对应的BPNN网络更新后的待定参数分别作为各粒子下一代位置属性Pm-new;
S21i:按照设定的异变概率初始化各粒子下一代位置属性Pm-new,再分别对异变前和异变后的各粒子执行适应度值获取操作,得到各粒子异变前和异变后对应的适应度值;同时,对于异变后对应的适应度值小于异变前对应的适应度值的粒子,将异变后的位置属性作为最终的下一代位置属性Pm-new,其余粒子下一代位置属性Pm-new保持不变;
S21j:重新获取具有下一代位置属性Pm-new的各粒子的个体极值Gm以及种群极值Z,然后重复步骤S21e~S21j,直到达到设定的最大迭代次数,将最终得到的种群极值Z对应的位置属性作为BPNN网络中各节点最终的权值与阈值的初始值。
综上所述,本发明提供了一种基于IPSO-BPNN的长时人体下肢运动预测算法,首先对原始数据进行预处理,具体为对原始时间序列进行中值平均滤波处理,然后对其进行归一化处理,最后根据预测需求选择合适的时间跨度T,对时间序列进行空间重构;其次,初始化BPNN神经网络的基本模型,确定其结构、初值等参数;再者,利用IPSO算法对BPNN网络的初始参数寻优,再将最优初始参数赋值给原网络,最后用训练集数据训练;最后,利用测试集数据给出预测,建立预测评价体系对结果进行分析。
本发明的核心改进部分在加入时间跨度的时间序列空间重构和IPSO。加入时间跨度的时间序列空间重构使得预测时长可以根据实际预测需求调整,且可以覆盖系统延时;IPSO这部分的算法推动了整个模型的深度优化。由此可见,本发明提供的关节角度预测模型计算效率更高,IPSO的迭代收敛速度更快,优化结果更好;IPSO-BPNN的预测结果更加接近实际观测数据;预测时长可以根据实际预测需求调整,且可以覆盖系统延时;同时,预测结果的评价标准更加完善。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当然可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。