BP网络基本知识
BP网络(Back Propagation), 即误差反向传播网络。该网络本身是一种单向传播的多层前向网络。其特点:
- 多层网络,包括输入层、隐层、输出层
- 层与层之间全互联,同层神经元之间不连接
- 权值通过 学习法更新
- 神经元作用函数为S函数
- 学习算法由正向传播和反向传播组成
- 层与层的连接是单向的,信息传播是双向的

BP算法
误差反向传播学习算法(BP算法)。其基本思想是梯度下降法,利用梯度搜索技术,使网络的实际输出与期望输出的误差均方值最小。由正向传播和反向传播组成
正向传播
计算网络的输出。
隐层神经元的输入是所有输入的加权和:
隐层神经元使用S函数作为激活函数:
隐层第j个神经元的输出:
输出层神经元的输出:
网络输出与理想输出的误差:
总的误差均方值(N为输出层节点个数,i表示第i组输入):
反向传播
采用学习算法,调整各层的权值。
- 输出层与隐层连接权值的学习算法:
调整后的权值:
- 隐层与输入层连接权值的学习算法:
调整后的权值:
- 为避免发生震荡、收敛速度慢,加入动量因子,以此考量上次权值变化对本次权值变化的影响。
训练方法
与上面介绍时使用的变量命名稍有不同:
m:BP神经网络层数
:第k层第j个节点的输出
:网络的第j个输入。也可以记为
:到间的连接权值
- 设置初值: 为均匀分布的随机数
- 选取一组训练数据对(X,d),将X输入网络,即
- 正向计算:
- 计算输出层每个节点的误差信号: 「注:作用函数的求导:」
- 计算前层每个节点的误差信号:
- 加权修正: 学习率:
- 重新选择输入,反复以上计算。直到误差小于给定值。
使用BP神经网络逼近非线性函数
输出的3幅图分别为参考信号与BP神经网络输出的对比、误差信号、Jacobian信息。这里就不放图了。
BP网络隐层节点数对于拟合结果的影响
适宜的隐层节点数可以在保证逼近效果和保留抽象能力之间得到平衡。一方面,需要足够的隐层节点数来确保BP网络可以逼近复杂的非线性函数。另一方面,需要避免过多的隐层节点数来防止BP网络丧失抽象化能力。
减少隐层节点数
隐层节点数过少可能造成欠拟合问题。隐层节点数少,神经网络也就简单,可能无法很好的逼近非线性的目标函数。


增加隐层节点数
隐层节点过多可能造成过拟合问题。节点数目过多时,网络可能更趋向于利用“记忆”的能力来产生输出,这会造成在训练集上网络表现很好,但在测试集上标线欠佳的结果。


使用的代码如下: