CS231n系列课程Lecture4:Backpropagation and Neural Networks(part 1)

先贴出课程链接: http://pan.baidu.com/s/1cBznv4 密码: 7nbg

课程开始回顾了一下得分函数,SVM loss, data loss + regularization,还有optimization,常用的方法就是Gradient Descent,梯度下降,数值梯度存在速度慢,求得的是近似解的问题,但是代码比较好写。解析梯度使用的是微积分的方法,速度快,很精确,但是代码稍微复杂一些。通常在构建网络求解析梯度时,可以先用数值梯度进行检验,确保梯度求解正确的条件下,把数值梯度检验去掉(因为速度真的很慢),进行计算。

这节课主要讲到的是Backpropagation(反向传播)

CS231n系列课程Lecture4:Backpropagation and Neural Networks(part 1)_第1张图片

这部分在课程中讲的还是比较清晰的,这里就提出原课程的PPT,如上图所示,我们可以先定义一个f函数,函数定义见PPT,通过PPT右侧的流程图可以看到,当x=-2,y=5,z=-4的函数表达式计算出来的结果。计算出f=-12,当f对f求导时是恒等式为1,那f对z求导,我们可以通过微积分的只是知道为q,通过定义式q=x+y=3,说明如果我们在q上增加一个增量h,结果会增加3h,即q对f的影响是正影响。同理对q求导得到z,z=-4,得到的是负值,说明z对f的影响是负的,也就是说z上增加一个h,结果会减少4h。

CS231n系列课程Lecture4:Backpropagation and Neural Networks(part 1)_第2张图片

使用链式法则就可以求出原始输入对最终结果f的影响。这个应该蛮好理解的。链式法则一个最主要的公式:全局梯度×局部梯度。整个课程的前半部分都是在使用这个公式。

CS231n系列课程Lecture4:Backpropagation and Neural Networks(part 1)_第3张图片

这是课程中举的另外一个例子,采用的也是链式法则,PPT中已经把求导规则列出来了,这个感兴趣的小伙伴可以自行推导一下,

值得注意的是这边我们使用的激活函数是Sigmoid函数,也就是S门。这部分的求导我就不赘述了。在之前的例子我们都是用的是标量进行求导,其实可以进行向量化计算,这样表达式会很简便,向量化计算要使用Jacobian矩阵,这部分知识自行查阅吧。

CS231n系列课程Lecture4:Backpropagation and Neural Networks(part 1)_第4张图片

第二部分主要讲的就是神经网络,先贴出一张脑神经的图

CS231n系列课程Lecture4:Backpropagation and Neural Networks(part 1)_第5张图片

CS231n系列课程Lecture4:Backpropagation and Neural Networks(part 1)_第6张图片

首先我们先把之前对脑神经的印象排除掉,回想之前讲过的线性分类器,可以看到如果是两层的神经网络,其实就是把之前线性分类函数得到的结果通过激活函数筛选后,再进行一次线性计算。这里要注意的是设置的神经元个数可以相同也可以不相同,这是根据工程的需要来进行选择的,现在对神经网络来说,是网络越宽越好还是网络层数越深越好还没有特定的结论,只能说针对不同的任务,设计的网络肯定是不太相同的。

什么叫激活函数?激活函数有哪些呢?

CS231n系列课程Lecture4:Backpropagation and Neural Networks(part 1)_第7张图片

这里先贴出激活函数的几种常见类型,具体特性如何且听下回分解啦O(∩_∩)O

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