计算图模型与反向传播
前向传导与反向传导的区别是前向传导是计算每一个输入对于每一个节点的影响(计算∂/∂X,其中X表示输入),反向传导计算每一个节点对于每一个输出的影响(∂Y/∂,Y表示每一个输出)之所以反向传播比前向传播计算效率要高的多,是因为在神经网络中一般而言输入节点个数远远要大于输出节点个数(当然 如果是输出节点个数远远大于输入节点的时候 前向传导效率要高于反向传导 但是基本不存在这样的情形 ),在神经网络中把损失看做是权重的函数,需要计算损失关于权重的偏导,而权重的个数百万,千万甚至过亿级别 ,这时使用反向传播可以大大减少运算量。
通过计算图模型说明前向传播与反向传播的性能区别,例如 F=Q*Z Q=x+y X=2 Y=5 Z=-4 ,输入节点为X,Y,Z 输出节点为F。
其反向传播计算图模型如下:
只需进行一遍偏导计算,就可以根据链式法则得到F关于X,Y,Z的全部偏导数
如果采用前向传播
则需要分别对于X,Y, Z进行偏导运算 ,这里以X举例
采用链式法则将三个支路相加得到F对于X的偏导,同理对于Y和Z也是