🌞欢迎来到深度学习的世界
🌈博客主页:卿云阁💌欢迎关注🎉点赞👍收藏⭐️留言📝
🌟本文由卿云阁原创!
🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!
目录
5.1 计算图
5.2 链式法则
5.3 反向传播
5.5 激活函数层的实现
5.6 Affine/Softmax层的实现
5.7 误差反向传播法的实现
5.1 计算图
5.1.1 用计算图求解
问题1 :太郎在超市买了 2 个 100 日元一个的苹果,消费税是 10% ,请计算支付金额。从这个计算图的结果可知,答案为220日元。
问题2 :太郎在超市买了 2 个苹果、 3 个橘子。其中,苹果每个 100 日元, 橘子每个150 日元。消费税是 10% ,请计算支付金额。这个问题中新增了加法节点“ + ”,用来合计苹果和橘子的金额。构建了计算图后,从左向右计算。答案为715 日元。综上,用计算图解题的情况下,需要按如下流程进行。
1. 构建计算图。2. 在计算图上,从左向右进行计算。这里的第 2 歩“从左向右进行计算”是一种正方向上的传播,简称为 正向传播(forward propagation )。正向传播是从计算图出发点到结束点的传播。 既然有正向传播这个名称,当然也可以考虑反向(从图上看的话,就是从右向左)的传播。实际上,这种传播称为反向传播 (backward propagation )。反向传播将在接下来的导数计算中发挥重要作用。5.1.2 局部计算
我们用一个具体的例子来说明局部计算。比如,在超市买了2个苹果和其他很多东西。时,可以画出如图5-4所示的计算图。
假设总共花费4000日元。这里的重点是,各个节点处的计算都是局部计算。这意味着,例 如苹果和其他很多东西的求和运算(4000 + 200 → 4200)并不关心4000这个 数字是如何计算而来的,只要把两个数字相加就可以了。换言之,各个节点处只需进行与自己有关的计算(在这个例子中是对输入的两个数字进行加法 运算),不用考虑全局。
5.1.3 为何用计算图解题
使用计算图最大的原因是,可以通过反向传播高效计算导数。在介绍计算图的反向传播时,我们再来思考一下问题 1 。问题 1 中,我们计算了购买2 个苹果时加上消费税最终需要支付的金额。这里,假设我们想知道苹果价格的上涨会在多大程度上影响最终的支付金额,即求“支付金额关于苹果的价格的导数”。设苹果的价格为x ,支付金额为 L ,这个导数的值表示当苹果的价格稍微上涨时,支付金额会增加多少。反向传播传递“局部导数”,将导数的值写在箭头的下方。在这个例子中,反向传播从右向左传递导数的值(1 → 1.1 → 2.2)。从这个结果中可知,“支付金额关于苹果的价格的导数”的值是2.2。这意味着,如果苹果的价格上涨1日元, 最终的支付金额会增加2.2日元(严格地讲,如果苹果的价格增加某个微小值, 则最终的支付金额将增加那个微小值的2.2倍)。
这里只求了关于苹果的价格的导数,不过“支付金额关于消费税的导数”“支付金额关于苹果的个数的导数”等也都可以用同样的方式算出来。并且,计算中途求得的导数的结果(中间传递的导数)可以被共享,从而可以高效地计算多个导数。综上,计算图的优点是,可以通过正向传播和反向传播高效地计算各个变量的导数值。
5.2 链式法则
5.2.1 计算图的反向传播使用计算图的反向传播的例子。假设存在 y = f ( x ) 的计算。5.2.2 什么是链式法则
介绍链式法则时,我们需要先从 复合函数 说起。复合函数是由多个函数构成的函数。这就是链式法则的原理,乍一看可能比较难理解,但实际上它是一个非常简单的性质。5.2.3 链式法则和计算图
5.3 反向传播
5.3.1 加法节点的反向传播
5.5 激活函数层的实现
5.5.2 Sigmoid层
5.6 Affine/Softmax层的实现
5.7 误差反向传播法的实现
5.7.1 神经网络学习的全貌图
前提神经网络中有合适的权重和偏置,调整权重和偏置以便拟合训练数据的过程称为学习。神经网络的学习分为下面 4 个步骤。步骤1(mini-batch)从训练数据中随机选择一部分数据。步骤2(计算梯度)计算损失函数关于各个权重参数的梯度。步骤3(更新参数)将权重参数沿梯度方向进行微小的更新。步骤4(重复)重复步骤 1 、步骤 2 、步骤 3 。