本文介绍了以反向传播(backpropagation)算法为基础的多层神经网络,下面的例子是三层的神经网络,其中两个输入,一个输出.
每一个神经元(neuron)由两个单元(unit)构成.第一个单元增加了产出的权重(weights)系数和输入信号.第二个单元实现了非线性函数,我们称之为神经元激活(neuron activation)函数.信号e是增加的输出信号,y=f(e)是非线性元素的输出信号.y也是神经元的输出信号.
为了让神经网络学习,我们需要来训练数据集.训练集包含了两个输入信号(x1和x2)以相对应的目标z.神经网络训练是一个迭代的过程,每次迭代权重系数都会改进.
ForwardPropagation
第一层神经网络:
第二层神经网络:
第三层神经网络
BackPropagation
接下来输出信号y会与目标值相比较,他们两个的差叫做误差信号
δ
我们不可能直接计算出误差信号的,很多年科学家都没有解决这个问题,直到18世纪中叶.这个问题的解决方式是反方向传播误差信号
δ
权重系数
wmn
和上述的向前传播过程的权重系数是相同的
当所有的神经元的误差信号都被计算出来,所有神经元正向输入的权重系数将被修正.
df(e)/de
代表了神经元激活函数的派生
系数
η
影响了神经网络的学习速度.有一些技巧来选择这个参数.
1. 选择比较大的值.当权重系数确定之后,
η
将会逐渐的减少.
2. 选择比较小的值.在学习的过程中
η
会先变变大,再变小.
参考文献:
http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html
http://blog.sina.com.cn/s/blog_8e5ce7190102ws0h.html
http://blog.csdn.net/u013007900/article/details/50118945
http://www.doc88.com/p-9405764412826.html
数学公式整理:
http://blog.csdn.net/zdk930519/article/details/54137476
http://www.tuicool.com/articles/mEzqeaM