BP(Back Propagation)神经网络及Matlab矩阵实现
1、简介
人工神经网络是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在工程与学术界也常直接简称为“神经网络”或类神经网络。神经网络是一种运算模型,由大量的节点(或称“神经元”,或者“单元”)和之间相互联接构成。人工神经网络通常可以分为两类:依学习策略分类的网络(包含监督式学习网络(Supervised Learning Network)、无监督式学习网络(Unsupervised Learning Network)、混合式学习网络(Hybrid Learning Network)、联想式学习网络(Associate Learning Network)以及最适化学习网络(Optimization Application Network));依网络架构分类的网络(前向式架构(Feed Forward Network)、回馈式架构(Recurrent Network)以及强化式架构(Reinforcement Network))。
本文主要是对神经网络中的前向式网络进行Matlab实现(尽量使用矩阵操作)。
BP神经网络由以下的优点:
(1)、经证明可以实现任意复杂的非线性函数。
(2)、具有较强的学习能力以及一定的推广、概括能力。
(3)、实现简单,已应用于许多大型系统中。
在拥有以上优点的同时,BP神经网络仍有其缺点:
(1)、收敛速度较慢。
(2)、易于陷入局部极小,易出现过拟合现象。
(3)、网络结构的选择尚无完整的理论指导,一般只能由经验决定。
2、BP神经网络的相关矩阵推导
2.1、多层网络
假设网络具有M层(包含输入层),并使用0到M-1标记各层,则可以用下式来表示本网络:
![]()
其中
表示由第m层神经元输出组成的矩阵,
为第m及m+1层神经元之间的连接矩阵,
是由第m+1层中神经元所对应偏移值组成的矩阵,
是由第m+1层中各神经元对应的激活函数组成的矩阵,
表示第m层神经元的数目。由此可以看出,网络第零层为特征输入层(由P表示),第M层为最终输出层。
![]()
![]()
2.2、性能指标
网络训练集由下式表示:
![]()
网络实际输出与期望输出的均方差可以表示为:
![]()
均方差的向量形式为:
![]()
单样本下,均方差的向量形式为:
![]()
网络的更新(使用最速下降法)可近似表示为:

![]()
其中α(alpha)表示网络的学习率。
2.3、规则链
![]()
样例:
![]()
![]()
将规则链应用到梯度计算可得:
![]()
2.4、梯度计算
第m层中第i个神经元的输出(未经过激励函数)为:
![]()
![]()
这里定义敏感度:
![]()
梯度:
![]()
2.5、最速下降操作
![]()
矩阵形式表示为:
![]()

2.6、雅克比矩阵




![]()

2.7、网络的反向传播(层间敏感度矩阵的推导)

![]()
首先计算网络末层的敏感度矩阵
,然后可以反向计算各个前层的敏感度矩阵,直至网络第一层的敏感度矩阵(这里应该注意到:网络其实还包括第零层)。
![]()
2.8、敏感度矩阵的初始化

![]()
![]()
![]()
2.9、网络训练算法简述
前向传播:
![]()
![]()
![]()
反向传播:
![]()
![]()
权值更新:
![]()
3、BP神经网络的Matlab矩阵实现
以下给出了一个按照本文第二部分所示公式编写的Matlab程序
程序的输出图形如下:

为了使运行的结果更好,这里可以更改程序中的相关参数。由于网络的初始权重及阈值是随机的,因此得到的每一次程序结果图或多或少都会有一点不同。
4、参考内容
(1)、http://zh.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C
(2)、http://blog.donews.com/elite/archive/2007/11/23/1230721.aspx
(3)、http://www.hudong.com/wiki/BP%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C
本文详细介绍了BP(Back Propagation)神经网络的矩阵推导过程,并提供了具体的Matlab实现。从多层网络的结构到性能指标,再到梯度计算、最速下降法和敏感度矩阵的计算,文章覆盖了BP网络的关键概念。最后,通过一个逼近函数的实例展示了Matlab程序的运行过程,探讨了如何调整参数以优化结果。
1万+

被折叠的 条评论
为什么被折叠?



