当前位置:文档之家› 神经网络算法

神经网络算法


(2)train——BP 神经网络训练函数 函数功能:用训练函数训练 BP 神经网络。 函数形式:[net,tr]=train(NET,P,T) NET:待训练网络,即 newff 所创建的初始网络; P:输入数据矩阵; T:期望输出数据矩阵; net:训练好的网络; tr:训练过程记录。 另外, 在对 BP 神经网络训练时, 需要设置某些训练参数, 见下表.
1.BP神经网络结构:
BP神经网络的拓扑结构如图所示。
其中, xi (i 1, , n) 是神经网络的(实际)输入, y j ( j 1 , , m) 是 隐含层的输出,即为输出层的输入, Ok (k 1 , , l ) 网络的(实 际)输出, a , b 分别为隐含层和输出层神经元(节点)的阈 值, vij , wjk 分别为输入层到隐含层和隐含层到输出层的权 值。也就是说,图中所表示的 BP 神经网络,它的输入层神 经元(节点)个数为 n ,隐含层神经元(节点)个数为 m , 输出层神经元(节点)个数为 l ,这种结构称为 n m l 结构的 三层 BP 神经网络。
y j f ( wij xi a j )
i 1 n
其中,y j 表示神经元 j 的输出;xi 表示神经元 i 的输入; wij 表示神经元 i 与神经元 j 之间的连接权值; a j 表示神 经元 j 的阈值;f () 是输入到输出传递函数 (也称激活 函数).
下表给出了一些常用的传递函数。除线性传递 函数外,其它的均是非线性的,因此,神经网络特 别适合于解决非线性问题。
一、人工神经元数学模型
生物神经元,也称神经细胞,它是由细胞体、 树突、轴突和突触等生物组织构成的,并通过细胞 膜电位来实现生物神经元的兴奋与抑制、学习与联 想等基本功能,因此,它是构成人脑神经系统的基 本功能单元。其结构如下图所示。
根据生物神经元的结构与基本功能,可以将其 简化为下图的形式, 并建立神经网络模型的基础—— 人工神经元数学模型:
神经网络训练函数 训练函数的意义 梯度下降法 动量反传的梯度下降法 动态自适应学习率(lr)的梯度下降法 带动量动态自适应学习率(lr)的梯度下降法 弹性梯度下降法 量化共轭梯度法 Levenberg_Marquardt 法 Fletcgera-Reeves 共轭梯度法 Polak-Ribiere 共轭梯度法 Powell-Beale 共轭梯度法 Matlab 中的函数 traingd traingdm traingda traingdx trainrp traincg trainlm traingf traingp traingb
Ok f ( w jk x j bk ) f ( w jk x j )
j 1 j 0 m m
k 1, 2, , l
步骤 4:误差计算。根据网络实际输出 与期望输出 ,计 算网络总体误差.
步骤 5:权值更新。根据网络总体误差 E ,按照以下公式更 新网络连接权值 vij , w jk .
f ( x)
1 1 e x
1 e x 1 e x
1, x 0 1, x 0 1、阶跃函数:f ( x) ,或符号函数f ( x) 0, x 0 1, x 0 e x e x 2、双曲正切函数:f ( x) tanh( x) x x e e x2 ,x 0 3、sigmoid函数(S型):f ( x) 1 x 2 0, x 0 1 n 4、高斯函数:f ( x) exp 2 ( x j x ji )2 2 i i 1
网络经过177次训练后,虽然网络的性能还没有达到0,但是 输出的均方误差已经很小了,MSE=2.95307e-006,误差曲线如 图1所示。为更直观地理解网络输出与目标向量之间的关系,见 图2所示。 >> plot(P,T,'-',P,Y,'o')
To Matlab exp12_4_1.m
图1 BP神经网络训练误差曲线图
net=newff(PR, [S1,S2,…,SN],{ TF1,TF2,…,TFN:训练函数,用于网络权值和阈值的调整,默认基于 Levenberg_Marquardt 共轭梯度法的训练函数 trainlm。其它参 数见后面表格。 BLF:网络的学习函数,包含 BP 学习规则 learngd;带动 量项的 BP 学习规则 learngdm。默认为“learngdm” ; PF:网络的性能分析函数,包括均值绝对误差性能分析函 数 mae;均方性能分析函数 mse。默认为“mse” 。 一般在使用过程中设置前面 4 个参数,后面 2 个参数采用 系统默认参数。
BP 神经网络训练函数 训练参数名称及默认值 属 性 net.trainParam.cpochs=100 最大训练次数, 人工设定时不能超过 100 net.trainParam.goal=0 训练目标 net.trainParam.show=25 两次显示之间的训练次数(无显示时 取 NAN) net.trainParam.time=inf 最大训练时间(秒) net.trainParam.max_fail=5 确认失败的最大次数 net.trainParam.min_grad=1e-6 最小性能梯度 net.trainParam.lr=0.2 学习速率
vij vij vij
l k 1
wjk wjk wjk
vij ( ko w jk ) y j (1 y j ) xi
wjk ko y j
其中 ko (dk ok )ok (1 ok ) , 式中 为学习速率。
步骤6: 判断算法迭代是否结束 (可用网络总误差是否达到 精度要求等方式来判断) ,若没有结束,返回步骤2.
年份 货运总量 (万吨) 国民生产 总值(亿 元) 能源生产 进出口贸 总值(万吨) 易额(亿元) 社会消费 品零售总 额 固定资产 投资总额
1990 970602 1991 985793 1993 1115902
18718.3 21826.2 35260
图2 训练后BP神经网络仿真图
例 2 货运量预测问题 请根据中国统计年鉴 1990-2011 年的 各项数据,以国民生产总值、能源生产总值、进出口贸易额、 社会消费品零售总额以及固定资产投资总额等 5 个指标作为 主要因素,并利用 BP 神经网络预测货运总量。
1990-2011 年的货运总量及主要因素部分数据
神经网络传递函数 名称 二值函数 线性函数 分段线性函数 非对称 Sigmoid 函数 非对称 Sigmoid 函数 传递函数表达式
1 f ( x) 0 x0 x0
f ( x) ax
0 f ( x ) cx 1 x0 0 x xc x xc
f ( x)
也就是说,该 BP 神经网络为 1-5-1 结构的神经网络. {'tansig','purelin'} 表示网络隐含层的传递函数为 tansig, 输出层的传递函数为 purelin. 由 于没有特别设定训练函数,因此训练函数取默认值 trainlm. 其次,设置训练参数并对网络进行训练。代码为: >>net.trainParam.epochs=200; >>net.trainParam.goal=0; >>net.trainParam.show=50; >>net=train(net,P,T); %最大训练次数 %训练目标 %两次显示之间的训练次数 %网络训练函数, train 中的 net 为创建的初始网络 最后,对训练好的训练进行仿真,得到网络输出结果 Y,并作图. 代码为: >> Y=sim(net,P);
数学建模与数学实验
神经网络
目的
学习神经网络的基本原理与方法。
内容
1、人工神经元数学模型 2、BP神经网络 3、BP神经网络Matlab工具箱函数 4、BP神经网络应用
神经网络(Neural Networks)是从微观结构与 功能上对人脑神经系统进行模拟而建立起来的数 学模型,它具有模拟人脑思维的能力,其特点主 要是具有非线性特性、学习能力和自适应性等, 是模拟人类智能的一种重要方法。神经网络是由 神经元互联而成的,能接收并处理信息,而这种 信息处理主要是由神经元之间的相互作用,即通 过神经元之间的连接权值来处理并实现的。神经 网络在人工智能、自动控制、计算机科学、信息 处理和模式识别等领域得到了非常成功地应用。
BP神经网络的流程图:
三、BP神经网络Matlab工具箱函数
主要介绍 BP 神经网络用到 newff、train 和 sim 等 3 个主要函 数,各函数解释如下: (1)newff——BP 神经网络参数设置函数 函数功能:构建一个 BP 神经网络. 函数形式: NET=newff(PR,[S1,S2,…,SN],{TF1,TF2,…,TFN},BTF,BLF,PF) PR:为样本数据组成的矩阵,由其中最大值和最小值组成的 R× 2 维的矩阵; Si:第 i 层的节点数,共计 N 层; TFi:第 i 层节点的传递函数,包括线性传递函数 purelin;正 切 S 型传递函数 tansig; 对数 S 型传递函数 logsig。 默认为 “tansig” ;
(3)sim——BP 神经网络预测/仿真函数 函数功能:用训练好的 BP 神经网络预测/仿真函数输出. 函数形式:Y=sim(net,x) net:训练好的 BP 神经网络; x:输入数据; Y:网络预测/仿真数据,即网络预测输出.
例 1 BP 神经网络的一个重要功能就是非线性映射, 这一功能非 常适合于函数逼近等,简单来讲就是找出两组数据之间的关系。 假设已知输入向量 P 和目标向量 T,建立一个 BP 网络,找出 P 和 T 之间的关系。 解:假设输入向量 P、目标向量 T 分别为: >>P= -1:0.1:1; >>T=[-0.96 -0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 -0.1647 0.0988 0.3072 0.396 0.3449 0.1816 -0.0312 -0.2183 -0.3201]; 首先,利用 newff 创建一个 BP 神经网络,代码为: >>net=newff([-1,1],[5,1],{'tansig','purelin'}); 其中, [-1,1]表示输入向量 P 的最小值和最大值, 可以用 minmax(P) 代替。 [5,1]表示网络的隐含层有 5 个神经元, 输出层 1 个神经元,
相关主题