基本BP算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行,而调整权值和阈值则从输出到输入的方向进行。正向传播时,输入信号通过隐含层作用于输出节点,经过非线性变换,产生输出信号,若实际输出与期望输出不相符,则转入误差的反向传播过程。误差反传是将输出误差通过隐含层向输入层逐层反传,并将误差分摊给各层所有单元,以从各层获得的误差信号作为调整各单元权值的依据。通过调整输入节点与隐层节点的联接强度和隐层节点与输出节点的联接强度以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。
计算过程
BP神经网络的计算过程由正向计算过程和反向计算过程组成。正向传播过程,输入模式从输入层经隐单元层逐层处理,并转向输出层,每~层神经元的状态只影响下一层神经元的状态。如果在输出层不能得到期望的输出,则转入反向传播,将误差信号沿原来的连接通路返回,通过修改各神经元的权值,使得误差信号最小。
BP神经网络也存在以下的一些主要缺陷。
①学习速度慢,即使是一个简单的问题,一般也需要几百次甚至上千次的学习才能收敛。
②容易陷入局部极小值。
③网络层数、神经元个数的选择没有相应的理论指导。
④网络推广能力有限。
BP网络主要用于以下四个方面。
1)函数逼近:用输入向量和相应的输出向量训练一个网络逼近一个函数。
2)模式识别:用一个待定的输出向量将它与输入向量联系起来。
3)分类:把输入向量所定义的合适方式进行分类。
4)数据压缩:减少输出向量维数以便于传输或存储。
激活函数
必须处处可导(一般都使用S型函数)
激活函数例如sigmoid:一个根据不同因素、以及各个因素的重要性程度而做决策的模型。
使用S型激活函数时,BP网络输入与输出关系
输入:
输出:
输出的导数:
BP网络的标准学习算法
学习的过程:
神经网络在外界输入样本的刺激下不断改变网络的连接权值,以使网络的输出不断地接近期望的输出。
学习的本质:
对各连接权值的动态调整
学习规则:
权值调整规则,即在学习过程中网络各神经元的连接权值变化所依据的一定的调整规则
BP网络的标准学习算法-算法思想
学习的类型: 有导师学习
核心思想:将输出误差以某种形式通过隐层向输入层逐层反传(即,将误差分摊给各层的所有单元——各层单元的误差信号,以此来修正各单元权值)
个人理解 :就如同之前的梯度下降函数每次更新Θ值一样,每次来一个样本,就更新Θ值,使得代价函数变得越来越小。这个类似,先给他们的权值赋个随机初值,然后计算到最后一层(输出层),若输出结果与实际值有误差(这个正常情况下是肯定有的),那么就进行误差的反向传播算法,来优化各层的Θ值(权重值)
学习的过程: 信号的正向传播——》误差的反向传播
BP网络的标准学习算法-学习过程
正向传播
输入样本-----输入层------各隐层--------输出层
判断是否转入反向传播阶段
若输入层的实际输出(h(x))与期望的输出(y)不符。
误差反传
误差以某种形式在各层表示-----修正各层单元的权值(w或者Θ)
最终结果
网络输出的误差减少到了可以接受的程度(或 进行到预先设定的学习次数为止)
http://www.cnblogs.com/charlotte77/p/5629865.html
http://blog.csdn.net/shenxiaoming77/article/details/50392709
https://baike.baidu.com/item/BP%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/4581827?fr=aladdin
http://blog.csdn.net/acdreamers/article/details/44657439
http://blog.csdn.net/u013007900/article/details/50118945
[整理] BP神经网络讲解——最好的版本 (超赞)