赞
踩
神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向--深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。而 反向传播是神经网络的核心原理,了解 反向传播的具体细节,会对以后在深度学习里面的探索起到触类旁通的重要作用。
我们的愿景是打造全网 AI 最通俗博客,赠人玫瑰,手有余香,在人工智能前行的路上一起前行。以通俗简介的方式,让每一位热爱着深入其中。
在本 Chat 中,你将收获如下内容:
适合人群: 对神经网络有兴趣,想探索深度学习领域的技术人员。
我们知道正向传播就是把 x 拿下来一层层的和 w 乘,然后经过 function 非线性变化,最后得到一个 y 输出结果。反向传播(reverse-mode autodiff)就是反过来,从最后的 y 到 x,反向的自动求导。前向传播是 make predictions,去预测ŷ,然后计算出误差,再计算出每个神经节点对误差的贡献。这里的求贡献就是反向传播过程,首先根据前向传播的误差来求梯度,梯度越大贡献越大。然后根据梯度调整原来的权重。总结下来反向传播就是求导、求梯度,然后根据梯度在迭代里面调整 w 的一个过程。
反向自动求导是 tensorflow 实现的方案,首先,它执行图的前向阶段,从输入到输出,去计算节点值;然后反向阶段,从输出到输入去计算所有变量的偏导。
什么是偏导数:在数学中,一个多变量的函数的偏导数,就是它关于其中一个变量的导数而保持其他变量恒定(相对于全导数,在其中所有变量都允许变化)。偏导数在向量分析和微分几何中是很有用的。
说白了就是假如 f 对 x 求偏导:∂f*∂x。就是把除 x 以外的自变量当成常数,然后再进行正常的求导即可。
比如这个计算逻辑,即这个算法。可以用如图来表达正向传播和反向传播逻辑。图中红色虚线表示正向传播,黑色实线是反向传播。
如果 x=3,y=4,正向传播之后,结果为 42,体现在n7 节点上。
那反向传播是做什么事情呢?怎样传播? 如何计算每根线上面的梯度呢?
这里依赖反向自动求导(reverse-mode autodiff),求解的想法是逐渐的从上往下,来计算 f(x,y)的偏导,使用每一个中间连续的节点,直到我们达到变量节点,这里严重依赖链式求导法则。
链式求导法则,就是 x 不能直接连接 f,我们通过一个中间的节点,比如 ni,如果 ni 可以连接 f,就可以让 f 对 ni 求偏导;然后 x 可以连接 ni,ni 对 xi 求偏导,然后根据链式求导法则相乘,得到的就是 f 对 x 求偏导的一个值。
比如上图中的算法逻辑我们最终的 f 对 x 来求偏的,f 是最后节点出现的结果,x 是第一个节点,中间有好长的路要走。所以如果对 x 求偏导的话,得把每一步节点输出对 x 求偏导。n1 节点没有直接连上 n7 节点,n1 节点也没有直接连上 n5 节点,但是 n1 节点可以连上 n4 节点;n4 节点连不上 n7 节点,但是能连接 n5 节点。那么我们可以让 xn1 通过 n4 去连接 n5,然后再通过 n5 连接到 n7,它就成为一条链,求这条链上面的导数,最后就可以把 n7 对 n1 也就是
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。