BP算法总结+从输入-隐层-输出的逐步手推

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函数。以通用的变量代替数值,具体计算值可以引入数值。计算完之后可以从这个简单的神经网络扩展到多个隐层,推到过程如是(为了大家看的清楚我将自己当初笔记中的推导截图共享出来)。

  BP算法总结+从输入-隐层-输出的逐步手推_第1张图片

正向传播的过程:

    从输入--->隐层

   BP算法总结+从输入-隐层-输出的逐步手推_第2张图片

隐层--->输出层

   BP算法总结+从输入-隐层-输出的逐步手推_第3张图片

  例子的正向传播以求解完成,在看反向传播前看一下sigmoid的求导(注:反向求导过程sigmoid求解就可以直接写)

  BP算法总结+从输入-隐层-输出的逐步手推_第4张图片

   反向传播:(在以平方损失函数作为损失函数)

   输出--->隐层

   BP算法总结+从输入-隐层-输出的逐步手推_第5张图片

  BP算法总结+从输入-隐层-输出的逐步手推_第6张图片

  BP算法总结+从输入-隐层-输出的逐步手推_第7张图片

  BP算法总结+从输入-隐层-输出的逐步手推_第8张图片     BP算法总结+从输入-隐层-输出的逐步手推_第9张图片

 通过上述的计算可以类似的计算出更新的w6-w8,和bb3,b4其中的α为学习率;

从隐层-->输出层

 BP算法总结+从输入-隐层-输出的逐步手推_第10张图片

 

 BP算法总结+从输入-隐层-输出的逐步手推_第11张图片

   BP算法总结+从输入-隐层-输出的逐步手推_第12张图片

   BP算法总结+从输入-隐层-输出的逐步手推_第13张图片

  总结w1的更新

   BP算法总结+从输入-隐层-输出的逐步手推_第14张图片

    BP算法总结+从输入-隐层-输出的逐步手推_第15张图片

    通过上述的公式可以求解出w2-w4和b1,b2的更新值。

   完成上述过程等于是走了一遍更新权值和bais的过程,在计算机中这个过程多运行几次可以达到学习的过程。如果有更深的网络或者节点个数,推导的过程类似不变。

  

你可能感兴趣的:(Ĵ机器学习,BP算法手推)