读书笔记 | 《深度学习入门:基于Python的理论与实现》| (3)

1. 简介 高效计算 权重参数的梯度 的方法 -> 误差反向传播法 2. 计算图

2.1 用计算图求解

问题1

问题2

太郎在超市买了2个苹果、3个橘子。
其中,苹果每个100日元,橘子每个150日元。
消费税是10%,请计算支付金额。

计算图解题 流程

1
2
3
4
5
6
1.构建计算图

2.在计算图上,从左向右进行计算 ->
正向传播(forward propagation) ->
反向(从图上看的话,就是从右向左)的传播 ->
反向传播(backward propagation)

2.2 局部计算

各个节点处只需进行与自己有关的计算 计算图将复杂的计算 分割成简单的 局部计算,
和流水线作业一样,
将局部计算的结果传递给下一个节点。

2.3 为何用计算图解题

使用计算图最大的原因是, 可以通过反向传播高效计算导数 苹果价格 的上涨 会在多大程度上 影响 最终的 支付金额 ? 求“支付金额关于苹果的价格的导数” 通过 计算图的反向传播 求导数 3. 链式法则

3.1 计算图的反向传播

3.2 什么是链式法则

链式法则 是 关于 复合函数 导数的性质 若 某函数 由 复合函数表示,
则该 复合函数 的导数
可用构成复合函数的各个函数
的导数的乘积表示 复合函数求导-》层层求导,外层×内层 反向传播 基于 链式法则

3.3 链式法则和计算图

4. 反向传播 反向传播 基于 链式法则

4.1 加法节点的反向传播

4.2 乘法节点的反向传播

乘法的反向传播会乘以输入信号的翻转值,
所以
各自可按
1.3 × 5 = 6.5、1.3 × 10 = 13
计算。

4.3 苹果的例子

此问题 相当于 求:
    支付金额关于苹果的价格的导数 支付金额关于苹果的个数的导数 支付金额关于消费税的导数

用计算图 反向传播 实现 求导

由图可知 苹果的价格的导数是2.2 苹果的个数的导数是110 消费税的导数是200

练习:购买苹果和橘子

注意:中间有 加法运算 5. 简单层的实现 把要实现的计算图的
乘法节点称为“乘法层”(MulLayer),
加法节点称为“加法层”(AddLayer)

5.1 乘法层的实现

5.2 加法层的实现

6. 激活函数层的实现

6.1 ReLU层

ReLU(Rectified Linear Unit) 若正向传播时的输入x大于0,
则反向传播会将上游的值原封不动地传给下游 若正向传播时的x小于等于0,
则反向传播中传给下游的信号将停在此处

6.2 Sigmoid层

计算图

反向传播 流程

步骤1

反传时,将上游值 乘以 -y^2
(正向传播的输出的平方 乘以 -1 后的值)后的值,
再传给下游

步骤2

步骤3

步骤4

“×”节点将正向传播时的值翻转后做乘法运算。
因此,这里要乘以−1

Sigmoid层的计算图

7. Affine/Softmax层的实现

7.1 Affine层

    几何中,仿射变换包括一次线性变换和一次平移,分别对应神经网络的加权和运算与加偏置运算。
矩阵为对象的反向传播: 计算图的反向传播: Q&A 补充 参考 感谢帮助! 《深度学习入门:基于Python的理论与实现》[日]斋藤康毅 著、 陆宇杰 译