一、神经网络模型
神经网络(Neural Networks)是从微观结构与功能上对人脑神经系统进行模拟而建立起来的数学模型,它具有模拟人脑思维的能力,其特点主要是具有非线性特性、学习能力和自适应性等,是模拟人类智能的一种重要方法。神经网络是由神经元互联而成的,能接收并处理信息,而这种信息处理主要是由神经元之间的相互作用,即通过神经元之间的连接权值来处理并实现的。神经网络在人工智能、自动控制、计算机科学、信息处理和模式识别等领域得到了非常成功地应用。
根据生物神经元的结构与基本功能,可以将其简化为下图的形式,并建立神经网络模型的基础——人工神经元数学模型:
其中,表示神经元j的输出;
表示神经元i的输入;
表示神经元与神经元之间的连接权值;
表示神经元的阈值;
是输入到输出传递函数(也称激活函数)。
sigmod是常见的激活函数,后面的实例会经常用到。
二、神经网络模型BP算法
2.1 网络结构及工作方式
除单元特性外,网络的拓扑结构也是NN的一个重要特性。从连接方式看NN主要有两种。
(i)前馈型网络
各神经元接受前一层的输入,并输出给下一层,没有反馈。结点分为两类,即输入单元和计算单元,每一计算单元可有任意个输入,但只有一个输出(它可耦合到任意多个其它结点作为其输入)。通常前馈网络可分为不同的层,第i 层的输入只与第i −1层 输出相连,输入和输出结点与外界相连,而其它中间层则称为隐层。
(ii)反馈型网络
所有结点都是计算单元,同时也可接受输入,并向外界输出。 NN 的工作过程主要分为两个阶段:第一个阶段是学习期,此时各计算单元状态不变,各连线上的权值可通过学习来修改;第二阶段是工作期,此时各连接权固定,计算单元状态变化,以达到某种稳定状态。
从作用效果看,前馈网络主要是函数映射,可用于模式识别和函数逼近。反馈网络按对能量函数的极小点的利用来分类有两种:第一类是能量函数的所有极小点都起作 用,这一类主要用作各种联想存储器;第二类只利用全局极小点,它主要用于求解最优化问题。
(iii)向后传播算法(Back-Propagation)
对于反馈型网络所说的各连线上权值的修改,主要运用了向后传播算法(Back-Propagation),这也是三层BP神经网络模型的核心部分。
我们希望对应学习样本的输出非常精确,但实际上是不可能的只能希望实际输出尽可能地接近理想输出。为清楚起见,把对应于样品s的理想输出记为 ,那么
度量了在一组给定的权下,实际输出与理想输出的差异,由此,寻找一组恰当的权的问题,自然地归结为求适当W 的值,使 E(W ) 达到极小的问题。
易知,对每一个变量 或
而言,这是一个连续可微的非线性函数,为了求得其极小点与极小值,最为方便的就是使用最速下降法。最速下降法是一种迭代算法,为求出 E(W ) 的(局部)极小,它从一个任取的初始点
出发,计算在
点的负梯度方向 -∇E (
) ,这是函数在该点下降最快的方向;只要∇E(
) ≠ 0 ,就可沿该方向移动 一小段距离,达到一个新的点 W1 = W0 −η∇E (
) ,η 是一个参数,只要η 足够小, 定能保证 E( W1) < E (
) 。不断重复这一过程,一定能达到 E 的一个(局部)极小点。 就本质而言,这就是 BP 算法的全部内容
2.2 BP神经网络的拓扑结构如图所示。
其中,是神经网络的(实际)输入,
是隐含层的输出,即为输出层的输入,
网络的(实际)输出,a,b分别为隐含层和输出层神经元(节点)的阈值,
分别为输入层到隐含层和隐含层到输出层的权值。也就是说,图中所表示的BP神经网络,它的输入层神经元(节点)个数为n,隐含层神经元(节点)个数为m,输出层神经元( 节点)个数为l,这种结构称为n-m-l结构的三层BP神经网络。
2.3 BP神经网络学习算法及流程(以三层BP神经网络为例)
三、BP神经网络算法常用工具箱函数
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”;
BTF:训练函数,用于网络权值和阈值的调整,默认基于Levenberg_Marquardt共轭梯度法的训练函数trainlm。其它参数见后面表格。
BLF:网络的学习函数,包含BP学习规则learngd;带动量项的BP学习规则learngdm。默认为“learngdm”;
PF:网络的性能分析函数,包括均值绝对误差性能分析函数mae;均方性能分析函数mse。默认为“mse”。
一般在使用过程中设置前面4个参数,后面2个参数采用系统默认参数。
示例:net=newff([-1,1],[5,1],{'tansig',