任务时长:12/13任务标题:学习反向传播学习任务:
1.先观看老师录制的第四讲导学视频,简单了解斯坦福231n中第四讲所讲内容
2.观看斯坦福CS231n第四讲课程(反向传播部分)任务详解:
第四讲:介绍神经网络
9反向传播
计算复杂函数的梯度
- 使用计算图表示复杂的函数,然后使用链式求导法则求变量的导数(对于简单的复合含数 足够熟悉求求导步骤之后没必要画计算图,但对于复杂的函数画计算图计算梯度的反向传播会更清晰
举例子求复合函数的导数
- 计算图的优点就是对于很复杂的函数,可以使用反向传播和链式法则求任何我们需要计算的梯度值
Sigmoid函数求导
Add门,Max门(梯度路由器),Mul门(梯度交换器)
- 梯度在分支汇合的地方会相加
- 向量的梯度与标量有什么不同( 梯度变成了雅克比矩阵)
- F(x)=Wx的求导
- 乘法运算的前向传播反向传播的api
caffe深度学习框架
- Caffe使用了前向传播和反向传播的框架来定义
- Eg:Caffe中sigmoid convolutional 层的定义
总结:神经网络非常复杂和庞大,计算每一个变量的导数写下来是不现实的,所以使用反向传播算法计算,反向传播是神经网络的核心技术。
Ps:计算图 梯度方向传播,链式求导法则 Add门,Max门,Mul门对梯度进行的操作 向量的梯度与标量有什么不同
2017版CS231n课程学习视频B站参考学习地址:p4:Introduction to Neural Networkhttps://www.bilibili.com/video/av13260183?p=4(反向传播部分)
老师第四讲导读视频打卡内容:
1. 什么是计算图 ,画出函数(x+y)z的计算图
1.1计算图被定义为有向图,其中节点对应于数学运算。 计算图是表达和评估数学表达式的一种方式。
1.2函数g=(x+y)z的计算图:
计算图 - 深度学习™www.yiibai.com
2. 写出g=(x+y)z的链式求导公式
目标:
令q=(x+y)
所以:
3. 写出课程中反向求梯度的例子 (w0*x0+w1*x1+w2)
4. sigmoid求导 向量的梯度与标量的梯度有什么不同 F(x)=Wx的求导
sigmoid求导:
sigmoid求导向量梯度:jacobian matrix
标量梯度:表达式
5. 编写x*y forward backward函数并运行
class MultiplyGate(object):def forward(self,x,y):z=x*yself.x=xself.y=yreturn zdef backward(self,dz):dx = self.y*dzdy = self.x*dzreturn [dx,dy]
作业提交形式:
截图(不少于1张图片)和学习笔记(可以是图片、文字、或者博客链接形式等)打卡截止时间:12/13