BP 神经网络算法原理

本篇文章主要根据《神经网络与机器学习》和《人工神经网络原理》两本书,对 BP 神经网络的数学推导过程做了一个总结,为自己进入深度学习打下一个基础。

一、 人工神经网络

1.人工神经网络简介

人工神经网络(ANN)是一种旨在模仿人脑结构及其功能的由多个非常简单的处理单元彼此按某种方式相互连接而形成的计算机系统,该系统靠其状态对外部输入信息的动态响应来处理信息 。
这里写图片描述
神经元由细胞及其发出的许多突起构成。细胞体内有细胞核,突触的作用是传递信息。作为引入输入信号的若干个突起称为“树突”,而作为输出端的突起只有一个称为“轴突” 。

2.神经元M-P模型

所谓M-P模型,其实是按照生物神经元的结构和工作原理构造出来的一个抽象和简化了的模型。

对于第jj个神经元作用的加权值。
这里写图片描述

神经元的“净输入”用IjIj取+1 输出,反之为-1输出 。如果考虑输出与输入的延时作用,表达式可修正为:
这里写图片描述

3.ANN的基本要素

  • 神经元激活函数
  • 网络的学习
  • 神经元之间的连接形式

(1)常用激活函数
这里写图片描述

(2)常用学习规则

  • Hebb规则
  • 误差修正法学习算法 (如:BP算法)
  • 胜者为王(Winner-Take-All)学习规则

(3)神经元之间连接方式
<1>前缀网络
这里写图片描述

<2>反馈网络
这里写图片描述

> 注:BP 神经网络属于前缀网络

二、 BP 神经网络原理

BP(Back Propagation)神经网络的学习过程由信号的正向传播与误差的反向传播两个过程组成。正向传播时,输入样本从输入层传入,经隐层逐层处理后,传向输出层。若输出层的实际输出与期望输出不符,则转向误差的反向传播阶段。误差的反向传播是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。BP网络由输入层﹑输出层和隐层组成,N1N1为输出层,其余为隐层。BP 神经网络的结构如下:
这里写图片描述

这里介绍三层神经网络的推导(一个输入层、一个隐层和一个输出层)

BP 神经网络反向传播算法的神经元示意图图一

这里写图片描述

上图描绘了神经元jj

1.前向传播过程推导

图一中,在神经元jj 的输入)是:
这里写图片描述

ϕjϕj是:
这里写图片描述

2.误差反向传播过程推导

在图一中,yj(n)yj(n)的输出所产生的误差信号定义为:

这里写图片描述
其中,dj(n)dj(n)个元素。

为了使函数连续可导,这里最小化均方根差,定义神经元jj瞬时误差能量为:
这里写图片描述

将所有输出层神经元的误差能量相加,得到整个网络的全部瞬时误差能量
这里写图片描述
其中,集合C 包括输出层的所有神经元。

BP 算法通过反复修正权值使式(2-5)EnEn在权值空间的搜索方向。

在式(2-5)两边对ej(n)ej(n)取微分,得到:
这里写图片描述

在式(2-3)两边对yj(n)yj(n)取微分,得到:
这里写图片描述

在式(2-2)两边对vj(n)vj(n)取微分,得到:
这里写图片描述

最后在式(2-1)两边对wji(n)wji(n)取微分,得到:
这里写图片描述

将式(2-7)——(2-10)带入式(2-6)得:

这里写图片描述

应用于wji(n)wji(n)定义为:
这里写图片描述

其中,ηη是误差反向传播的学习率负号表示在权空间中梯度下降

将式(2-11)带入式(2-12)得:
这里写图片描述

其中,δj(n)δj(n)是根据delta法则定义的局部梯度
这里写图片描述
局部梯度指明了突触权值所需要的变化。

现在来考虑神经元jj所处的层。
(1) 神经元jj是输出层节点

当神经元jj为:
这里写图片描述

(2) 神经元jj是隐层节点

当神经元jj根据式(2-14)重新定义为:
这里写图片描述

来看图二:它表示输出层神经元kk表示输出层神经元

图二中,网络的全部瞬时误差能量为:
这里写图片描述

在式(2-17)两边对函数信号yj(n)yj(n)求偏导,得到:
这里写图片描述

在图二中:
这里写图片描述

因此,
这里写图片描述

图二中,对于输出层神经元kk ,其诱导局部域是:
这里写图片描述

求式(2-21)对yj(n)yj(n)的微分得到:
这里写图片描述

将式(2-20)和(2-22)带入到式(2-18)得到:
这里写图片描述

将式(2-23)带入式(2-16)得隐层神经元jj为:
这里写图片描述

反向传播过程推导总结

因此,结合式(2-13)、(2-15)和(2-24),由神经元ii按照delta法则定义如下:

这里写图片描述

其中:

  • 神经元jj与权值加权和的乘积,见式(2-24)。

3.标准BP神经网络设计原则

(1)激活函数
单极性S型函数和双曲正切S型函数
(2)学习率
0<η<10<η<1

隐层节点数=()−−−−−−−−−−−−√(输入节点数∗输出节点数)

4.标准BP算法训练过程及流程图

(1)训练过程

  1. 初始化网络的突触权值和阈值矩阵;

  2. 训练样本的呈现;

  3. 前向传播计算;

  4. 误差反向传播计算并更新权值;

  5. 迭代,用新的样本进行步骤3和4,直至满足停止准则。

(2)流程图
这里写图片描述

5.标准BP算法分析

由于标准 BP 算法采用的是梯度下降法,BP 算法的 E-w 曲线图如下:
这里写图片描述

因此标准 BP 算法具有以下缺陷

  1. 在误差曲面上有些区域平坦,此时误差对权值的变化不敏感,误差下降缓慢,调整时间长,影响收敛速度。
  2. 存在多个极小点,梯度下降法容易陷入极小点而无法得到全局最优解。
  3. 学习率ηη越大,虽然学习速度加快,却容易使权值的变化量不稳定,出现振荡。

6.标准BP算法改进方法

(1)增加动量项
一个既要加快学习速度又要保持稳定的方法是修改式(2-13),增加动量项,表示为:
这里写图片描述
这里αα<1。

动量项αΔwji(n1)α∆wji(n−1)≠0,使其跳出局部极小区域,加快迭代收敛速度。

(2)其他改进方法

  • 可变学习速度的反向传播
  • 学习速率的自适应调节
  • 引入陡度因子——防止饱和
  • 共轭梯度法、拟牛顿法等
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BP(Backpropagation)神经网络算法是一种用于训练多层前馈神经网络的监督学习算法。它是基于梯度下降优化算法的一种扩展,用于最小化神经网络的输出与期望输出之间的误差。以下是BP神经网络算法原理介绍: 1. 神经网络结构: BP神经网络由输入层、隐藏层和输出层组成。输入层接收外部输入数据,隐藏层负责处理中间特征表示,输出层产生最终的预测结果。 2. 前向传播: 在前向传播过程中,输入数据通过神经网络,在每一层中进行加权求和和非线性激活函数的处理,最终得到输出结果。每个神经元都有一个权重和一个偏置,这些参数会在训练过程中进行调整。 3. 误差计算: 在前向传播后,计算输出结果与期望输出之间的误差。通常使用均方误差(MSE)作为衡量误差的指标。 4. 反向传播: 反向传播是BP算法的核心步骤。它通过链式法则来计算每个权重对误差的贡献,并根据梯度下降算法更新网络中的权重和偏置。具体步骤如下: - 从输出层开始,计算每个神经元的误差项,衡量其对整体误差的贡献。 - 根据误差项和激活函数求导,计算每个神经元的梯度。 - 根据梯度下降算法,更新每个神经元的权重和偏置。 - 重复以上步骤,直到达到预定的训练次数或达到收敛条件。 5. 训练过程: 在训练过程中,将训练集的输入数据输入到神经网络中,通过前向传播得到输出结果,然后使用反向传播来调整网络参数。这样,网络通过多次迭代逐渐减小误差,提高预测精度。 BP神经网络算法通过反向传播的方式优化网络参数,使得网络可以逼近复杂的非线性函数关系。它广泛应用于分类、回归等各种机器学习任务中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值