第3章 前馈神经网络 (3.3 Matlab 实现)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
o 1,2,q
yio (k ) whohoh (k ) bo
yoo (k ) f( yio (k ))
h 1
o 1,2,q
3.3.2 BP网络的标准学习算法
Baidu Nhomakorabea
第四步,利用网络期望输出和实际输出, 计算误差函数对输出层的各神经元的偏 o 导数 。 (k )
e e yio who yio who
3.3 BP神经网络模型与学习算法
李守巨 大连理工大学 工程力学系

概述

Rumelhart,McClelland于1985年提出了BP网络的误差反 向后传BP(Back Propagation)学习算法
David Rumelhart
J. McClelland

BP算法基本原理

利用输出后的误差来估计输出层的直接前导层的误差,再用这个 误差估计更前一层的误差,如此一层一层的反传下去,就获得了 所有其他各层的误差估计。
N 1 ho
who (k )
w o (k )hoh (k )
N ho
3.3.2 BP网络的标准学习算法

第七步,利用隐含层各神经元的h (k ) 和输入 层各神经元的输入修正连接权。
e e hih (k ) wih (k ) h (k ) xi (k ) wih hih (k ) wih w
p 1 q ( ((d o (k ) f( who hoh ( k ) bo ) 2 )) hoh (k ) 2 o1 h 1 hoh (k ) hih (k )
(d o (k ) yoo (k )) f ( yio (k )) who
o 1
q
hoh (k ) hih (k )
3.3.2 BP网络的标准学习算法
输入层与中间层的连接权值: 隐含层与输出层的连接权值: 隐含层各神经元的阈值: 输出层各神经元的阈值:
wih who
bh bo
样本数据个数:
激活函数: 误差函数:
k 1, 2, m
f()
1 q e (d o (k ) yoo (k ))2 2 o1
x (k ) x1(k ), x2 (k ),, xn (k )
3.3.2 BP网络的标准学习算法

第三步,计算隐含层各神经元的输入和 输出
hih (k ) wih xi (k ) bh
n
h 1, 2,, p
hoh (k ) f(hih (k ))
p
i 1
h 1,2,, p

x x1, x2 ,, xn
hi hi1 , hi2 , , hi p ho ho1 , ho2 , , ho p
yo yo1 , yo2 , , yoq
yi yi1 , yi2 , , yiq
d o d1 , d 2 , , d q
3.3.2 BP网络的标准学习算法

BP算法直观解释
情况一直观表达
e
当误差对权值的偏 导数大于零时,权值 调整量为负,实际输 出大于期望输出, 权值向减少方向调整, 使得实际输出与期望 输出的差减少。

who
e >0,此时Δwho<0 who
3.3.2 BP网络的标准学习算法

BP算法直解释
i 1 n
wih
xi (k )
3.3.2 BP网络的标准学习算法
1 q ( ( d o ( k ) yoo (k )) 2 ) e hoh (k ) 2 o1 hih (k ) hoh ( k ) hih ( k ) 1 q ( (d o (k ) f( yio (k ))) 2 ) hoh (k ) 2 o1 hoh (k ) hih (k )

神经网络在外界输入样本的刺激下不断改变网络的连 接权值,以使网络的输出不断地接近期望的输出。 对各连接权值的动态调整


学习的本质:

学习规则:

权值调整规则,即在学习过程中网络中各神经元的连 接权变化所依据的一定的调整规则。
3.3.2 BP网络的标准学习算法-算法思想
学习的类型:有导师学习 核心思想:


判断是否转入反向传播阶段:

误差反传

误差以某种形式在各层表示----修正各层单元的权值

网络输出的误差减少到可接受的程度 进行到预先设定的学习次数为止
3.3.2 BP网络的标准学习算法

网络结构

输入层有n个神经元,隐含层有p个神经元, 输出层有q个神经元

变量定义
输入向量; 隐含层输入向量; 隐含层输出向量; 输出层输入向量; 输出层输出向量; 期望输出向量;
月份
销量
7
1873
8
1478
9
1900
10
1500
11
2046
12
1556
3.3.3 BP神经网络学习算法的MATLAB实现


P=[0.5152 0.8173 1.0000 0.7308 0.1390 0.1087

%以每三个月的销售量经归一化处理后作为输入

T=[0.7308 0.1390 0.1087 0.3520 0.0000 0.3761];
情况二直观表达
当误差对权值的偏导数
e
小于零时,权值调整量 为正,实际输出少于期 望输出,权值向增大方向 调整,使得实际输出与期 望输出的差减少。
who
e <0, who
此时Δwho>0
3.3.3 BP神经网络学习算法的MATLAB实现

MATLAB中BP神经网络的重要函数和基本 功能
函数名 newff() tansig() logsig() traingd() 功 能 生成一个前馈BP网络 双曲正切S型(Tan-Sigmoid)传输函数 对数S型(Log-Sigmoid)传输函数 梯度下降BP训练函数

logsig()

3.3.3 BP神经网络学习算法的MATLAB实现

例2-3,下表为某药品的销售情况,现构建一个如下的三层BP神 经网络对药品的销售进行预测:输入层有三个结点,隐含层结点 数为5,隐含层的激活函数为tansig;输出层结点数为1个,输出 层的激活函数为logsig,并利用此网络对药品的销售量进行预测, 预测方法采用滚动预测方式,即用前三个月的销售量来预测第四 个月的销售量,如用1、2、3月的销售量为输入预测第4个月的销 售量,用2、3、4月的销售量为输入预测第5个月的销售量.如此反 复直至满足预测精度要求为止。 月份 销量 1 2056 2 2395 3 2600 4 2298 5 1634 6 1600

net=newff([0 1;0 1;0 1],[5,1],{'tansig','logsig'},'traingd'); net.trainParam.epochs=15000; net.trainParam.goal=0.01;

%以第四个月的销售量归一化处理后作为目标向量
0.8173 1.0000 0.7308 0.1390 0.1087 0.3520
1.0000 ; 0.7308; 0.1390; 0.1087; 0.3520; 0.0000;]';
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有5个神经%元, 输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,训 练函数为梯度下降函数,即2.3.2节中所描述的标准学习算法
3.3.1 BP神经网络模型
输出的导数
1 1 f '(net ) y (1 y ) -net net 2 1 e (1 e )

根据S型激活函数的图形可知,对神经网络进行训练,应该将net的值尽量控 制在收敛比较快的范围内
3.3.2 BP网络的标准学习算法

学习的过程:
3.3.2 BP网络的标准学习算法

第五步,利用隐含层到输出层的连接权 值、输出层的 o (k ) 和隐含层的输出计算误 差函数对隐含层各神经元的偏导数h (k ) 。
e e yio o (k )hoh (k ) who yio who
e e hih (k ) wih hih (k ) wih hih (k ) wih ( wih xi (k ) bh )


将输出误差以某种形式通过隐层向输入层逐层反传
将误差分摊给各层的所有 单元---各层单元的误 差信号

修正各单元权 值
学习的过程:

信号的正向传播
误差的反向传播
3.3.2 BP网络的标准学习算法-学习过程

正向传播:

输入样本---输入层---各隐层---输出层 若输出层的实际输出与期望的输出(教师信号)不符
3.3.2 BP网络的标准学习算法

第一步,网络初始化
给各连接权值分别赋一个区间(-1,1)内
的随机数,设定误差函数e,给定计算精度 值 和最大学习次数M。 第二步,随机选取第k个输入样本及对应期
望输出
d o ( k ) d1 ( k ), d 2 ( k ),, d q ( k )
N 1 ih
w h (k ) xi (k )
N ih
3.3.2 BP网络的标准学习算法

第八步,计算全局误差
1 2 E (do (k ) yo (k )) 2m k 1 o1

m
q
第九步,判断网络误差是否满足要求。当误差 达到预设精度或学习次数大于设定的最大次数, 则结束算法。否则,选取下一个学习样本及对 应的期望输出,返回到第三步,进入下一轮学 习。
3.3.3 BP神经网络学习算法的MATLAB实现

MATLAB中BP神经网络的重要函数和基本功能 newff()
功能
建立一个前向BP网络 格式 net = newff(PR,[S1 S2...SN1],{TF1 TF2...TFN1},BTF,BLF,PF) 说明 net为创建的新BP神经网络;PR为网络输入 取向量取值范围的矩阵;[S1 S2…SNl]表示网络隐 含层和输出层神经元的个数;{TFl TF2…TFN1}表 示网络隐含层和输出层的传输函数,默认为 ‘tansig’;BTF表示网络的训练函数,默认为 ‘trainlm’;BLF表示网络的权值学习函数,默认 为‘learngdm’;PF表示性能数,默认为‘mse’。
yio (k ) who ( whohoh (k ) bo )
h p
who
hoh (k )
1 q ( (do (k ) yoo (k )))2 e 2 o1 (d o (k ) yoo (k )) yoo (k ) yio yio (d o (k ) yoo (k ))f ( yio (k )) o (k )
3.3.1 BP神经网络模型

三层BP网络
3.3.1 BP神经网络模型

激活函数
必须处处可导
一般都使用S型函数

使用S型激活函数时BP网络输入与输出关 系
输入 输出
net x1w1 x2 w2 ... xn wn
1 y f ( net ) 1 e net
3.3.3 BP神经网络学习算法的MATLAB实现

MATLAB中BP神经网络的重要函数和基本功能 tansig()

功能 正切sigmoid激活函数 格式 a = tansig(n) 说明 双曲正切Sigmoid函数把神经元的输入范围从(-∞,+∞) 映射到(-1,1)。它是可导函数,适用于BP训练的神经元。 功能 对数Sigmoid激活函数 格式 a = logsig(N) 说明对数Sigmoid函数把神经元的输入范围从(-∞,+∞)映射 到(0,1)。它是可导函数,适用于BP训练的神经元。
( o (k )who ) f (hih (k )) h (k )
o 1
q
3.3.2 BP网络的标准学习算法

第六步,利用输出层各神经元的 o (k ) 和隐含 层各神经元的输出来修正连接权值 。
e who (k ) o (k )hoh (k ) who w
相关文档
最新文档