BP神经网络训练实例
1. BP神经网络
关于BP神经网络在我的上一篇博客《CV学习笔记-推理和训练》中已有介绍,在此不做赘述。本篇中涉及的一些关于BP神经网络的概念与基础知识均在《CV学习笔记-推理和训练》中,本篇仅推演实例的过程。
BP的算法基本思想:
将训练集数据输入到神经网络的输入层,经过隐藏层,最后达到输出层并输出结果,这就是前
向传播过程。
由于神经网络的输出结果与实际结果有误差,则计算估计值与实际值之间的误差,并将该误差
从输出层向隐藏层反向传播,直至传播到输入层;
在反向传播的过程中,根据误差调整各种参数的值(相连神经元的权重),使得总损失函数减
小。
迭代上述三个步骤(即对数据进行反复训练),直到满足停止准则。
2. 训练实例
1. 实例设计
sigmoid函数是一种激活函数,在笔者上一篇博文《CV学习笔记-推理和训练》中已有介绍,此处不再赘述。
2. 训练过程
1. 前向传播
输入层->隐藏层:
根据网络结构示意图,神经元h1接收前一层i1和i2的加权求和结果作为输入,将此输入用zh1表示,则有
由于激活函数为sigmoid函数,故而神经元h1的输出ah1为
同理可得,神经元h2的输出ah2为
同理可以计算出ao2 =0.772928465至此,一个完整的前向传播过程结束输出值为[ 0.751365069 , 0.772928465 ] ,与实际值[ 0.01 , 0.99 ] 误差还比较大,需要对误差进行反向传播,更新权值后重新计算。
2. 反向传播
计算损失函数:
传递误差需要经过损失函数的处理,来估计出合适的传递值进行反向传播并合理的更新权值。
隐藏层->输出层的权值更新:
如果我们将上述的步骤去除具体数值,抽象出来
则得到
第二行的公式在笔者的上一篇博客中提到过,现作了推导。
η为学习率,在笔者的上一篇博文《CV学习笔记-推理和训练》中介绍过,不再赘述。
同理,可更新w 6 , w 7 , w 8
隐藏层->隐藏层的权值更新:
同理可得:
两者相加得:
至此,一次反向传播的过程结束。
训练过程就是这样反复迭代,正向传播后得误差,在反向传播更新权值,再正向传播,这样反复进行,本例再第一次迭代后总误差从0.298371109下降到了0.291027924,在迭代10000次后,总误差降至0.000035085。输出为[0.015912196,0.984065734]