神经网络算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(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 个神经元,
也就是说,该 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)是从微观结构与 功能上对人脑神经系统进行模拟而建立起来的数 学模型,它具有模拟人脑思维的能力,其特点主 要是具有非线性特性、学习能力和自适应性等, 是模拟人类智能的一种重要方法。神经网络是由 神经元互联而成的,能接收并处理信息,而这种 信息处理主要是由神经元之间的相互作用,即通 过神经元之间的连接权值来处理并实现的。神经 网络在人工智能、自动控制、计算机科学、信息 处理和模式识别等领域得到了非常成功地应用。
神经网络传递函数 名称 二值函数 线性函数 分段线性函数 非对称 Sigmoid 函数 非对称 Sigmoid 函数 传递函数表达式
1 f ( x) 0 x0 x0
f ( x) ax
0 f ( x ) cx 1 x0 0 x xc x xc
f ( x)
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 .
神经网络训练函数 训练函数的意义 梯度下降法 动量反传的梯度下降法 动态自适应学习率(lr)的梯度下降法 带动量动态自适应学习率(lr)的梯度下降法 弹性梯度下降法 量化共轭梯度法 Levenberg_Marquardt 法 Fletcgera-Reeves 共轭梯度法 Polak-Ribiere 共轭梯度法 Powell-Beale 共轭梯度法 Matlab 中的函数 traingd traingdm traingda traingdx trainrp traincg trainlm traingf traingp traingb
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 学习速率
2.BP神经网络学习算法及流程
以三层BP神经网络为例,它的训练过程包括以下几个步骤:
步骤 1: 网络初始化。 根据输入 X ( x1 , x2 , , xn ) 和期望输出 D (d1 , d2 , , dl ) 来确定网络输入层、隐含层和输出层神经元(节点)个数,初始 化各层神经元之间的连接权值 vij , w jk ,初始化隐含层阈值 a ,输出 层阈值 b ,给定学习速率和神经元传递函数. 步骤 2:隐含层输出计算。根据输入向量 X ,输入层和隐含层间连 接权值 vij 以及隐含层阈值 a ,计算隐含层输出.
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 神经网络。
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
图2 训练后BP神经网络仿真图
例 2 货运量预测问题 请根据中国统计年鉴 1990-2011 年的 各项数据,以国民生产总值、能源生产总值、进出口贸易额、 社会消费品零售总额以及固定资产投资总额等 5 个指标作为 主要因素,并利用 BP 神经网络预测货运总量。
1990-2011 年的货运总量及主要因素部分数据
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
y j f ( wij xi a j )
i 1 n
其中,y j 表示神经元 j 的输出;xi 表示神经元 i 的输入; wij 表示神经元 i 与神经元 j 之间的连接权值; a j 表示神 经元 j 的阈值;f () 是输入到输出传递函数 (也称激活 函数).
下表给出了一些常用的传递函数。除线性传递 函数外,其它的均是非线性的,因此,神经网络特 别适合于解决非线性问题。
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” ;
(2)train——BP 神经网络训练函数 函数功能:用训练函数训练 BP 神经网络。 函数形式:[net,tr]=train(NET,P,T) NET:待训练网络,即 newff 所创建的初始网络; P:输入数据矩阵; T:期望输出数据矩阵; net:训练好的网络; tr:训练过程记录。 另外, 在对 BP 神经网络训练时, 需要设置某些训练参数, 见下表.
一、人工神经元数学模型
生物神经元,也称神经细胞,它是由细胞体、 树突、轴突和突触等生物组织构成的,并通过细胞 膜电位来实现生物神经元的兴奋与抑制、学习与联 想等基本功能,因此,它是构成人脑神经系统的基 本功能单元。其结构如下图所示。
根据生物神经元的结构与基本功能,可以将其 简化为下图的形式, 并建立神经网络模型的基础—— 人工神经元数学模型:
net=newff(PR, [S1,S2,…,SN],{ TF1,TF2,…,TFN}, BTF, BLF, PF)
BTF:训练函数,用于网络权值和阈值的调整,默认基于 Levenberg_Marquardt 共轭梯度法的训练函数 trainlm。其它参 数见后面表格。 BLF:网络的学习函数,包含 BP 学习规则 learngd;带动 量项的 BP 学习规则 learngdm。默认为“learngdm” ; PF:网络的性能分析函数,包括均值绝对误差性能分析函 数 mae;均方性能分析函数 mse。默认为“mse” 。 一般在使用过程中设置前面 4 个参数,后面 2 个参数采用 系统默认参数。
网络经过177次训练后,虽然网络的性能还没有达到0,但是 输出的均方误差已经很小了,MSE=2.95307e-006,误差曲线如 图1所示。为更直观地理解网络输出与目标向量之间的关系,见 图2所示。 >> plot(P,T,'-',P,Y,'o')
To Matlab exp12_4_1.m
图1 BP神经网络训练误差曲线图
yi f ( vij xi a j ) f ( vij xi )
j 1 j 0 n n
i 1, 2,
,m
式中, m 为隐含层节点数;vi 0 1, x0 a j ; f () 为隐含层传递函数。 这里我们采用传递函数为
f ( x) 1 . 1 e x
源自文库
步骤 3: 输出层输出计算。 根据隐含层输出 Y , 连接权值 w jk 和阈值 b ,计算 BP 神经网络的实际输出 O .