三.BP神经网络

Posted pythonlearing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三.BP神经网络相关的知识,希望对你有一定的参考价值。

  BP神经网络是包含多个隐含层的网络,具备处理线性不可分问题的能力。以往主要是没有适合多层神经网络的学习算法,,所以神经网络的研究一直处于低迷期。

  20世纪80年代中期,Rumelhart,McClelland等成立了Parallel Distributed Procession(PDP)小组,提出了著名的误差反向传播算法(Error Back Propagtion,BP)。

  BP和径向基网络属于多层前向神经网络。广泛应用于分类识别、逼近、回归、压缩等领域。

  BP神经网络(强调是用BP算法)一般是多层的,其概念和多层感知器(强调多层)差不多是等价的,隐层可以是一层或多层。BP神经网络具有如下特点:

(1)网络由多层构成,层与层之间全连接,同一层之间的神经元无连接。

(2)BP网络的传递函数必须可微。所以感知器的二值函数不能用,一般采用Sigmoid函数,可分为Log-Sigmoid和Tan-Sigmoid函数。

                        技术分享图片

     其中x的范围包含整个实数域,函数值再0~1之间。具体应用时可以增加参数,以控制曲线的位置和形状。

  sigmoid函数可以将输入从负无穷到正无穷的范围映射到(-1,1)和(0,1)之间,在原点处具有非线性放大功能。BP的典型设计是隐含层采用Sigmoid函数作为传递函数,输出层采用线性函数作为传递函数。(一定不能全部层都采用线性的,否则就会和线性神经网络一样了)

(3)采用误差反向传播算法(Back-Propagation)进行学习。再BP网络中,数据从输入层经隐含层逐层向后传播,训练网络权值时,则沿着减少误差的方向,从输出层经过中间各层逐层向前修正网络连接权值。

      (与反馈神经网络不同,BP是误差信号反向传播,网络根据误差从后向前逐层进行修正)

(1)网络由多层构成,层与层之间全连接,同一层之间的神经元无连接。

  (2)BP网络的传递函数必须可微。所以感知器的二值函数不能用,一般采用Sigmoid函数,可分为Log-Sigmoid和Tan-Sigmoid函数。

                        技术分享图片

     其中x的范围包含整个实数域,函数值再0~1之间。具体应用时可以增加参数,以控制曲线的位置和形状。

  sigmoid函数可以将输入从负无穷到正无穷的范围映射到(-1,1)和(0,1)之间,具有非线性放大功能。

  (3)采用误差反向传播算法(Back-Propagation)进行学习。再BP网络中,数据从输入层经隐含层逐层向后传播,训练网络权值时,则沿着减少误差的方向,从输出层经过中间各层逐层向前修正网络连接权值。

      (与反馈神经网络不同,BP是误差信号反向传播,网络根据误差从后向前逐层进行修正)

(1)网络由多层构成,层与层之间全连接,同一层之间的神经元无连接。

  (2)BP网络的传递函数必须可微。所以感知器的二值函数不能用,一般采用Sigmoid函数,可分为Log-Sigmoid和Tan-Sigmoid函数。

                        技术分享图片

     其中x的范围包含整个实数域,函数值再0~1之间。具体应用时可以增加参数,以控制曲线的位置和形状。

  sigmoid函数可以将输入从负无穷到正无穷的范围映射到(-1,1)和(0,1)之间,具有非线性放大功能。

  (3)采用误差反向传播算法(Back-Propagation)进行学习。再BP网络中,数据从输入层经隐含层逐层向后传播,训练网络权值时,则沿着减少误差的方向,从输出层经过中间各层逐层向前修正网络连接权值。

      (与反馈神经网络不同,BP是误差信号反向传播,网络根据误差从后向前逐层进行修正)

BP算法的基本思想是,学习过程由信号的正向传播和误差的反向传播俩个过程组成,输入从输入层输入,经隐层处理以后,传向输出层。如果输出层的实际输出和期望输出不符合,就进入误差的反向传播阶段。误差反向传播是将输出误差以某种形式通过隐层向输入层反向传播,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,这个误差信号就作为修正个单元权值的依据。直到输出的误差满足一定条件或者迭代次数达到一定次数。

技术分享图片

    使用的传递函数sigmoid可微的特性使他可以使用梯度下降法。所以,在隐层函数中使用sigmoid函数作为传递函数,在输出层采用线性函数作为传递函数。

输入向量、隐层输出向量、最终输出向量、期望输出向量:

X=(x0,x1,x2,x3……xn),其中图中x0是为隐层神经元引入阈值设置的;x0=1

Y=(y0,y1,y2,y3……ym),其中图中y0是为输出神经元引入阈值设置的;y0=1

O=(o1,o2,o3……ol)

D=(d1,d2,d3……dl)

输出层的输入是隐层的输出,隐层的输入是输入层的输出,计算方法和单层感知器的计算方法一样。

 

BP网络的学习算法

确定层数和每层的神经元个数后,还需直到权值系数才能由输入给出正确的输出。

BP网络的学习属于有监督学习,需要一组已知目标输出的学习样本集。

先使用随机值作为权值,得到网络输出之后与期望输出作对比,然后根据输出值与期望值的计算误差,再由误差根据某种准则逐层修改权值,使得误差减小。

 



以上是关于三.BP神经网络的主要内容,如果未能解决你的问题,请参考以下文章

基于GA优化的BP网络算法分析与MATLAB实现matlab优化算法三

BP神经网络

求高人解释一下这个MATLAB的BP神经网络预测算法的程序。

深层BP神经网络的训练过程

BP神经网络——Python简单实现三层神经网络(Numpy)

图像重建基于matlab BP神经网络双基地SAR成像图像重建含Matlab源码 1950期