Matlab语言的Neural Network Toolbox 及其在同步中的应用
扫描二维码
随时随地手机看文章
1 引 言
神经网络工具箱扩充了Matlab的设计、应用、显示和仿真神经网络的工具。如今神经网络能够用来解决常规计算机和人难以解决的问题,神经网络已经在各个领域中应用,以实现各种复杂的功能。这些领域包括:模式识别、非线性系统鉴定和系统控制。神经网络工具箱除了提供方便用户设计和管理网络的可视化接口(GUI)外,还提供了大量已经证实的网络设计的支持。标准、开放、可扩张的工具箱设计方便了用户自定义函数和网络的生成。
像生物学神经系统一样,一个神经网络会学习,因此,也就可以被训练去解决问题,识别模式,划分数据和预测事态发展。神经网络的行为由它的各个计算参数的结合方式以及它们的权重来决定。一般的神经网络都是可调节的,或者说可训练的,这样一个特定的输入便可得到要求的输出。这里,网络根据输出和目标的比较而调整,直到网络输出和目标匹配。神经网络工具GUI使神经网络变得简单,它使你能够导人大量复杂的数据,并能够很快地产生、初始化、训练、仿真和管理网络。简单的图像表示有助于明确和理解网络的结构。因为神经网络需要复杂的矩阵计算,Matlab提供一个神经框架,帮助快速地使用神经网络和学习它们的行为和应用。
文献[5]讨论了用扩充的神经系统工具的方法在仿真环境里解决现存的问题。这种新方法简化了网络结构,并且也实现对其他软件工具的利用。目前还没有论文公开讨论NNT在同步机制中的应用,而这一部分的研究也是具有现实意义的。
2 Matlab神经网络工具箱
NNT使在Matlab中使用神经网络变得简单。其工具箱中包含了大量函数和网络结构框图(图1是一个简单的神经网络框图,图中独立的符号简化了对网络结构的理解),因此,这里不需要介绍所有的将用到的函数、训练算法等。
2.1 NNT的结构
工具箱是基于网络对象的。网络对象包括关于神经网络的所有信息,例如:网络的层数和结构、层与层之间的连接等。Matlab提供了高等网络层的创建函数,比如:newlin(创建一个线性层),newp(创建一个感知机),newff(创建一个反向传播网络)等。举例说明,这里创建了1个感知机,2个输入向量p1=[0 1],p2=[-2 2],神经元数为1。
子对象结构中包含了网络单个对象的信息。神经元的每一层有相同的传输函数net.transferFcn和网络输入函数net.netInputFcn,对于创建感知机采用hardlim和netsum函数。如果神经元要有不同的传输函数,则将设计不同的层以满足要求。参数net.Input-Weights和net.layerWeights描述了被应用的训练函数以及它们的参数。
接下来叙述训练函数、初始化函数和性能函数。
trainFcn和adaptFcn是2种不同的训练方式,分别指批处理方式和增加方式或称在线方式。通过设置trainFcn的参数,就可以告诉Matlab哪种运算法被使用;在运用循环顺序增加方式时,多用trainc函数。ANN工具箱包含大约20个训练函数。性能函数用来测定ANN完成规定任务时的性能。对于感知机,它的平均差错性能测定用函数mae;对于线性衰退系统,它的均方根差错性能测定用函数mae。initFcn函数用来初始化网络的权重和偏置。神经网络工具箱包含在nnet目录中,键入help nnet可得到帮助主题。如果要将这些函数替换为工具箱里的其他函数或者是自己编写的函数,只需把这些函数名配置新的参数即可,例如:
通过改变参数,可以改变上面提到的函数的默认行为。最经常用到的函数的参数就是:trainParam,格式:net.trainParam.epochs,用来设置运算的时间点的最大数目;格式:net.trainParam.show,用来设置性能测定间隔的时间点的数目。可以通过输入帮助help获得更多信息。
网络的权重和偏置也被存储在下面的结构体里面:
IW(i,j)部分是一个二维的元胞矩阵,存储输入j与网络层i的连接的权重。LW(i,j)部分,用来存储网络层j和网络层i间连接的权重。元胞数组b存储每一层的偏置向量。
2.2 模式分类
如果一个问题可以被分解为多个模式级别,则可以用神经网络来解决这一问题。在大多数情况下,利用神经网络解决问题是可能的。神经网络的函数用来接收输入模式,然后输出适合这一级别的模式。
这方面的例子由产生和训练一个感知机对属于3个不同等级的点进行正确的分级。神经网络的输入数据被定义如下:
X矩阵的每一行代表一个采样点,采样点的等级用矩阵C的相应元素值来描述。因为想要对3个不同的等级进行区分,所以需要3个感知机,每一个等级有1个。相应的目标函数描述如下:
2.3 训练与泛化
神经网络是模式分级的,但并不是所有的模式分级都指的是神经网络。下面将讲述神将神经网络与其他分级的一些区别。它们的主要区别在2个属性上:学习与泛化。
在使用电子存储器解决数字分级器时,管理存储器,特别是完成输入的合并方面,花费很大精力。要求能够通过给它较少数目的简单且具有正确响应的例子来解决问题,这就指的是学习或称为训练:系统学习识别默写特定的模式,然后给出正确的输出响应。
某种程度上,这一部分已经被如今的电子存储器实现了。首先初始化设置存储器的所有值为0,然后,调用范例对存储器的值进行训练,将结果存入存储器的相应位置。在相应的位置用1替换原来的0。1显示了相应的输入模式等级。训练阶段结束后,进入实际操作。如果这些模式与训练阶段的模式是一样的,则输出结果就是正确的。
理想的,器件应该给出正确的响应,即使有些例子没有明确的显示。这部分被称为泛化。系统能够推断出例子给的不同模式等级的属性。神经网络能够做这种事,如果他们被正确操作,他们将对那些在训练阶段学习的模式非常相似的模式做出响应。那么,对于数字分级器来说,这意味着神经网络被数据范例进行训练,它就能正确地区分相似的数据,而以前这些都是次要的。这里设:
训练参数一般都依赖于选择的训练函数。两个重要的参数:net.trainParam.epochs设置所有数据全部用于训练的最多次数,net.trainParam.show设置训练函数状态报告的时间。例如:
3 在同步中的应用
在加性高斯白噪声条件下,接收端对信号进行高速采样,根据香农定理,在一个模拟信号持续时间内至少要保证4个采样点,才能完整和准确地恢复信号的信息,由此决定了系统的采样要求。软件上主要由若干BP(Back-Propagation)前向神经网络完成,网络的个数与算法精度有关。
在搜索长度一定的条件下,根据整个搜索区间上采样点个数确定各个神经网络的输出节点数目。使用的网络个数由捕获精度来确定,即整个捕获区间上划分为N个搜索相位,则采样N个网络并行执行。每个网络都具有相同的一组输入信号,一个输出为0或者1。
为体现神经网络对信号进行捕获的思想,训练样本为不含噪声的高斯脉冲信号,搜索的相位区间为6个,识别的结果是6维向量,在出现信号相应得区间位置上对应的元素为1,其他元素为0,测试样本信噪比为30dB。图2是6个不含噪声的训练样本;图2和图3左边是信噪比为30 dB的分别出现在6个不同区间的测试样本,右边是网络输出的识别结果,在向量的对应元素上出现尖峰。仿真结果说明在30 dB信噪比的情况下,利用神经网络能够准确检测到信号的出现时刻。由于仿真使用的训练样本比较少,神经网络没有充分提取样本的统计特性,也没有足够的网络结构和训练过程对神经网络检测信号能力的影响和噪声对训练过程和测试过程及性能的影响。通过仿真看来,在特定情况下神经网络对信号具有一定的检测能力。
4 结 语
本文在介绍Matlab神经网络工具箱的基础上,结合简单例子进一步对神经网络工具箱中的一些函数及神经网络结构进行解释和说明。然后利用神经网络在同步中的应用进行了简单的说明,并通过仿真验证了神经网络在同步中的可行性。