3.输出层的节点数
输出层的节点数取决于两个方面,输出数据类型和表示该类型所需数据大小。当BP网络用于模式分类时,以二进制形式来表示不同模式的输出结果,则输出层的节点数可根据待分类模式数来确定。若设待分类模式的总数为m,则有两种方法确定输出层节点数:
(1)节点数即为待分类模式总数m,此时对应第j个待分类模式的输出为
Oj?[00?010?00]j
即第j个节点输出为1,其余输出均为0。而以输出全为0表示拒识,即所输入的模式是不属于待分类模式中的任何一种模式。
(2)节点数为log4.隐层的节点数
一个具有无限隐层节点的两层BP网络可以实现任意从输入到输出的非线性映射。但对于有限个输入模式到输出模式的映射,并不需要无限个隐层节点,这就涉及到如何选择隐层节点数的问题,而这一问题的复杂性,使得迄今为止,尚未找到一个很好的解析式,隐层节点数往往根据前人设计所得的经验和自己进行试验来确定。一般认为,隐层节点数与求解问题的要求、输入输出单元数多少有直接的关系。另外,隐层节点数太多会导致学习时间过长;而隐层节点数太少,容错性差,识别未经学习的样本能力低,所以必须综合多方面的因素进行设计。
对于用于模式识别/分类的BP网络,根据前人经验,可以参照以下公式进行设计:
n?ni?n0?a 3-11
m2个。这种方式的输出是m种输出模式的二进制编码。
式中:n为隐层节点数;ni为输入节点数;n0为输出节点数;a为1~10之间的常数。
5.传输函数
BP网络中的传输函数通常采用S(Sigmoid)型函数:
f(x)?11?e?x 3-12
在某些特定情况下,还可能采用纯线性(pureline)函数。如果BP网络的最后一层是Sigmoid函数,那么整个网络的输出就限制在一个较小的范围内(0~1之间的连续量);如果BP网络的最后一层是Pureline函数,那么整个网络的输出可以采取任意值。
20
四、时间序列预测实验
(一)MATLAB
1.MATLAB简介
MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C、FORTRAN等语言简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C、FORTRAN、C++、JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用[7]。
2.MATLAB的特点
(1) MATLAB语言可用于技术计算
(2)MATLAB的开发环境可对代码、文件和数据进行管理 (3) 交互式工具可以按迭代的方式探查、设计及求解问题
(4)数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等 (5) 二维和三维图形函数可用于可视化数据 (6)各种工具可用于构建自定义的图形用户界面
(7)各种函数可将基于MATLAB的算法与外部应用程序和语言(如 C、C++、Fortran、Java、COM 以及 Microsoft Excel)集成
3.MATLAB的应用
MATLAB的功能很全面,包括数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与仿真、数字图像处理、数字信号处理、通讯系统设计与仿真以及财务与金融工程等。
MATLAB 的应用范围也非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。
4.MATLAB的优势
(1) 友好的工作平台和编程环境
21
MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。
(2)简单易用的程序语言
MATLAB一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
(3)强大的科学计算机数据处理能力
MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。
(4)出色的图形处理功能
MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。 (5)应用广泛的模块集合工具箱
MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。
(6)实用的程序接口和发布平台
新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。 (7)应用软件开发(包括用户界面)
在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5进行连接
[8] 。
(二)BP神经网络的MATLAB实现
1.生成一个BP网络
采用newff函数生成BP网络。newff函数的常用格式为
[9]:
22
net=newff(PR,[S1 S2 … SN],{TF1 TF2 … TFN},BTF,BLF,PF) 其中:
PR:为R*2维的矩阵,表示输入向量R各元素的取值区间(最小值与最大值),R为输入向量元素数目;
Si:表示第i个网络层的大小(net.layers{i}.size);
TFi:表示第i层神经元采用的传递函数,default= ‘tansig’; BTF:表示BP网络训练时所使用的训练函数,default=‘traingdx’; BLF:表示权值和阈值的BP学习函数,default=‘learngdm’; PF: 误差性能函数,default=‘mse’。 2.BP网络的训练
本文采用的训练函数是traingdx,它的功能是以学习率可变动量BP算法修正网络的权值和阈值;针对不同的问题,在训练之前有必要对网络的训练参数net.trainParam进行适当的设置。表3-1列出了网络对象的一些主要训练参数及含义。
表3-1 几个主要的神经网络训练参数及含义
训练参数 net.trainParam.epochs net.trainParam.show net.trainParam.goal net.trainParam.lr net.trainParam.time net.trainParam.mc net.trainParam.min_grad 3.BP神经网络的仿真
本实验利用sim函数对训练后的网络进行仿真。sim函数的常用格式如下: [Y,Pf,Af,E,perf]=sim(net,P,Pi,Ai,T)
在sim函数的调用形式中,输入net为神经网络对象,P为网络输入,Pi为输入延迟的条件,Ai为层延迟的条件,T为目标矢量。在函数返回值中,Y为网络输出向量,Pf为最终网络输入层延迟条件,Af最终网络层延迟条件,E为网络误差向量,perf为网络的误差性能。该函数中的P、T、Pi、Ai、Y、E、Pf和Af等参量可以是单元数组或矩阵,Pi、Ai、Pf和Af为可选参数,仅当输入向量或网络层有延迟时选用;T为可选参数,仅当网络层有目标向量时选用。
4.BP网络的预处理和后处理函数 (1)permnmx
参数含义 训练的最大步长 显示的间隔次数 误差性能目标值 学习率 训练的最长时间 动量因子 最小梯度值 默认值 100 25 0 0.0100 Inf 0.900 1.0e—006 23
Permnmx是数据预处理函数,归一化输入向量和目标向量,使其取值范围为[-1,1]。常用格式如下:
[PN,minp,maxp]=permnmx(P)
在函数返回值中PN为R×Q归一化输入向量矩阵,minp为R×1的列向量矩阵,表示输入向量P的各列向量的最小值,maxp为R×1的列向量矩阵,表示表示输入向量P的各列向量的最大值;
(2)postmnmx
postmnmx对训练样本集的数据进行后处理,使经permnmx预处理的归一化数据重新转换为非归一化数据。
[P]=postmnmx(PN,minp,maxp)
返回值P为R×Q输入(列)向量矩阵,PN、minp、maxp参见函数permnmx。
(三)预测实验
1.移动窗口原理
石油期货价格的变化是一个时间序列的动态问题,某一天石油期货价格的变化是前一段时间影响石油期货行情的因素的总体现,而不仅仅是前一天股市变化的结果。因此,在预测时必须把前一段时间的石油期货价格也作为神经网络的输入。为实现这一点,我们采用了移动窗口模拟法。假定有时间序列x={x︱x?R,i=1,2,?,L},现在希望通过序列的前
iiN个时刻的值,预测出后M个时刻的值。这里可以采用序列的前N个时刻的数据为滑动窗,并将其映射为M个值。这M个值代表在该窗之后的M个时刻上的预测值。如表3-2所示,列出了数据的一种划分方法。该表把数据分为K个长度为M+N的、有一定重叠的数据段,每一个数据段可以看做一个样本,这样就可得到K=L-(N+M)+1个样本。这样一来,就可以将每个样本的前N个值作为BP网络的输入,后M个值作为目标输出。通过学习,实现从R到输出空间R的映射,从而达到时间序列预测的目的。
表3-2 数据的划分方法
学习期 x1,x2,???,xNNN预测期 xN?1,xN?2,???,xN?M x2,x3,???,xN?1xN?2,xN?3,???,xN?M?1?? ?? xK,xK?1,???,xN?K?1 xN?K,xN?K?1,???,xN?M?K?1
24
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库人工神经网络在时间序列预测中的应用研究论文(5[1].22)(5)在线全文阅读。
相关推荐: