05 深度学习之误差反向传播法
1.引入误差反向传播发目的
虽然数值微分虽然简单,也容易实现,但缺点是计算上比较费时间。因此引入误差反向传播法,能够高效计算权重参数的梯度。
2.理解方法
(1)基于数学式
这种方法严密且简洁,所以确实非常合理,但如果一上来就围绕数学式进行探讨,会忽略一些根本的东西,止步于式子的罗列。
(2)基于计算图
通过计算图,可以直观地理解误差反向传播法。
3.用计算图解题的步骤
第一步:构建计算图。
第二步:在计算图上,从左向右进行计算。
4.正向传播(forward propagation)
正向传播是从计算图出发点到结束点的传播。
5.反向传播(backward propagation)
反向传播将在接下来的导数计算中发挥重要作用。
加法节点的反向传播

乘法节点的反向传播

6.计算图的特征
层的实现中有两个共通的方法(接口)forward()和backward()。forward()对应正向传播,backward()对应反向传播。
乘法节点称为“乘法层”(MulLayer)

加法节点称为“加法层”(AddLayer)

7.激活函数层的实现
(1)激活函数 ReLU(Rectified Linear Unit)
函数式

计算图表示



简化输出

8.Affine/Softmax 层的实现
(1)仿射变换
神经网络的正向传播中进行的矩阵的乘积运算在几何学领域被称为“仿射变换”,将进行仿射变换的处理实现为“Affine 层”。
(2)Affine层的计算图



(3)批版本的Affine层

9.Softmax-with-Loss层


神经网络中进行的处理有推理(inference)和学习两个阶段。神经网络的推理通常不使用 Softmax 层。神经网络中未被正规化的输出结果有时被称为“得分”也就是说,当神经网络的推理只需要给出一个答案的情况下,因为此时只对得分最大值感兴趣,所以不需要 Softmax 层。不过,神经网络的学习阶段则需要Softmax 层。

10.学习算法的实现
步骤 1(mini-batch)
从训练数据中随机选出一部分数据,这部分数据称为mini-batch。我们的目标是减小mini-batch的损失函数的值。
步骤 2(计算梯度)
为了减小mini-batch的损失函数的值,需要求出各个权重参数的梯度。梯度表示损失函数的值减小最多的方向。
步骤 3(更新参数)
将权重参数沿梯度方向进行微小更新。
步骤 4(重复)
重复步骤1、步骤2、步骤3。
11.梯度确认
确认数值微分求出的梯度结果和误差反向传播法求出的结果是否一致的操作称为梯度确认。

