What is Back Propaganda?

  • 反向传播用来计算导数,但这个不是反向传播的特性,这个导数怎么算是要自己来写的!把每一层的结点的导数计算公式封装在结点内部后,再来使用反向传播,反向传播的特性就是:链式法则,或者说反向传播是符合链式法则的,有了这个前提,我们才可以进行导数的反向传播。
  • 所以说,反向传播说白了就是: 把一个复合函数拆分为组成它的子函数,逐个求导,然后导数依次往前面的层传递,叫反向是因为这个过程在网络里是从后往前的!
  • 那为什么不能从前面开始???我们观察sigmoid函数的计算图的前向传播,它是从前往后逐步组成sigmoid的。我们知道,求一个复合函数的导数,是先求外部函数,再求内部函数。在计算图中,因为是从前往后逐步组成sigmoid的,所以外部函数是在后面。所以,要在计算图中求导,只能从后往前,从前往后算的是啥玩意儿?从前往后只能用数值微分的方法,而且需要进行很多次正向传播,分别计算各个参数的损失函数,然后求参数关于损失函数的梯度
    sigmoid的前向传播
  • 我们上面看的是单个函数,那么,再推广,在整个网络中,也必须反向计算,因为整个网络的各层处理函数组成了一个超级复合函数!

那么用反向传播计算偏导的好处到底在哪??

  • 以前计算梯度需要这样做:
    • 把参数矩阵代入求梯度的函数,因为是求偏导数,所以在这个函数里,矩阵的每个参数都会分别进行正向传播(for循环),这个就很费时了,而且每一层都有参数矩阵,这就更费时了
  • 而现在,由于计算图的链式法则的特性,直接一次性从最后倒过来计算,就能求导。相当于一次正向传播的速度,就能解决求梯度的问题
    sigmoid的反向传播
  • 其实反向传播的时候,是在直接使用公式求导(通过分析计算图,得出公式,然后直接将数据代入公式),相当于解析性的求导;正向传播是将参数的微分代入网络,重新学习,然后计算数值导数。
  • 但是反向传播虽好,各层的导数计算公式却更复杂;计算数值导数的话耗时,但容易理解
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章