1 BP算法总结
BP算法:bp算法实际上是在神经网络中寻找在合适条件下的最佳权重和bais。实际上是利用输出后的误差来估计输出层前一层的误差,再用这层误差来估计更前一层误差,如此获取所有各层误差估计。然后再来来调整各层的连接权值+bais,再用调整后的连接权值+bais重新计算输出误差。直到输出的误差达到符合的要求或者迭代次数溢出设定值。(注:更新权值的过程实际上最重要的是对误差应用链式法则求导,等总结完后面会有详细的手推,但你必须理解BP算法的过程,我这块只做懂原理但中间计算有问题的讲解)。
2 BP算法的流程
1) 正向传播FP(求损失).在这个过程中,我们根据输入的样本,给定的初始化权重值W和偏置项的值b, 计算最终输出值以及输出值与实际值之间的损失值.如果损失值不在给定的范围内则进行反向传播的过程; 否则停止W,b的更新。
2) 反向传播BP(回传误差).将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。
3 BP算法手推过程
下面以一个简单的神经网为例,输入为i1,i2;权重为w1-w8,bais为b1-b4;中间的隐层激活函数为sigmoid函数。以通用的变量代替数值,具体计算值可以引入数值。计算完之后可以从这个简单的神经网络扩展到多个隐层,推到过程如是(为了大家看的清楚我将自己当初笔记中的推导截图共享出来)。
正向传播的过程:
从输入--->隐层
隐层--->输出层
例子的正向传播以求解完成,在看反向传播前看一下sigmoid的求导(注:反向求导过程sigmoid求解就可以直接写)
反向传播:(在以平方损失函数作为损失函数)
输出--->隐层
通过上述的计算可以类似的计算出更新的w6-w8,和bb3,b4其中的α为学习率;
从隐层-->输出层
总结w1的更新
通过上述的公式可以求解出w2-w4和b1,b2的更新值。
完成上述过程等于是走了一遍更新权值和bais的过程,在计算机中这个过程多运行几次可以达到学习的过程。如果有更深的网络或者节点个数,推导的过程类似不变。