问题 1:太郎在超市买了 2 个 100 日元一个的苹果,消费税是 10%,请计算支付金额。 ○中表示计算内容: ○中表示计算方式: 问题 2:太郎在超市买了 2 个苹果、3 个橘子。其中,苹果每个 100 日元,橘子每个 150 日元。消费税是 10%,请计算支付金额。 计算图解题流程:从左到右正向传播
把上面的复杂计算当作一个模块,这个模块的实现过程不用了解,只需要得到它的结果,用它的结果做加和运算。
对于问题一,当我们想知道增加苹果价格会对最终的支付金额有什么影响时,我们就要求支付金额对于苹果价格的导数,设苹果的价格为 x,支付金额为 L,则相当于求 ∂ L ∂ x \frac{\partial L}{\partial x} ∂x∂L。 即反向传播求导数 可以看到,支付金额关于苹果价格的导数中间带入了苹果和消费税的乘积,得到的结果为 2.2 日元,这说明如果苹果的价格上涨 1 日元,最终的支付金额会增加 2.2 日元
反向传播就是下层传来的信号 E E E反向通过函数计算 f f f时,乘这个函数对上层向下传播的信号的偏导 ∂ y ∂ x \frac{\partial{y}}{\partial{x}} ∂x∂y 即:计算图的反向传播:沿着与正方向相反的方向,乘上局部导数 例如:假设 y = f ( x ) = x 2 y=f(x)=x^2 y=f(x)=x2,则局部导数为 ∂ y ∂ x = 2 x \frac{\partial y}{\partial x}=2x ∂x∂y=2x
例子: 对于复合函数 z = ( x + y ) 2 z=(x+y)^2 z=(x+y)2,可以分成以下两个式子 z = t 2 z=t^2 z=t2 t = x + y t=x+y t=x+y 链式法则:如果某个函数由复合函数表示,则该复合函数的导数可以用构成复合函数的各个函数的导数的乘积表示。 对于上式来说: ∂ z ∂ x = ∂ z ∂ t ∗ ∂ t ∂ x \frac{\partial{z}}{\partial{x}}=\frac{\partial{z}}{\partial{t}}*\frac{\partial{t}}{\partial{x}} ∂x∂z=∂t∂z∗∂x∂t ∂ z ∂ t = 2 t \frac{\partial z}{\partial t}=2t ∂t∂z=2t ∂ t ∂ x = 1 \frac{\partial t}{\partial x}=1 ∂x∂t=1 ∂ z ∂ x = 2 t = 2 ( x + y ) \frac{\partial{z}}{\partial{x}}=2t=2(x+y) ∂x∂z=2t=2(x+y) 对于问题一来说:
对于 z = x + y z = x + y z=x+y ∂ z ∂ x = 1 \frac{\partial{z}}{\partial{x}}=1 ∂x∂z=1 ∂ z ∂ y = 1 \frac{\partial{z}}{\partial{y}}=1 ∂y∂z=1
加法运算节点反向传播乘1例子如下:
对于 z = x y z = xy z=xy ∂ z ∂ x = y \frac{\partial{z}}{\partial{x}}=y ∂x∂z=y ∂ z ∂ y = x \frac{\partial{z}}{\partial{y}}=x ∂y∂z=x
乘法运算节点反向传播乘翻转值例子如下:
那我们回到最初的问题一,苹果的价格、苹果的个数、消费税这 3 个变量各自如何影响最终支付的金额。 可以得到下图括号中的内容如下: end
原书为《深度学习入门 基于Python的理论与实现》作者:斋藤康毅 人民邮电出版社本文章是gitchat的《陆宇杰的训练营:15天共读深度学习》1的课程读书笔记本文章大量引用原书中的内容和训练营课程中的内容作为笔记《陆宇杰的训练营:15天共读深度学习》 ↩︎