*****(不关心推导过程的,可以直接从“四”开始看例子)*****
BP神经网络:
以只有一个隐藏层的BP神经网络为例:
1.隐藏层和输出层的激活函数f1和f2都用Sigmodi函数,即:,因为BP网络的激活函数必须可导,所以Sigmoid函数是可取的选择。
2.当BP网络反向调整网络权值时,激活函数的导数是经常用到的,因此我们先对激活函数f(x)求导:
所以:
重要:
BP网络神经元:
从神经网络中拿出一个神经元 j 分析:
其中令 向量表示所有输入。
向量表示所有权值。
,其中
。
netj 经过激活函数处理后,就成为神经元 j 的输出 Oj了。
即:
一:BP算法第一阶段:输入信息的正向传播阶段
为了理论一致性,这里先不假设激活函数为Sigmoid函数,而是用 f1()表示隐藏层的激活函数,f2()表示输出层激活函数:
隐藏层结点的输出:
其中Vki为 Xi 到 Zk 的权重。可以见到Z的值为 各个输入乘对应权重之和再经过激活函数 输出的值。
输出层结点的输出:
其中Wjk为 Zk 到 Oj 的权重。
二:BP算法第二阶段:误差反向传播阶段
(1)由于训练样本中,出现异常数据(即噪音数据)是常见的事情,因此,如果因为噪音数据而调整网络参数的话,就会影响网络的准确率。
因此在神经网络中,批处理是经常被用来解决噪音数据的方法,意思是并非一个输入样本[x1,x2....xn]输入网络后,马上调整网络的权值,而是当输入一组样本(例如一组有p个样本)后,才开始调整权值。
(2)到误差反传阶段,我们需要定义损失函数 :
若数据集的期望输出是 Y,而网络的输出是 O,则误差当然为 (Y - O):
但一般我们不会只写成这种形式,而是:
表示第p个样本的误差。乘了个1/2 和 加了个平方是因为,后面的操作会对损失函数进行求导,这样可以方便计算。
同理,一组样本的误差为:
(3)有了损失函数之后,我们要求哪个参数的变化量,就对损失函数求该参数的导:(如Wjk)
下面公式是基于梯度下降法来做的,往着负梯度方向就是使损失函数E达到最小值的方向。(为学习率)
(1)
由于: ,代入上式(1),得:
(2)
(2)式变形可得(3)式:----->详情参考独立神经元的图:
(3)
(3)式中红圈处可以继续拆分:
最后得输出层的权值调整量:
(4)
到此,隐藏层Z到输出层O之间的各个权值W的调整量就出来了。(如黄色圈)
接下来,我们继续反向传导,求出输入层X到隐藏层Z之间的权值V的调整量。
三,求输入层X到隐藏层Z之间的权值V的调整量
依然从损失函数E下手:
同样用梯度下降的方法,所以(例如)权值Vki的调整量为:
(3.1)
由(3.1)可以继续拆解为:
(3.4)
红色圈可以继续拆分:
所以(3-53) 为输入层到隐藏层权值Vki的调整量公式。
从W和V的调整量公式可以看出,W 为隐藏层到输出层的权值,W的调整量公式带有一个激活函数f2的导数。
而V离输出层隔了两层,因此V的调整量公式不仅与输出层的激活函数f2有关,还与隐藏层的激活函数f1有关。
四,例子:
所举例子人仍是一层隐藏层的BP网络模型:
例:如下图,假设对于输入,其期望输出为
网络权重系数的初始值如下图,并且这里的神经元激活函数都为Sigmoid函数,即
,所以其导数
,学习步长
,其中偏置量
,可以看到其作为额外输入输入到神经网络中:
解:
首先计算隐藏层神经元Z1和Z2的中间状态和
:
则Z1和Z2的输出为:
同理,可得神经元O1和O2的中间状态和
为:
则O1和O2的输出为:
接下来开始通过误差反向调整权重:
总结一下现在我们知道的条件:
神经网络的期望输出:
神经网络的输出:
由第二节中我们得出W权重的调整式子(4):
(其中y为期望输出,o为网络输出)
暂且把绿框中的称为 “输出层的误差”:
算出输出层的误差:
同理,O2的误差为:
算出后,
,就计算出来了。
过程:如 :
得:
把称为隐藏层的误差:
可以算出“隐藏层的误差”:
算出隐藏层的误差后,权值V的调整量
就能算出来了:
计算过程:
此时,所有W权值和所有V权值的调整量就算出来了。
五,标准BP网络的优缺点:
优点:
非线性映射能力 能学习和存贮大量输入-输出模式映射关系,而无需事先了解描述这种映射关系的数学方程。只要能提供足够多的样本模式对供网络进行学习训练,它便能完成由n维输入空间到m维输出空间的非线性映射。
泛化能力 当向网络输入训练时未曾见过的非样本数据时,网络也能完成由输入空间向输出空间的正确映射。这种能力称为泛化能力。
容错能力 输入样本中带有较大的误差甚至个别错误对网络的输入输出规律影响很小。
缺点:
由于学习速率是固定的,因而导致收敛速度缓慢;
BP算法可以使权值收敛到某个值,但并不能保证其为误差平面的全局最小值,这是因为采用了梯度下降法,可能会陷入局部极小值;
网络隐藏层的层数和节点数的选择尚无理论上的指导,在实际应用中难以确定隐藏层数和隐藏层节点个数。
BP网络的学习和记忆具有不稳定性,如果增加了学习样本,训练好的网络就需要从头开始重新训练。