机器学习入门(10) | 您所在的位置:网站首页 › 节点图表示的是什么 › 机器学习入门(10) |
1. 计算图概念
计算图将计算过程用图形表示出来。这里说的图形是数据结构图,通过多个节点和边表示(连接节点的直线称为“边”)。 2. 计算图求解问题 1:小明在超市买了 2 个 100 日元一个的苹果,消费税是 10%,请计算支付金额。 计算图通过节点和箭头表示计算过程。节点用○表示,○中是计算的内容。将计算的中间结果写在箭头的上方,表示各个节点的计算结果从左向右传递。用计算图解问题1,求解过程如图5-1 所示。
使用计算图求解过程如下: 这里的第 2 歩“从左向右进行计算”是一种正方向上的传播,简称为正向传播(forward propagation)。正向传播是从计算图出发点到结束点的传播。 既然有正向传播这个名称,当然也可以考虑反向(从图上看的话,就是从右向左)的传播。实际上,这种传播称为反向传播(backward propagation)。反向传播将在接下来的导数计算中发挥重要作用。 3. 计算图特点计算图的特征是可以通过传递“局部计算”获得最终结果。“局部”这个词的意思是“与自己相关的某个小范围”。局部计算是指,无论全局发生了什么,都能只根据与自己相关的信息输出接下来的结果。 用一个具体的例子来说明局部计算。比如,在超市买了 2 个苹果和其他很多东西。此时,可以画出如图5-4 所示的计算图。 综上,计算图可以集中精力于局部计算。无论全局的计算有多么复杂,各个步骤所要做的就是对象节点的局部计算。虽然局部计算非常简单,但是通过传递它的计算结果,可以获得全局的复杂计算的结果。 4. 计算图最大优点使用计算图最大的原因是,可以通过反向传播高效计算导数。 问题 1 中,我们计算了购买 2 个苹果时加上消费税最终需要支付的金额。这里,假设我们想知道苹果价格的上涨会在多大程度上影响最终的支付金额,即求“支付金额关于苹果的价格的导数”。设苹果的价格为x,支付金额为L,则相当于求。这个导数的值表示当苹果的价格稍微上涨时,支付金额会增加多少。
从这个结果中可知,“支付金额关于苹果的价格的导数”的值是 2.2。这意味着,如果苹果的价格上涨 1 日元,最终的支付金额会增加 2.2 日元(严格地讲,如果苹果的价格增加某个微小值,则最终的支付金额将增加那个微小值的 2.2 倍) 综上,计算图的优点是,可以通过正向传播和反向传播高效地计算各个变量的导数值。 5. 计算图的反向传播假设存在 y = f(x) 的计算,这个计算的反向传播如图 5-6 所示。 比如,假设 y = f(x) = x2,则局部导数为 ∂ y ∂ x \frac{\partial y}{\partial x} ∂x∂y= 2x。把这个局部导数乘以上游传过来的值(本例中为E),然后传递给前面的节点。 这就是反向传播的计算顺序。通过这样的计算,可以高效地求出导数的值,这是反向传播的要点。 6. 链式法则复合函数是由多个函数构成的函数。比如,z = (x + y)2 是由式(5.1)所示的两个式子构成的。
如果某个函数由复合函数表示,则该复合函数的导数可以用构成复合函数的各个函数的导数的乘积表示。
尝试将式(5.4)的链式法则的计算用计算图表示出来。如果用“**2”节点表示平方运算的话,则计算图如图 5-7 所示。
比如,反向传播时,“**2”节点的输入是 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z,将其乘以局部导数 ∂ z ∂ t \frac{\partial z}{\partial t} ∂t∂z(因为正向传播时输入是 t、输出是 z,所以这个节点的局部导数是 ∂ z ∂ t \frac{\partial z}{\partial t} ∂t∂z),然后传递给下一个节点。 另外,图5-7 中反向传播最开始的信号 ∂ z ∂ z \frac{\partial z}{\partial z} ∂z∂z 在前面的数学式中没有出现,这是因为 ∂ z ∂ z \frac{\partial z}{\partial z} ∂z∂z=1,所以在刚才的式子中被省略了。 图 5-7 中需要注意的是最左边的反向传播的结果。根据链式法则 ∂ z ∂ z \frac{\partial z}{\partial z} ∂z∂z ∂ z ∂ t \frac{\partial z}{\partial t} ∂t∂z ∂ t ∂ x \frac{\partial t}{\partial x} ∂x∂t = ∂ z ∂ t \frac{\partial z}{\partial t} ∂t∂z ∂ t ∂ x \frac{\partial t}{\partial x} ∂x∂t = ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z,成立,对应 “ z 关于 x 的导数”。也就是说,反向传播是基于链式法则的。 把式(5.3)的结果代入到图 5-7 中,结果如图 5-8 所示, 的结果为2(x + y)。 数学表达式参考:https://www.cnblogs.com/jngwl/articles/10096017.html 参考:《深度学习入门:基于Python的理论与实现》 |
CopyRight 2018-2019 实验室设备网 版权所有 |