目录
1. 计算图
计算图将计算过程用图形表示出来。这里说的图形是数据结构图,通过多个节点和边表示(连接节点的直线称为“边”)。
用计算图求解几个常见的问题:
问题1: 太郎在超市买了2个100日元一个的苹果,消费税是10%,请计算支付金额。
问题2: 太郎在超市买了2个苹果、 3个橘子。其中,苹果每个100日元,橘子每个150日元。消费税是10%,请计算支付金额。
综上,用计算图解题的情况下,需要按如下流程进行。
1.构建计算图。
2.在计算图上,从左向右进行计算。
这里的第2歩“从左向右进行计算”是一种正方向上的传播,简称为正向传播(forward propagation)。正向传播是从计算图出发点到结束点的传播。既然有正向传播这个名称,当然也可以考虑反向(从图上看的话,就是从右向左)的传播。实际上,这种传播称为反向传播(backward propagation)。反向传播将在接下来的导数计算中发挥重要作用。
1.1 计算图的优点
优点1:局部计算使各个节点致力于简单的计算,从而简化问题,如下图所示
优点2:利用计算图可以将中间的计算结果全部保存起来(比如,计算进行到2个苹果时的金额是200日元、加上消费税之前的金额650日元等)。
优点3:可以通过反向传播高效计算导数
2. 链式法则
反向传播将局部导数向正方向的反方向(从右到左)传递,传递这个局部导数的原理,是基于链式法则(chain rule)
2.1 计算图的反向传播
假设存在y = f(x)的计算,这个计算的反向传播如下图所示:
反向传播的计算顺序是,将信号E乘以节点的局部导数,然后将结果传递给下一个节点。这里所说的局部导数是指正向传播中y = f(x)的导数,也就是y关于x的导数。比如,假设y = f(x) = x^2,
则局部导数为 = 2x。把这个局部导数乘以上游传过来的值(本例中为E),然后传递给前面的节点。
2.2 什么是链式法则
深度学习-链式求导:https://blog.csdn.net/weixin_40476348/article/details/94434483 (这位博主介绍的很详细)
2.3 链式法则和计算图
“**2”节点表示平方运算
根据链式法则,成立,对应“z关于x的导数”。也就是说,反向传播是基于链式法则的。
的结果为2(x + y)
2.3 反向传播
2.3.1 加法节点的反向传播
首先来考虑加法节点的反向传播。这里以z = x + y为对象,观察它的反向传播。 z = x + y的导数可由下式(解析性地)计算出来。
由图可知加法节点的反向传播只是将输入信号输出到下一个节点
2.3.2 乘法节点的反向传播
我们考虑z = xy,这个式子的导数用下式表示。
由图乘法的反向传播需要正向传播时的输入信号值,案列如下图所示:
因为乘法的反向传播会乘以输入信号的翻转值,所以各自可按1.3 × 5 =6.5、 1.3 × 10 = 13计算。