BP神经网络模型

BP神经网络

1.概念

首先从名称中可以看出,Bp神经网络可以分为两个部分,bp和神经网络。bp是 Back Propagation 的简写 ,意思是反向传播。

BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。

其主要的特点是:信号是正向传播的,而误差是反向传播的。

举一个例子,某厂商生产一种产品,投放到市场之后得到了消费者的反馈,根据消费者的反馈,厂商对产品进一步升级,优化,一直循环往复,直到实现最终目的——生产出让消费者更满意的产品。产品投放就是“信号前向传播”,消费者的反馈就是“误差反向传播”。这就是BP神经网络的核心。

2.算法流程图

img

3.神经元模型

img

每个神经元都接受来自其它神经元的输入信号,每个信号都通过一个带有权重的连接传递,神经元把这些信号加起来得到一个总输入值,然后将总输入值与神经元的阈值进行对比(模拟阈值电位),然后通过一个“激活函数”处理得到最终的输出(模拟细胞的激活),这个输出又会作为之后神经元的输入一层一层传递下去。

4.激活函数:( [公式] )

引入激活函数的目的是在模型中引入非线性。如果没有激活函数(其实相当于激励函数是f(x) = x),那么无论你的神经网络有多少层,最终都是一个线性映射,那么网络的逼近能力就相当有限,单纯的线性映射无法解决线性不可分问题。正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大

BP神经网络算法常用的激活函数:

1)Sigmoid(logistic),也称为S型生长曲线,函数在用于分类器时,效果更好。

img

img

2)Tanh函数(双曲正切函数),解决了logistic中心不为0的缺点,但依旧有梯度易消失的缺点。

img

img

3)relu函数是一个通用的激活函数,针对Sigmoid函数和tanh的缺点进行改进的,目前在大多数情况下使用

img

img

5.神经网络基础架构

BP网络由输入层、隐藏层、输出层组成。

img

输入层:信息的输入端,是读入你输入的数据的

隐藏层:信息的处理端,可以设置这个隐藏层的层数(在这里一层隐藏层,q个神经元)

输出层:信息的输出端,也就是我们要的结果

v,w分别的输入层到隐藏层,隐藏层到输出层的是权重

对于上图的只含一个隐层的神经网络模型:BP神经网络的过程主要分为两个阶段,第一阶段是信号的正向传播,从输入层经过隐含层,最后到达输出层;第二阶段是误差的反向传播,从输出层到隐含层,最后到输入层,依次调节隐含层到输出层的权重和偏置,输入层到隐含层的权重和偏置。

6.BP神经网络参数

在进行BP神经网络的设计时,应从网络的层数、每层中的神经元数、初始值以及学习速率等几个方面进行考虑。

(1)网络的层数。已经证明:三层BP神经网络可以实现多维单位立方体 到 的映射,即能够逼近任何有理函数。这实际上给了一个设计BP神经网络的基本原则。增加层数可以更进一步地降低误差,提高精度,但同时也使网络复杂化,从而增加网络权值的训练时间。而误差精度的提高实际上也可以通过增加隐含层中的神经元数目来获得,其训练结果也比增加层数更容易观察和调整。所以一般情况下,应优先考虑增加隐含层中的神经元数。

(2)隐含层的神经元数。网络训练精度的提高,可以通过采用一个隐含层而增加神经元数的方法来获得。这在结构的实现上要比增加更多的隐含层简单得多。在具体设计时,比较实际的做法是隐含层取输人层的两倍,然后适当地加上一点余量。评价一个网络设计得好坏,首先是它的精度,其次是训练时间。时间包含有两层: 一层是循环次数,二是每一次循环中计算所花的时间。

(3)初始权值的选取。由于系统是非线性的,初始值的选取对于学习是否达到局部最小、是否能够收敛以及训练时间的长短有很大关系。初始值过大过小都会影响学习速度,因此权值的初始值应选为均匀分布的小数经验值,一般取初始权值在(-1,1)之间的随机数,也可选取在[-2.4/n,2.4/n] 之间的随机数,其中n为输人特征个数。为避免每步权值的调整方向是同向的,应将初始值设为随机数。

(4)学习速率。学习速率决定每次循环训练中 所产生的权值变化量。高的学习速率可能导致系统的不稳定;但低的学习速率导致较长的训练时间,可能收敛很慢,不过能保证网络的误差值跳出误差表面的低谷而最终趋于最小误差值。在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。学习速率的选取0.01 ~0. 8。

(5)期望误差的选取。在网络的训练过程中期望误差值也应当通过对比训练后确定一个合适的值。所谓的“合适”,是相对于所需要的隐含层的结点数来确定的,因为较小的期望误差要靠增加隐含层的结点,以及训练时间来获得。一般情况下,作为对比,可以同时对两个不同期望误差的网络进行训练,最后通过综合因素的考虑来确定采用其中

7.正向传播过程

正向传播就是让信息从输入层进入网络,依次经过每一层的计算,得到最终输出层结果的过程。在上面的网络中,我们的计算过程比较直接,用每一层的数值乘以对应的权重+偏置变量(激活函数)

从输入层到隐藏层: [公式]

从隐藏层到输出层: [公式]

以y1举例。y1里的输出自然有来自b1,b2,…bq的。那么分别按照权重去乘就可以了。

[公式]

类似的我们可以求解出y2——y1

因为参数是随机的,所以第一次计算出的结果跟真实的结果会有一个非常大的误差,所以我们需要根据误差去调整参数,让参数可以更好的去拟合,直到误差达到最小值,这时就需要模型的反向传播

8.反向传播过程

基本思想就是通过计算输出层与期望值之间的误差来调整网络参数,从而使得误差变小。

计算误差公式如下:(差值的平方)

[公式]

如何调整权重的大小,才能使损失函数不断地变小呢?这里给大家介绍几种常用的方法:

  • 梯度下降法:从几何意义讲,梯度矩阵代表了函数增加最快的方向,因此,沿着与之相反的方向就可以更快找到最小值
  • sgd:在梯度下降法基础上,sgd对单个训练样本进行参数更新,加快收敛速率。
  • adam:在梯度下降法基础上,通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率,加快收敛速率
  • lbfgs:sgd,Adam等都是在一阶法(梯度下降法)的基础上进行改进,加快收敛速率。而lbfgs在二阶泰勒展开式进行局部近似平均损失的基础上进行改进的,以降低了迭代过程中的存储量,加快收敛速率。

权重反向更新:

[公式]

[公式]

[公式] 称为学习率,可以调整更新的步伐,合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。

学习率设置太小,结果收敛非常缓慢;学习率设置太大,结果在最优值附近徘徊,难以收敛,一般选取为0.01−0.8

至此,我们完成了一次神经网络的训练过程,通过不断的使用所有数据记录进行训练,从而得到一个分类模型。不断地迭代,不可能无休止的下去,总归有个终止条件。

  • 设置最大迭代次数,比如使用数据集迭代100次后停止训练
  • 计算训练集在网络上的预测准确率,达到一定门限值后停止训练

BP神经网络模型
http://example.com/2022/07/25/BP神经网络模型/
作者
Wei Xia
发布于
2022年7月25日
许可协议