Java教程

【算法分析】深度学习框架-前向反向传播原理

本文主要是介绍【算法分析】深度学习框架-前向反向传播原理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

背景

目标

核心方法

前向传播

反向传播

结论


背景

深度学习框架如Tensorflow Pytorch 等最重要的功能之一即自动对网络模型进行了前向传播和反向梯度传播计算,从而对应用开发人员屏蔽了底层算法实现的细节,很容易进行网络模型的training、evalution、testing 最终构建符合AI应用场景需求的网络模型及其参数,本文旨在用通俗易懂的方式解释前向传播(Forward Pass)和反向传播(Backward Pass)的过程

目标

深度学习的目标

如上图所示,所谓深度学习的训练过程,它的目标就是让”损失函数尽快的收敛到阈值“,而在这是一个通过SGD算法持续更新整个网络的参数,让损失函数持续减小的迭代过程

核心方法

自动化网络参数更新

深度学习框架实现了自动化更新网络参数,从而让训练过程对应用开发人员透明,这里核心要解决问题即求出损失函数loss对网络中各个参数w b c 的偏导数,即可以获得网络参数更新的\Delta\Theta增量,而理解该过程需要的数学常识即链式求导规则

前向传播

神经网络示例

如上图构建的神经网络

  • 网络的损失函数是loss
  • 每一层网络的输出是z
  • 激活层输出是a
  • 网络中的参数是w
  • 目标是计算损失函数loss对网络参数w的偏导数 \frac{\partial loss }{\partial w}
求解loss对网络参数w1的偏导

求解\frac{\partial loss}{\partial w1} 的过程可以转换为求解红框的部分

 

 

 

 

 

 

前向传播计算过程

求解loss对w的偏导数在网络的前向过程中可以先计算出其中的一部分 (上图中的蓝框)

反向传播

延迟计算loss对z1的偏导数

· 求解\frac{\partial loss}{\partial z1}的过程可以推迟到计算\frac{\partial loss}{\partial z3} 与 \frac{\partial loss}{\partial z4}

 

同样求解\frac{\partial loss}{\partial z3}\frac{\partial loss}{\partial z4}的过程可以延迟到下一层网络

依次类推,递归到最后一层,即可以计算出所有的结果

隐含的反向传播网络

如上图所示,一个可见的网络模型,还有一个隐含的反向传播网络在计算loss对z的偏导数

Loss对w偏导数的组成部分

如上图所示, 前向和反向传播各自计算了Loss对w偏导数的一部分 ,当完成一次完整的前向和反向传播计算后,就可以计算出目标\frac{\partial loss}{\partial w}

结论

更新网络参数

迭代更新网络参数实现训练过程

如上图所示,深度学习网络的training过程,就是一个反复执行前向和反向传播过程,更新网络参数,减少loss的过程,整个动态的过程可以用下面的动画表达

<iframe allowfullscreen="true" data-mediaembed="csdn" id="ks8g0ht5-1626589065009" src="https://live.csdn.net/v/embed/166643"></iframe>

正方向传播训练过程动画示意

这篇关于【算法分析】深度学习框架-前向反向传播原理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!