深度神经网络-反向传播算法之超级鱼竿

1.概述

             深度神经网络是一个黑盒子,反向传播算法就是黑盒子里的手电筒。之所以起这个标题,授人以鱼不如授人以渔,但是很多时候我们拿到的鱼竿都只是最原始的木棍,费了很大力气还是没有打到鱼,到最后只得承认自己不行。如果文中描述的并不是很清楚,我也不会承认自己是标题党,毕竟对于神经网络来说我们是一步步逼近最优解的。 我会尽力使事物看起来简单一些,因为看到那些复杂的东西我头疼。

2.反向传播

              反向传播就是使用梯度下降,一步步更新参数的过程。

              梯度下降公式:Wt = Wt-1 - eta*g

              其中求解梯度g的过程就被成为反向传播,符号的力量真是无穷大,我明白自己之所以头疼就是被“反向传播”这几个字给吓到了。             

                如果求解g呢?使用链式求导法则,我去,又一个高级词汇。请看下面:

                比如:a=f(x); b=f(a); c=f(b); d=f(c); 

                如果要求d对于x的偏导;我们可以看到从x的到d的路径为:x——>a——>b——>c——>d;那么只要反向用每个节点对上一个节点求偏导然后相乘就可以了。d——>c——>b——>a——>x;

               即为: \partial d/\partial c * \partial c/\partial b * \partial b/\partial a

               所以对应神经网络,如果要求loss对于某个w参数的梯度,我们同样找出从w到loss的路径上的所有节点,然后反向求每个节点对上一个节点的偏导然后相乘即可(注意在此处节点对应的是每一次运算后的结果,比如卷积层有两次运算加权求和和激活,那么算作两个节点)

               假如某个节点分成了多个支路,求偏导时需要把每个支路上的偏导求出来然后加和。

               今天我们只说反向传播,其实也就这么多。大脑只干简单的核心的事情,至于几百个神经元算起来该有多麻烦呀?这种事情交给计算机,它就是吃这口饭的。自己要在纸上多练习几遍,这样才更容易掌握。

3.最重要的小事

           Колыбельная Rauf & Faik;每一个学习的人都是孤独的,我不知道你是不是现在正点着一根烟,只要在世界的某个地方还有人一起听着同一首歌,那这些灵魂就会跨越时空进行连接。

Колыбельная Rauf & Faik

              

            

猜你喜欢

转载自blog.csdn.net/gaobing1993/article/details/108145778
今日推荐