武汉理工大学《通信工程应用技术综合训练与实习》报告
2.5 BP神经网络算法的主要特点
BP神经网络具有以下几个特点: 1. 能够实现非线性映射;
2. 采用梯度下降法实现快速收敛;
3. 使用学习算子调整收敛速度,学习算子也可以称为收敛因子,在不引起震荡的情况下可以适当增大; 4. 不足之处:
a) 由于是非线性优化,不可避免的存在局部极小问题; b) 隐层以及隐层节点数的选择没有理论指导,只能猜测; c) 学习算法的收敛速度慢;
d) 新加入的样本会影响到已经学习好的样本;
e) “坏”样本对总体的训练结果有比较大的影响,因此必须慎重选择训练样本。
3 MATLAB实现BP网络
3.1 MATLAB的BP神经网络及其函数介绍
MATLAB 神经网络工具箱提供了丰富的演示实例,用MATLAB 语言构造了典型的神经网络的激活函数,编写了各种网络设计与训练的子程序。网络的设计者可以根据自己的需要调用工具箱中有关BP神经网络设计的训练程序。MATLAB 神经网络工具箱提供了许多进行神经网络设计和分析的工具函数,这给用户带来了极大的方便,即使不了解算法的本质,也可以直接应用功能丰富的函数来实现自己的目的。有关这些工具函数的使用可以通过help 命令得到。
11
武汉理工大学《通信工程应用技术综合训练与实习》报告
3.2 BP神经网络中几种重要函数及其功能
(1) BP 神经网络初始化函数initff()
在设计一个BP 网络时,只要已知网络的输入网络的取值范围、各层的神经元的个数及传输函数,就可以利用初始化函数initff()对BP 神经网络网络进行初始化。函数initff()可最多对三层神经网络进行初始化即可得到每层的权值和偏值。其调用格式为
[W1,B1,W2,B2]=initff(Xr,S1,’Tf1’,S2,’Tf2’) [W1,B1,W2,B2]=initff(Xr,S1,’Tf1’,S2,’Tf2’,S3,’Tf3’)
式中,Xr 为一个向量矩阵,它决定了输入向量的最小值和最大值的取值范围;S,Si 为各层神经元的个数;Tf,Tfi 为各层的传输函数;W 和Wi 为初始化后各层权值矩阵;B 和Bi 为初始化后各层的偏值向量。另外,输出层神经元的个数S 或Si 可以用对应的向量T来代替,此时输出神经元数根据T 中的行数来设置。 (2)利用BP 算法训练前后网络函数trainbp()
BP 神经网络学习规则为调整网络的权值和偏值使网络误差的平方和为最小。这是通过在梯度下降方向上不断地调整网络的权值和偏值来达到的。该函数的调用格式为
[W1,B1,W2,B2,te,tr]=trainbp(w1,b1,’Tf1’w2,b2,’Tf2’,X,T,tp)
式中,w 和W(及wi 和Wi)分别为训练前后的权值矩阵;b 和B(及bi 和Bi)分别为训练前后的偏值向量;te 为实际训练次数;tr 为网络训练误差平方和的行向量;Tf 和Tfi为传输函数;X 为输入向量;T 为目标向量;tp=[disp_frep max_epoch err_goal lr]是训练控制参数,其作用是设定如何进行训练,其中tp
1)显示间隔次数,默认值为25; 2)显示最大循环次数,默认值为100; 3)为目标误差平方和,默认值为0.02;
(3)用快速BP 算法训练前向网络函数trainbpx( )
使用动量因子时,BP 算法可找到更好的解,而自适应学习率也可以使训练时间大
12
武汉理工大学《通信工程应用技术综合训练与实习》报告
大缩短。该函数的调用格式为
[W1,B1,W2,B2,te,tr]=trainbpx(w1,b1,’Tf1’,w2,b2,’Tf2’,X,T,tp)
式中,w 和W(及wi 和Wi)分别为训练前后的权值矩阵;b 和B(及bi 和Bi)分别为训练前后的偏值向量;te 为实际训练次数;tr 为网络训练误差平方和的行向量;Tf 和Tfi 为传输函数;X 为输入向量;T 为目标向量;tp 是训练控制参数,其作用是设定如何训练。
(4)BP网络学习规则函数learnbp( )
BP 神经网络学习规则为调整网络的权值和偏值使网络误差的平方和达到最小。这是通过在梯度下降法最陡方向上不断地调整网络的权值和偏值来达到的,计算网络输出层的误差矢量导数,然后反馈回网络,直到每个隐含层的误差导数都达到要求,这可根据函数deltatan()、deltalin()、和deltalog()计算。根据BP 准则,每一层的权值矩阵w 利用本层的误差导数矢量和输入向量来更新。该函数的调用格式为 [dW,dB]=learnbp(X,delta,lr)。式中,X 为本层的输入向量;delta 为误差导数矢量;lr 为学习速率;dW 为权值修正阵;dB 为偏值修正向量。 (5)BP 神经网络仿真函数simuff()
BP 神经网络由一系列网络层组成。每一层都从前一层得到输入数据。 Simuff()函数可仿真最多三层前向网络。其调用格式为 y=simuff(X,w,b,’Tf’,)或[y1,y2]=simuff(X,w1,b1,’Tf1’,w2,b2,’Tf2’)
式中,X 为输入向量;w,wi 为权值矩阵;b,bi 为偏值矩阵;Tf,Tfi 为传输函数;y,yi为各层的输入向量矩阵
4 程序设计及仿真结果
4.1 程序设计
(1)首先创建一个两层网络。
13
武汉理工大学《通信工程应用技术综合训练与实习》报告
先用理想的输入信号对网络进行训练,直到平方和误差足够小。接下来,用理想信号和带有噪声的信号对网络进行训练。在输入带有误差的向量时,要输入两倍重复的无误差信号,这样做的目的是为了保证网络的稳定性。 (2)对无噪声信号的训练。
使用原始标准的信号对网络进行训练,当训练时间达到1000个时间单位或者是网络平方和误差小于0.01时停止网络的训练。 (3)对含有噪声信号的训练。
用标准的数字向量和加噪声的信号向量分别训练网络,设置噪声信号平均值分别为0.1和0.2。
(4)再次对无噪声信号进行训练。
为了保证网络总是能够正确地对理想输入进行分类,我们需要再一次用无噪声的理想信号对网络进行训练 (5)对污染数字进行识别。
14
武汉理工大学《通信工程应用技术综合训练与实习》报告
4.2 仿真结果
图4.2.1 训练过程图1
15