深度学习-误差反向传播算法
一.误差反向传播算法是干什么的?
通过数值微分计算了神经网络的权重参数的梯度,数值微分虽然简单,也容易实现,但缺点是计算上比较费时间。本章我们将学习一个能够高效计算权重参数的梯度的方法——误差反向传播法。
用梯度的方法计算神经网络的权重参数,虽然理解起来很容易理解,但是费时间。
二.计算图
(一) 了解计算图的写法
计算图是从左到右的进行计算, 圆圈里面写 计算符号 ,将计算的中间结果写在箭头的上方,表示各个节点的计算结果从左向右传递。
正向传播是从计算图出发点到结束点的传播,当然也可以考虑反向的传播,这种传播称为反向传播。
(二)局部计算
计算图的特征是可以通过传递“局部计算”获得最终结果。“局部”这个词的意思是“与自己相关的某个小范围”。局部计算是指,无论全局发生了什么,都能只根据与自己相关的信息输出接下来的结果。
计算图可以集中精力于局部计算。无论全局的计算有多么复杂,各个步骤所要做的就是对象节点的局部计算。虽然局部计算非常简单,但是通过传递它的计算结果,可以获得全局的复杂计算的结果。
(三) 计算图的优点
- 简化计算过程,让我们可以集中尽力于局部的计算
- 可以保留中间的计算过程,比如最后的总钱数,(这个特点,在误差反向传播算法的,可以实现结果的共享,大大的加快了计算的过程)
- 其实更重要的,是可以通过反向传播高效的计算导数
三. 误差反向传播算法的具体实现
下面来看,具体是如何进行计算的:
如图所示,反向传播使用与正方向相反的箭头(粗线)表示。反向传播传递“局部导数”,将导数的值写在箭头的下方。在这个例子中,反向传播从右向左传递导数的值(1→1.1→2.2)。从这个结果中可,“支付金额关于苹果的价格的导数”的值是2.2。这意味着,如果苹果的价格上涨1日元,最终的支付金额会增加2.2日元。
付金额关于苹果的个数的导数”等也都可以用同样的方式算出来。并且,计算中途求得的导数的结果(中间传递的导数)可以被共享,从而可以高效地计算多个导数。综上,计算图的优点是,可以通过正向传播和反向传播高效地计算各个变量的导数值。