深度学习_误差反向传播法

深度学习_误差反向传播法

参考书籍:深度学习入门_基于python的 理论与实现

  1. 正向传播:从计算图出发点到结束点的传播

  2. 反向传播:从计算图结束点到出发点的传播

  3. 局部计算:无论全局发生了什么,都能只根据与自己相关的信息输出接下来的结果

  4. 计算图优点:可以通过正向传播和反向传播高效地计算各个变量的导数值

  5. 加法节点的反向传播:加法节点的反向传播将上游的值原封不动地输出到下游

  6. 加法节点反向传播的具体例子
    深度学习_误差反向传播法_第1张图片

  7. 加法层的实现:forward()对应正向传播,backward()对应反向传播
    深度学习_误差反向传播法_第2张图片

  8. 乘法节点的反向传播:乘法的反向传播会将上游的值乘以正向传播时的输入信号的“翻转值”后传递给下游。翻转值表示一种翻转关系,正向传播时信号是x的话,反向传播时则是y;正向传播时信号是y的话,反向传播时则是x。

  9. 乘法节点反向传播的具体例子
    深度学习_误差反向传播法_第3张图片

  10. 乘法层的实现:forward()对应正向传播,backward()对应反向传播
    深度学习_误差反向传播法_第4张图片

  11. ReLU层
    (1)激活函数ReLU:
    深度学习_误差反向传播法_第5张图片
    (2)y关于x的导数:
    深度学习_误差反向传播法_第6张图片

(3)ReLU层的计算图:如果正向传播时的输入x大于0,则反向传播会将上游的值原封不动地传给下游。反过来,如果正向传播时的x小于等于0,则反向传播中传给下游的信号将停在此处
深度学习_误差反向传播法_第7张图片
(4)代码实现:变量mask是由True/False构成的NumPy数组,它会把正向传播时的输入x的元素中小于等于0的地方保存为True,其他地方(大于0的元素)保存为False
深度学习_误差反向传播法_第8张图片
12. Sigmoid层
(1)sigmoid函数:
在这里插入图片描述
(2)sigmoid层的计算图(仅正向传播)
深度学习_误差反向传播法_第9张图片
(3)Sigmoid层的计算图
深度学习_误差反向传播法_第10张图片
(4)Sigmoid层的计算图(简洁版)
深度学习_误差反向传播法_第11张图片
(5)Sigmoid层的计算图:可以根据正向传播的输出y计算反向传播
深度学习_误差反向传播法_第12张图片
(6)代码实现
深度学习_误差反向传播法_第13张图片
13. Affine层:神经网络的正向传播中进行的矩阵的乘积运算在几何学领域被称为“仿射变换",进行仿射变换的处理实现为“Affine层”。
(1)Affine层的计算图
深度学习_误差反向传播法_第14张图片
(2)Affine层的反向传播
深度学习_误差反向传播法_第15张图片
(3)批版本的Affine层的计算图
深度学习_误差反向传播法_第16张图片
(4)注意:正向传播时,偏置会被加到每一个数据(第1个、第2个……)上。因此,反向传播时,各个数据的反向传播的值需要汇总为偏置的元素
(5)代码实现
深度学习_误差反向传播法_第17张图片
14. Softmax-with-Loss 层
(1)输入图像通过 Affiffiffi ne层和ReLU层进行转换,10个输入通过Softmax层进行正规化。
深度学习_误差反向传播法_第18张图片
(2)Softmax-with-Loss层的计算图
深度学习_误差反向传播法_第19张图片
(3)“简易版”的Softmax-with-Loss层的计算图
深度学习_误差反向传播法_第20张图片
(4)图解:Softmax层将输入(a1, a2, a3)正规化,输出(y1, y2, y3)。Cross Entropy Error层接收Softmax的输出(y1, y2, y3)和教师标签(t1, t2, t3),从这些数据中输出损失L。Softmax层的反向传播得到了(y1 − t1, y2 − t2, y3 − t3)的结果,由于(y1, y2, y3)是Softmax层的输出,(t1, t2, t3)是监督数据,所以(y1 − t1, y2 − t2, y3 − t3)是Softmax层的输出和教师标签的差分。
(5)总结:神经网络学习的目的就是通过调整权重参数,使神经网络的输出(Softmax的输出)接近教师标签。因此,必须将神经网络的输出与教师标签的误差高效地传递给前面层(y1 − t1, y2 − t2, y3 − t3)正是Softmax层的输出与教师标签的差,直截了当地表示了当前神经网络的输出与教师标签的误差。
(6)Softmax-with-Loss层的实现
深度学习_误差反向传播法_第21张图片
15. 梯度确认:确认数值微分求出的梯度结果和误差反向传播法求出的结果是否一致(严格地讲,是非常相近)的操作称为梯度确认(gradient check)。
16. 注意:通过将神经网络的组成元素实现为层,可以高效地计算梯度(反向传播法)。

你可能感兴趣的:(深度学习,深度学习)