反向传播算法
本文是根据深度学习课程图文做的笔记
0. 背景
-
简单深度学习模型的基本流程:
1. 定义模型 2. 读入数据 3. 给出损失函数f 4. 梯度下降法更新参数(手动求梯度、pytorch自动求导)
对于复杂模型,如100层网络,该怎么解决呢?
⭐反向传播算法
- 自动求导的本质就是反向传播算法
- 反向传播算法是一个有效求解梯度的算法,本质是链式求导法则的应用
1. 链式法则
利用链式求导法则:令 q=x+y
它们的微分:
又因为 q = x +y
则:
链式法则/反向传播算法
的核心:
如果需要对式子中元素求导,可以一层一层的求导然后将结果相乘
2. 反向传播算法
反向传播算法是链式法则的应用
q = x + y f = qz
绿色:数值 红色:求出的梯度
从最后开始的梯度是1 :从后往前
f 对 q 和z 进行求导
接下来利用链式法则,q对x和y求导
反向传播算法:每次求导只对当前的运算求导
求解每层网络的参数都是用链式法则将前面的结果输出迭代到这一层,即一个传播的过程
3. Sigmoid函数示例反向传播的过程
需要求解: