BP神经网络

本文详细介绍了反向传播(BP)算法在多层神经网络中的工作原理,包括损失函数的定义、权值更新的计算以及算法的改进方法,如增加冲量项以改善局部极小值问题。同时,讨论了BP神经网络中隐含层节点数量的选择及其对性能的影响,并提出了防止过拟合的策略。最后,指出了标准BP神经网络的局限性,如局部极小值、收敛速度慢和隐含层选取等问题。
摘要由CSDN通过智能技术生成

反向传播算法又称BP算法(Back Propagation)

      使用sigmoid函数(这是一个激励函数,对于不同的情况可以使用不同的激励函数,为了讲解方便,这里就采用这个激励函数来说明问题,其他的激励函数可以参考:http://blog.csdn.net/uestc_c2_403/article/details/73431428)的感知器来搭建一个多层神经网络,为简单起见,此处我们使用三层网络来分析。假设网络拓补如图1.1所示。

图1.1 BP网络拓补结构

  网络的运行流程为:当输入一个样例后,获得该样例的特征向量,再根据权向量得到感知器的输入值,然后使用sigmoid函数计算出每个感知器的输出,再将此输出作为下一层感知器的输入,依次类推,直到输出层。

  那么如何确定每个感知器的权向量呢?这时我们需要使用反向传播算法来逐步进行优化。后面在介绍

  在上一篇介绍感知器的文章中,为了得到权向量,我们通过最小化损失函数来不断调整权向量。此方法也适用于此处求解权向量,首先我们需要定义损失函数(损失函数根据不同的情况需要使用不同的损失函数,为了方便这里使用平方误差的损失函数,这个函数适用于拟合数据,如果是分类,就用交叉熵损失函数),由于网络的输出层有多个输出结点,我们需要将输出层每个输出结点的差值平方求和。于是得到每一个训练样例的损失函数为:(前面加个0.5方便后面求导使用)

  在多层的神经网络中,误差曲面可能有多个局部极小值,这意味着使用梯度下降算法找到的可能是局部极小值,而不是全局最小值,不过虽然不是全局最优,但是也是一个可行解(梯度下降有批梯度下降,随机梯度下降,小批次梯度下降等)。

  现在我们有了损失函数,这时可以根据损失函数来调整输出结点中的输入权向量,这类似感知器中的随机梯度下降算法,然后从后向前逐层调整权重,这就是反向传播算法的思想。

 

具有两层sigmoid单元的前馈网络的反向传播算法:

1)将网络中的所有权值随机初始化。

2)对每一个训练样例,执行如下操作:

  A)根据实例的输入,从前向后依次计算,得到输出层每个单元的输出。然后从输出层开始反向计算每一层的每个单元的误差项。

  B)对于输出层的每个单元k,计算它的误差项:

  C)对于网络中每个隐藏单元h,计算它的误差项:

  D)更新每个权值:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值