deeplearn学习笔记 cs224n lecture5

Lecture 5
反向传播
Overview:
1.从一层到多层神经网络
2.全向量梯度计算
3.反向传播算法
为什么要用多层?
神经网络表示更多的特征
能用更好的结果
随机梯度下降
更新公式
如何计算损失函数的梯度
1.手算
2.用反向传播算法
为什么要学习梯度的所有细节?
1.现代的深度学习框架为你计算框架
2.但是为什么要在为您实现编译器或者系统时使用类呢?
了解什么是瓶颈很重要
3.反向传播不会总是工作完美的。
明白这些对于debug和改进算法是至关重要的。
一些例子。
快速手动计算梯度
复习多变量求导
完全矢量梯度
比非矢量化的梯度计算更快更用
但是做一个非矢量的梯度可是是很好的实践。
课堂讲稿更详细地介绍了这一材料
梯度
雅克比矩阵
链式法则同样适用于雅克比矩阵
雅克比矩阵的定义
其他雅克比矩阵
有用的雅克比矩阵
利用有用的雅克比矩阵进行计算
雅克比矩阵 梯度的形状就是参数的形状
计算完后有两点需要注意
1.尽量适用雅克比矩阵,在最后按照约定重构
2.遵守公约,注意维度问题
另外
1.不要担心你使用了其他方法在梯度下降中。
2.这节课我们计算了分数的梯度,之前我们计算的是loss
3.不要忘记替代实际的导数
反向传播
1.用算法计算梯度
2.我们把刚才的做法转化成算法。
3.使用deeplearn框架,如tensorflow,PyTorch
利用计算图将我们刚才的想法转化成算法
每个节点都有上游梯度和下游梯度
每个节点都有本地梯度
这里的梯度遵守链式法则
下游梯度 = 上游梯度 * 本地梯度
具体的操作在word
【deeplearn学习笔记 cs224n lecture5】总结:
反向传播:递归的在计算图上利用链式法则
向前计算:计算操作结果并保留中间结果
反向:应用链式法则计算梯度

    推荐阅读