基于EKF的模糊神经网络快速自组织学习算法研究
摘 要:为了快速地构造一个有效的模糊神经网络,提出一种基于扩展卡尔曼滤波(ekf)的模糊神经网络自组织学习算法。在本算法中,按照提出的无须经过修剪过程的生长准则增加规则,加速了网络在线学习过程;使用ekf算法更新网络的自由参数,增强了网络的鲁棒性。仿真结果表明,该算法能够快速学习、良好的逼近精度和泛化能力。
关键词:模糊神经网络;扩展卡尔曼滤波;自组织学习
fast self-organizing learning algorithm based on ekf for fuzzy neural network
zhou shang-bo,liu yu-jiong
(college of computer science, chongqing university, chongqing 400044, china)
abstract:to construct an effective fuzzy neural network, this paper presented a self-organizing learning algorithm based on extended kalman filter for fuzzy neural network. in the algorithm, the network grew rules according to the proposed growing criteria without pruning, speeding up the online learning the free parameters were updated by the extended kalman filter approach and the robustness of the network was obviously enhanced. the simulation results show that the proposed algorithm can achieve fast learning speed, high approximation precision and generation capability.
key words:fuzzy neural network; extended kalman filter(ekf); self-organizing learning
模糊神经网络起源于20世纪80年代后期的日本,由于其简单、实用,已经被广泛应用在工业控制、系统辨识、模式识别、数据挖掘等许多领域[1~4]。然而,如何从可用的数据集和专家知识中获取合适的规则数仍然是一个尚未解决的问题。为了获取模糊规则,研究人员提出了不同的算法,如文献[5]利用正交最小二乘算法确定径向基函数的中心,但是该算法训练速度比较慢;文献[6]提出了基于径向基函数的自适应模糊系统,其算法使用了分层自组织学习策略,但是逼近精度低。扩展卡尔曼滤波(ekf)算法作为一种非线性更新算法,在神经网络中得到了广泛应用。文献[7]利用扩展卡尔曼滤波算法调整多层感知器的权值,文献[8]利用扩展卡尔曼滤波算法调整径向基函数网络的权值。
本文提出了一种模糊神经网络的快速自组织学习算法(sfnn)。该算法基于无须修剪过程的生长准则增加模糊规则,加速了网络学习过程,同时使用ekf调整网络的参数。在该算法中,模糊神经网络结构不是预先设定的,而是在学习过程中动态变化的,即在学习开始前没有一条模糊规则,在学习过程中逐渐增加模糊规则。与传统的模糊神经网络学习算法相比,本算法所得到的模糊规则数并不会随着输入变量的增加而呈指数增长,特别是本算法无须领域的专家知识就可以实现对系统的自动建模及抽取模糊规则。当然,如果设计者是领域专家,其知识也可以直接用于系统设计。本算法所得到的模糊神经网络具有结构小、避免出现过拟合现象等特点。
1 sfnn的结构
本文采用与文献[9]相似的网络结构,如图1所示。其中,r是输入变量个数;?x?i(i=1,2,…,r)是输入语言变量;y是系统的输出;mfij是第i个输入变量的第j个隶属函数;r?j表示第j条模糊规则;w?j是第j条规则的结果参数;u是系统总的规则数。
下面是对该网络各层含义的详细描述。
第一层:输入层。每个节点代表一个输入语言变量。
第二层:隶属函数层。每个节点代表一个隶属函数,隶属函数采用如下的高斯函数:
μij=exp(-(x?i-cij)?2σ?2ij);i=1,2,…,r; j=1,2,…,u(1)
其中:r是输入变量数;u是隶属函数个数,也代表系统的总规则数;μij是x?i的第j个高斯隶属函数;cij是x?i的第j个高斯隶属函数的中心;σij是x?i的第j个高斯隶属函数的宽度。
第三层:t-范数层。每个节点代表一个可能的模糊规则的if-部分,也代表一个rbf单元,该层节点个数反映了模糊规则数。如果计算每个规则触发权的t-范数算子是乘法,则在第三层中第j条规则r?j的输出为
φ?j=exp(-?ri=1(x?i-cij)?2σ?2ij);j=1,2,…,u(2)
第四层:输出层。该层每个节点代表一个输出变量,该输出是所有输入变量的叠加。
y(x)=?uj=1w?jφ?j(3)
其中:y是网络的输出;w?j是then-部分。
2 sfnn的学习算法
如前文所述,第三层的每个节点代表一个可能的模糊规则的if-部分或者一个rbf单元。如果需要辨识系统的模糊规则数,则不能预先选择模糊神经网络的结构。于是,本文提出一种新的学习算法,该算法可以自动确定系统的模糊规则并能达到系统的特定性能。
2.1 模糊规则的产生准则
在模糊神经网络中,如果模糊规则数太多,不仅增加系统的复杂性,而且增加计算负担和降低网络的泛化能力;如果规则数太少,系统将不能完全包含输入/输出状态空间,将降低网络的性能。是否加入新的模糊规则取决于系统误差、可容纳边界和误差下降率三个重要因素。
2.1.1 系统误差
误差判据:对于第i个观测数据(x?i,t?i),其中x?i是输入向量,t?i是期望输出,由式(3)计算网络现有结构的全部输出y?i。
定义:‖e?i‖=‖t?i-y?i‖;i=1,2,…,n(4)
如果‖e?i‖>k?e k?e=max[emax×β?i,emin](5)
则说明网络现有结构的性能比较差,要考虑增加一条新的规则;否则,不生成新规则。其中:k?e是根据网络期望的精度预先选择的值;emax是预定义的最大误差;emin是期望的输出精度;β(0<β<1)是收敛因子。
2.1.2 可容纳边界
从某种意义上来讲,模糊神经网络结构的学习是对输入空间的高效划分。模糊神经网络的性能和结构与输入隶属函数紧密相关。本文使用的是高斯隶属函数,高斯函数输出随着与中心距离的增加而单调递减。当输入变量采用高斯隶属函数时,则认为整个输入空间由一系列高斯隶属函数所划分。如果某个新样本位于某个已存在的高斯隶属函数覆盖范围内,则该新样本可以用已存在的高斯隶属函数表示,不需要网络生成新的高斯单元。
可容纳边界:对于第i个观测数据(x?i,t?i),计算第i个输入值x?i与已有rbf单元的中心c?j之间的距离d?i(j),即
d?i(j)=‖x?i-c?j‖;i=1,2,…,n; j=1,2,…,u(6)
其中:u是现有的模糊规则或rbf单元的数量。令
di,min=arg min(d?i(j))(7)
如果di,min>k?d,k?d=max[dmax×γ?i,dmin](8)
则说明已存在的输入隶属函数不能有效地划分输入空间。因此,需要增加一条新的模糊规则,否则,观测数据可以由已存在的距离它最近的rbf单元表示。其中:k?d是可容纳边界的有效半径;dmax是输入空间的最大长度;dmin是所关心的最小长度;γ(0<γ<1)是衰减因子。
2.1.3 误差下降率
传统的学习算法把误差减少率(err)[5]用于网络生长后的修剪过程,算法会因为修剪过程而增加计算负担,降低学习速度。本文把误差减少率用于生长过程形成一种新的生长准则,算法无须经过修剪过程,从而加速网络的学习过程。
给定n个输入/输出数据对(x?i,t?i),t=1,2,…,n,把式(3)看做线性回归模型的一种特殊情况,该线性回归模型为
t(i)=?uj=1h?j(i)θ?j+ε(i)(9)
式(9)可简写为
d=hθ+e(10)
d=t?t∈r?n是期望输出,h=φ?t∈r??n×u是回归量,θ=?w?t∈r?u是权值向量,并且假设e∈r?n是与回归量不相关的误差向量。
对于矩阵φ,如果它的行数大于列数,通过qr分解:
h=pq(11)
可把h变换成一组正交基向量集p=[p?1,p?2,…,p?u]∈r??n×u,其维数与h的维数相同,各列向量构成正交基,q∈r??u×u是一个上三角矩阵。通过这一变换,有可能从每一基向量计算每一个分量对期望输出能量的贡献。把式(11)代入式(10)?可得
d=pqθ+e=pg+e(12)
g的线性最小二乘解为g=(p?tp)??-1p?td,或
g?k=p?t?kdp?t?kp?k;k=1,2,…,u(13)
q和θ满足下面的方程:
qθ=g(14)
当k≠l时,p?k和p?l正交,d的平方和由式(15)给出:
d?td=?uk=1g?2?kp?t?kp?k+e?te(15)
去掉均值后,d的方差由式(16)给出:
n??-1d?td=n??-1?uk=1g?2?kp?t?kp?k+n??-1e?te(16)
由式(16)可以看到,n??-1?uk=1g?2?kp?t?kp?k是由回归量p?k所造成的期望输出方差的一部分。因此,p?k的误差下降率可以定义如下:
err?k=g?2?kp?t?kp?kd?td,1≤k≤u(17)
把式(13)代入式(17)可得
err?k=(p?t?kd)?2p?t?kp?kd?td,1≤k≤u(18)
式(18)为寻找重要回归量子集提供了一种简单而有效的方法,其意义在于err?k揭示了p?k和d的相似性。err?k值越大,表示p?k和d的相似度越大,且p?k对于输出影响越显著。利用err定义泛化因子(gf),gf可以检验算法的泛化能力,并进一步简化和加速学习过程。定义:
gf=?uk=1err?k(19)
如果gf
2.2 参数调整
需要注意的是,不管是新生成的隐节点还是已存在的隐节点,都需要对网络参数进行调整。传统的方法是使用lls[10]方法对网络参数进行调整,本文提出使用ekf方法调节网络的参数。由于lls方法在确定最优参数时计算简单、速度快,但该方法对噪声敏感,其学习速度随着信噪比的增加而下降。另外,与lls方法相关的问题是其求解可能是病态的,这使得参数估计变得很困难。ekf方法由于其自适应过程比较复杂,计算速度没有lls方法快,但是ekf方法在噪声环境下具有鲁棒性,使用ekf方法可以实现一种健壮的在线学习算法。网络参数可以用下面的ekf[11]方法进行调整。事实上,网络的参数向量θ可以看做一个非线性系统的状态,并用下面的方程描述:
θ?i=θi-1
t?i=h(θi-1,x?i)+e?i(20)
在当前的估计值i-1处将非线性函数h(θi-1,x?i)展开,则状态模型可以重写为
θ?i=θi-1
t?i=h?iθi-1+ε?i+e?i(21)
其中:ε?i=h(i-1 ,x?i)-h?ii-1+ρ?i。h?i是如下的梯度向量:
h?i=?h(θ,x?i)?θ|θ=i-1 (22)
参数向量θ使用下面的扩展卡尔曼滤波算法更新:
k?i=pi-1h?t?i[h?ipi-1h?t?i+r?i]??-1
θ?i=θi-1+k?i(t?i-h(θi-1,x?i))
p?i=pi-1-k?ih?ipi-1+q?i(23)
其中:k?i是卡尔曼增益矩阵;p?i是逼近误差方差阵;r?i是量测噪声方差阵;q?i是过程噪声方差阵。
全局扩展卡尔曼滤波算法会涉及大型矩阵运算,增加计算负担,因此可以将全局问题划分为一系列子问题从而简化全局方法。网络的前件部分具有非线性特性,利用扩展卡尔曼滤波算法对其进行调整;网络的后件部分具有线性特性,利用卡尔曼滤波算法对其进行调整,该方法等同于将全局方法简化为一系列解耦方法,可以降低计算负担。由于高斯函数的中心对系统的性能影响不明显,为了简化计算,只对高斯隶属函数的宽度进行调整。
前件参数使用如下的扩展卡尔曼滤波算法更新:
k?δ?i=p?δi-1g?t?i[r?i+g?ip?δi-1g?t?i]??-1
δ?i=δi-1+k?δ?i(t?i-wi-1φ?i)
p?δ?i=p?δi-1-k?δ?ig?ip?δi-1+q?i(24)
后件参数使用如下的卡尔曼滤波算法更新:
k?w?i=p?wi-1φ?t?i[r?i+φ?ip?wi-1φ?t?i]??-1
w?i=wi-1+k?w?i(t?i-wi-1φ?i)
p?w?i=p?wi-1-k?w?iφ?ip?wi-1+q?i(25)
2.3 模糊规则的增加过程
在sfnn学习算法中,模糊规则增加过程如下:
a)初始参数分配。当得到第一个观测数据(x?1,t?1) 时,此时的网络还没有建立起来,因此这个数据将被选为第一条模糊规则:c?0=x?0,δ?1=δ?0,w?1=t?1。其中δ?0是预先设定的常数。
b)生长过程。当得到第i个观测数据(x?i,t?i)时,假设在第三层中已存在u个隐含神经元,根据式(4)(7)和(19),分别计算e?i、di,min、gf。如果
‖e?i‖>k?e,di,min>k?d,且gf
则增加一个新的隐含神经元。其中k?e、k?d分别在式(5)和(8)中给出。新增加的隐含神经元的中心、宽度和权值赋值为:cu+1=x?i,δu+1=k?0di,min,wu+1=e?i,其中k?0(k?0>1)是重叠?因子。
c)参数调整。当增加新神经元后,所有已有神经元的参数通过式(24)(25)描述的算法调整。
3 仿真研究
时间序列预测在解决许多实际问题中是非常重要的。它在经济预测、信号处理等很多领域都得到了广泛应用。
本文采用的时间序列由mackey-glass差分延迟方程产生,其方程定义为[5]
x(t+1)=(1-a)x(t)+bx(t-τ)1+x??10(t-τ)(27)
为了能够与文献[5,6]在相同的基础上进行比较,取值?δt=p=6,式(27)中的参数选择为:a=0.1,b=0.2,τ=17。预测模型表示为
x(t+6)=f[x(t),x(t-6),x(t-12),x(t-18)](28)
为了获得时间序列,利用式(27)生成2 000个数据,式(27)的初始条件为:x(0)=1.2。为了训练和测试,在t=124和t=?1 123之间选择1 000个样本作为式(28)的输入/输出样本数据。使用前500个数据对作为训练数据集,后面的500个数据对验证该模型的预测性能。图2显示了sfnn生成的模糊规则数;图3显示了从t=124到t=623的训练结果;图4显示了sfnn良好的预测性能。表1列出了sfnn与其他算法的比较结果。表1显示,与ols、rbf-afs算法相比,sfnn具有最少的规则数、最小的误差和良好的泛化能力,同时具有快速的学习速度。sfnn的快速性就在于:采用无须修剪过程的生长准则,加速了网络学习过程;利用扩展卡尔曼滤波调整网络的参数,可以缩短网络的学习周期。从上面的分析可以看出,sfnn具有紧凑的结构、快速的学习速度、良好的逼近精度和泛化能力。
4 结束语
sfnn采用在线学习方法、参数估计和结构辨识同时进行,提高了网络的学习速度。基于该方法生成的模糊神经网络具有紧凑的结构,网络结构不会持续增长,避免了过拟合及过训练现象,确保了系统的泛化能力。
参考文献:
[1]
huang huan,wu imation capabilities of multilayer fuzzy neural networks on the set of fuzzy-valued functions[j].information sciences,2009,179(16):2762-2773.
[2]deng xing-sheng,wang ental learning of dynamic fuzzy neural networks for accurate system modeling[j].fuzzy sets and systems,2009,160(7):972-987.
[3]韦玉科,汪仁煌,李江平,等.一种新的数据智能化处理算法[j].计算机应用研究,2008,25(5):1328-1329.
[4]chen sheng,hong xia,luk b l,et onal-least-squares regression:a unified approach for data modeling[j].neurocompu-?ting,2009,72(10-12):2670-2681.
?[5]chen s,cowan c f n,grant p onal least squares learning algorithm for radial basis function networks[j].ieee trans on neural networks,1991,2(2):302-309.
[6]cho k b,wang b basis function based adaptive fuzzy systems and their applications to system identification and prediction[j].fuzzy sets and systems,1996,83(3):325-339.
[7]rivals i,personnaz l.a recursive algorithm based on the extended kalman filter for the training of feedforward neural models[j].neurocomputing,1998,20(1):279-294.
[8]simon ng radial basis neural networks with the extended kalman filter[j].neurocomputing,2002,48(1):455-475.
[9]wu shi-qian,er m j,gao yang.a fast approach for automatic ?generation of fuzzy rules by generalized dynamic fuzzy neural networks[j].ieee trans on fuzzy systems,2001,9(4):578-594.
[10]wu shi-qian,er m c fuzzy neural networks:a novel approach to function approximation[j].ieee trans on systems, man and part b-cybernetics,2000,30(2):358-364.
[11]rigatos g,zhang model validation using the local statistical approach[j].fuzzy sets and systems,2009,160(7):882-904.
上一篇:分板计算机网络安全管理与有效运行
下一篇:寻找网络质量的峰值