深度学习-误差反向传播直观理解
前言
刚开始接触机器学习或者深度学习的时候,学到反向传播的时候总是感觉很抽象,看了知乎和一些教材后还是感觉不够直观,后来看到一处介绍后豁然开朗,在此做下笔记方便查阅,全文不涉及公式推导,仅作为直观理解,待理解后再去推导公式就很轻松了。文章开头有个正向传播的举例,其目的是为了和下文的反向传播做对比。文中的图像来源于《深度学习入门-基于Python的理论与实现》。
目录
一、正向传播
正向传播很好理解,即从神经网络的输入层(左边),依次计算到输出层(右边)。注意:本文不再赘述链式法则等基础知识。
举个例子(以书中原文为例,下文同理):太郎在超市买了2 个100 日元一个的苹果,消费税是10%,请计算支付金额。
我们对此作出传播图有:
可得支付金额为:100*2*1.1=220(円)
二、反向传播
如图所示,反向传播的计算顺序是,将信号E乘以节点的局部导数,然后将结果传递给下一个节点。这里所说的局部导数是指正向传播中
的导数,也就是y 关于x的导数
。比如,假设
,则局部导数为
。把这个局部导数
乘以上游传过来的值(本例中为E),然后传递给前面的节点。
1.加法节点的反向传播
以举例:
有:
2.乘法节点的反向传播(主要使用)
以为例:
有:
3.回到苹果例子
如前所述,乘法节点的反向传播会将输入信号翻转后传给下游。从上图可知,苹果的价格的导数是2.2,苹果的个数的导数是110,消费税的导数是200。这可以解释为,如果消费税和苹果的价格增加相同的值,则消费税将对最终价格产生200 倍大小的影响,苹果的价格将产生2.2 倍大小的影响。不过,因为这个例子中消费税和苹果的价格的量纲不同,所以才形成了这样的结果(消费税的1 是100%,苹果的价格的1 是1 日元)。
总结
对于以乘法构成的神经网络,方向传播的直观理解就是求偏导数。若是两输入的,则是交换传递参数。对于多输入则按到链式法则来依次求偏导即可
参考文献
[1]斋藤康毅.深度学习入门-基于Python的理论与实现[M].中国工信出版集团:北京,2019.6:121-135.