深度学习-误差反向传播算法



一.误差反向传播算法是干什么的?

通过数值微分计算了神经网络的权重参数的梯度,数值微分虽然简单,也容易实现,但缺点是计算上比较费时间。本章我们将学习一个能够高效计算权重参数的梯度的方法——误差反向传播法。

用梯度的方法计算神经网络的权重参数,虽然理解起来很容易理解,但是费时间。


二.计算图

(一) 了解计算图的写法


在这里插入图片描述

计算图是从左到右的进行计算, 圆圈里面写 计算符号 ,将计算的中间结果写在箭头的上方,表示各个节点的计算结果从左向右传递。

正向传播是从计算图出发点到结束点的传播,当然也可以考虑反向的传播,这种传播称为反向传播。



(二)局部计算

计算图的特征是可以通过传递“局部计算”获得最终结果。“局部”这个词的意思是“与自己相关的某个小范围”。局部计算是指,无论全局发生了什么,都能只根据与自己相关的信息输出接下来的结果。

在这里插入图片描述
计算图可以集中精力于局部计算。无论全局的计算有多么复杂,各个步骤所要做的就是对象节点的局部计算。虽然局部计算非常简单,但是通过传递它的计算结果,可以获得全局的复杂计算的结果。



(三) 计算图的优点

  • 简化计算过程,让我们可以集中尽力于局部的计算
  • 可以保留中间的计算过程,比如最后的总钱数,(这个特点,在误差反向传播算法的,可以实现结果的共享,大大的加快了计算的过程)
  • 其实更重要的,是可以通过反向传播高效的计算导数



三. 误差反向传播算法的具体实现

下面来看,具体是如何进行计算的:

在这里插入图片描述


如图所示,反向传播使用与正方向相反的箭头(粗线)表示。反向传播传递“局部导数”,将导数的值写在箭头的下方。在这个例子中,反向传播从右向左传递导数的值(1→1.1→2.2)。从这个结果中可,“支付金额关于苹果的价格的导数”的值是2.2。这意味着,如果苹果的价格上涨1日元,最终的支付金额会增加2.2日元。

付金额关于苹果的个数的导数”等也都可以用同样的方式算出来。并且,计算中途求得的导数的结果(中间传递的导数)可以被共享,从而可以高效地计算多个导数。综上,计算图的优点是,可以通过正向传播和反向传播高效地计算各个变量的导数值。

posted @ 2020-10-17 09:32  沧海一声笑rush  阅读(368)  评论(0编辑  收藏  举报