目录
背景
深度学习框架如Tensorflow Pytorch 等最重要的功能之一即自动对网络模型进行了前向传播和反向梯度传播计算,从而对应用开发人员屏蔽了底层算法实现的细节,很容易进行网络模型的training、evalution、testing 最终构建符合AI应用场景需求的网络模型及其参数,本文旨在用通俗易懂的方式解释前向传播(Forward Pass)和反向传播(Backward Pass)的过程
目标
如上图所示,所谓深度学习的训练过程,它的目标就是让”损失函数尽快的收敛到阈值“,而在这是一个通过SGD算法持续更新整个网络的参数,让损失函数持续减小的迭代过程
核心方法
深度学习框架实现了自动化更新网络参数,从而让训练过程对应用开发人员透明,这里核心要解决问题即求出损失函数loss对网络中各个参数w b c 的偏导数,即可以获得网络参数更新的增量,而理解该过程需要的数学常识即链式求导规则
前向传播
如上图构建的神经网络
- 网络的损失函数是loss
- 每一层网络的输出是z
- 激活层输出是a
- 网络中的参数是w
- 目标是计算损失函数loss对网络参数w的偏导数
求解 的过程可以转换为求解红框的部分
求解loss对w的偏导数在网络的前向过程中可以先计算出其中的一部分 (上图中的蓝框)
反向传播
· 求解的过程可以推迟到计算 与
同样求解和的过程可以延迟到下一层网络
依次类推,递归到最后一层,即可以计算出所有的结果
如上图所示,一个可见的网络模型,还有一个隐含的反向传播网络在计算loss对z的偏导数
如上图所示, 前向和反向传播各自计算了Loss对w偏导数的一部分 ,当完成一次完整的前向和反向传播计算后,就可以计算出目标
结论
如上图所示,深度学习网络的training过程,就是一个反复执行前向和反向传播过程,更新网络参数,减少loss的过程,整个动态的过程可以用下面的动画表达
<iframe allowfullscreen="true" data-mediaembed="csdn" id="ks8g0ht5-1626589065009" src="https://live.csdn.net/v/embed/166643"></iframe>正方向传播训练过程动画示意
标签:loss,网络,传播,算法,反向,前向,参数,过程 来源: https://blog.csdn.net/HaoBBNuanMM/article/details/118876515
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。