CMAC神经网络模糊控制器设计
2009-02-04
作者:(1)陆 军(2)张秀梅 (3)
摘 要: 详细介绍了CMAC神经网络结构、中间层作用函数地址的计算方法、输出层权值的学习算法,并利用CMAC神经网络对水下机器人深度模糊控制器进行了学习。仿真结果表明,训练得到的CMAC神经控制器控制效果良好,中间层作用函数地址的计算方法正确。
关键词: CMAC神经网络 模糊控制 水下机器人
小脑模型关节控制器神经网络(Cerebella Model Articulation Controller Neural Network,即CMAC NN)由J.S.Albus 于1975年首先提出并由W.T.Miller等人成功运用于机械手的实时动态轨迹跟踪控制。与多层前项神经网络这样的全局逼近神经网络[1]相比,CMAC神经网络在任意时刻的学习都是少数的输出层权值的调节过程,并且是一个线性优化过程,因此具有学习速度快的特点,非常适合于在线实时控制。对于大多数的控制问题,完全可以达到与多层前向神经网络相同的控制效果。目前,CMAC神经网络被越来越多地应用于机器人控制、模式识别、信号处理以及自适应控制等领域。
1 CMAC的结构及工作原理
CMAC是类似于感知器的基于网格基的联想记忆神经网络。它由输入层、中间层和输出层组成。在输入层与中间层和中间层与输出层之间分别有由设计者预先确定的输入层非线性映射和输出层权值的自适应线性映射。在输入层对n维输入空间进行划分,形成一个n维网格基,任意一个输入都降落到此n维网格基的一个超立方体单元内。中间层由若干个基函数构成,对任意一个输入只有少数几个基函数的输出为非零值,我们称非零输出的基函数为作用基函数,作用基函数的个数为泛化参数ρ(generalization parameter),它规定了网络内部影响网络输出的区域大小。中间层基函数的个数用P表示,泛化参数应满足ρ<<P。在中间层的基函数与输出层的网络输出之间通过若干个连接权进行连接,它是一个全连接,在网络训练阶段,可以通过梯度下降算法对权值进行调整。CMAC神经网络的设计主要包括输入空间的划分、输入层非线性映射的实现、输出层权值学习算法,下面给予详细介绍。
1.1 CMAC 输入空间的划分
设计CMAC神经网络的第一步是对输入空间的划分方法进行定义。设输入向量为x=[x1x2...xn]T,且xi∈Ri,Ri为一有限区间,定义为:
通常,所有左边的外节点均置于ximin,所有右边的外节点均置于ximax。若两节点在同一位置,则称该节点为重节点。所有这些节点将整个区间RI分为ri+1个子区间Rr,j(0≤j≤ri):
内节点的选区办法可以是在区间[ximin,ximax]等间隔划分或是根据实际问题的需要非均匀划分,即在期望输出变化快的区域多划分,在期望输出变化慢的区域少划分。对输入空间的划分不仅影响网络的内存消耗,还影响网络的建模能力和学习收敛速度。
1.2 CMAC输入层非线性映射的实现
设计CMAC输入层非线性映射的目的是保证对任意一个输入,在中间层只有ρ个基函数的输出值为非零值,并且在输入沿某一输入坐标轴平行移动一个超立方体单元后,只有一个非零输出的基函数与原来的不同。而在输入沿某一坐标轴平行移动ρ个超立方体单元后,已无任何一个非零输出的基函数与原来相同,这样就保证了当输入相近时,输出也比较相近,当输入的距离较远时,相应的输出互不相关。并且,输出层权值的调整也是局部的,在每一次学习过程中只有ρ个权值发生调整,对两个相近的输入,只有少量的权值发生变化,而不影响大多数权值,这样大大加快了网络学习速度,减少了学习干扰。当泛化参数ρ增大时,学习变得缺少局部特性,网络的建模能力通常也会下降。
由于对任意一个输入向量x,只有ρ个中间层的基函数的输出非零,问题归结为找到这ρ个基函数在中间层p维基函数向量a(t)中的地址。下面分别给出在输入为一维、二维和多维情况下的作用基函数的地址的计算方法。
1.2.1 一维输入的计算方法
当n=1时,共有ρ个作用基函数输出非零,其中第j个作用基函数地址ad(j)的计算方法如下:
1.2.2 二维输入的计算方法
当n=2时,ad(j)的计算方法如下:
1.2.3 多维输入的计算方法
当n>2时,第j个作用基函数地址ad(j)的计算方法如下:
1.3 CMAC 基函数的输出
本文采用二进制CMAC神经网络,作用基函数的输出为1/ρ,这样CMAC网络作用基函数的输出和为
1.4 CMAC 输出层权值学习算法
本文采用带有输出死区的NLMS学习算法:
这里,δ为学习速率,当δ∈(0,2)时,学习收敛,输出误差。
2 水下机器人CMAC神经网络控制器设计
采用CMAC神经网络对水下机器人深度模糊控制器进行学习,从而得到水下机器人CMAC神经网络控制器。
2.1 水下机器人深度模糊控制器
本文对某水下机器人深度通道设计了一PD型模糊控制器,以系统输出误差e及误差变化率e’作为模糊控制器的输入,e∈[-1.5m,1.5m],e’∈[-0.5m/s,0.5m/s],模糊控制器的输出是z轴方向上的推力,u∈[-270N,270N]。模糊控制器的输入和输出语言变量的模糊子集均为NL(负大)、NM(负中)、NS(负小)、ZE(零)、PS(正小)、PM(正中)、PL(正大)。模糊隶属函数采用等腰三角形,且隶属函数的重合度为2,采用Mandani推理方法。模糊控制规则表如表1所示。
模糊控制器的输出曲面见图1,模糊控制器作用下的系统输出见图2。
2.2 水下机器人CMAC神经网络深度控制器
本文利用CMAC神经网络对水下机器人CMAC模糊深度控制器进行学习,以模糊控制规则的前件和后件隶属函数的中心对应的e、e’和u的取值作为训练样本对,组成49个训练样本对。CMAC神经网络的设计参数如下:泛化参数ρ=5,输入空间为均匀划分,划分数为20*20,覆盖偏移向量d1=[1 3]T,d2=[2 1]T,d3=[3 4]T,d4=[4 2]T,d5=[5 5]T,输出死区ζ=5。训练得到的CMAC神经网络深度控制器输出曲面见图3,该控制器作用下的系统输出见图4。
参考文献
1 孙增圻.智能控制理论及应用.北京:清华大学出版社,广西科学技术出版社,1997
2 石寺博.遥控无人潜器的运动仿真.船工技术译丛,1987(3):53~62
3李士勇,夏乘志.模糊控制和智能控制理论与应用.哈尔滨工业大学出版社,1990