深度学习-误差反向传播直观理解


前言

刚开始接触机器学习或者深度学习的时候,学到反向传播的时候总是感觉很抽象,看了知乎和一些教材后还是感觉不够直观,后来看到一处介绍后豁然开朗,在此做下笔记方便查阅,全文不涉及公式推导,仅作为直观理解,待理解后再去推导公式就很轻松了。文章开头有个正向传播的举例,其目的是为了和下文的反向传播做对比。文中的图像来源于《深度学习入门-基于Python的理论与实现》。


目录

前言

一、正向传播

二、反向传播

1.加法节点的反向传播

2.乘法节点的反向传播(主要使用)

3.回到苹果例子

总结

参考文献


一、正向传播

正向传播很好理解,即从神经网络的输入层(左边),依次计算到输出层(右边)。注意:本文不再赘述链式法则等基础知识。

举个例子(以书中原文为例,下文同理):太郎在超市买了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.