CS231n 2016 通关 第四章-反向传播与神经网络(第一部分)
在上次的分享中,介绍了模型建立与使用梯度下降法优化参数、梯度校验,以及一些超参数的经验。
本节课的主要内容:
1==链式法则
2==深度学习框架中链式法则
3==全连接神经网络
=========================================================================================
1、链式法则
目前我们所处的阶段:

学习了SVM softmax两个模型或者算法,需要优化w》》梯度下降。
上述公式的计算图例:

由上述计算图可见,模型非常简洁,可以使用计算偏导的方式来优化参数,但是当模型非常大时,比如:
  
  
  
此时直接求偏导的方法不可行。
解决方法》》链式法则。
举例:

对具体函数用链式法则求导。首先进行前向计算。如上图。
求f对中间变量偏导:

求中间变量对初始变量的偏导,结合之前计算,得到f对初始变量的偏导》》链式法则
            
      
  
链式法则解释:
单一结点,输出值对输入变量的偏导:

计算此结点与下一节点,联合对输入变量的偏导:

多节点:

上述即为链式法则的过程。
实际例子:

可视化流程如上,其中已经实现了前向计算。
反向传播,首先计算最后节点:

倒数第二个节点:

按照上述方法,逐一反向计算:
      
  
达到分支时:
    
  
可以对某些步骤进行简化》》直接对某个表达式整体求导:

各种计算的链式计算以及代码结构:
加法:
    
  
乘法:

深度学习框架实现:
    
  
向量形式的链式法则:


向量形式链式法则举例:
问题:

问题:

此时的输出如f1只与x1相关,所以对应的雅克比行列式只有在对角线上有值,为0或者1.其余元素均为0.
由此可见,计算雅克比矩阵的方式不是很简洁。
总结:

=========================================================================================
2、神经网络 Neural Network
两层NN与线性函数对比:

之前的分类器得到的可视化:

可视化的结果显示,模型将某一类的特征训练调整到单一的w(向量或矩阵),此时的w混合了很多特点,比如颜色、形状。
而NN包含了很多隐藏层,隐藏层的某个节点对应相应的某个特征,比如颜色,方向等等。将隐藏层节点得到的特征抽象到输出,可以得出结果。
两层隐藏层:
      
代码实现:

其实就是层的叠加。
前向、反向传播代码结构:

具体细节在下一节课会涉及。
NN的生物学知识:

使用sigmoid作为激活函数。
神经系统中的树突如输入层到隐藏层节点的连接。轴突相当于隐藏层节点的输出与其他节点的连接。
代码实现(结构):

一些区别:

生物神经系统功能更复杂。
常用的激活函数:

根据模型特点以及计算的效果,选择不同的激活函数。其中ReLU、Maxout比较常用。
各个激活函数的特点在课程配套的笔记中有详细说明。之后会把总结好的笔记扫描、分享出来。
NN层数:
下图以2 3层网络为例,层数不计输入层,注意与UFLDL进行对比,UFLDL中计入了输入层:

前向传播代码结构:

前向传播实例:

关于NN的层数:

NN可以视为对飞线性函数的逼近》》证明可以逼近任何函数。
由上图可见,NN层数不同,分类的准确率也有差异,一般选取3层或以上的层数,并加入正则的方式。
当高于3层时,层数的增加并不能很好的改善最终的结果,甚至会产生过拟合。
cnn中层数较高表示抽象能力更强,希望较高的层数。
正则化强度对结果的影响:

可以通过选择合适的正则化强度系数控制过拟合结果。上图中看出较高的正则化强度系数使得分类界面更平滑。
=========================================================================================
总结:

下节课的内容:

附:通关CS231n企鹅群:578975100 validation:DL-CS231n
CS231n 2016 通关 第四章-反向传播与神经网络(第一部分)的更多相关文章
- CS231n 2016 通关 第四章-NN 作业
		
cell 1 显示设置初始化 # A bit of setup import numpy as np import matplotlib.pyplot as plt from cs231n.class ...
 - CS231n 2016 通关 第五章 Training NN Part1
		
在上一次总结中,总结了NN的基本结构. 接下来的几次课,对一些具体细节进行讲解. 比如激活函数.参数初始化.参数更新等等. ====================================== ...
 - Cs231n课堂内容记录-Lecture 4-Part1 反向传播及神经网络
		
反向传播 课程内容记录:https://zhuanlan.zhihu.com/p/21407711?refer=intelligentunit 雅克比矩阵(Jacobian matrix) 参见ht ...
 - CS231n 2016 通关 第六章 Training NN Part2
		
本章节讲解 参数更新 dropout ================================================================================= ...
 - CS231n 2016 通关 第三章-SVM与Softmax
		
1===本节课对应视频内容的第三讲,对应PPT是Lecture3 2===本节课的收获 ===熟悉SVM及其多分类问题 ===熟悉softmax分类问题 ===了解优化思想 由上节课即KNN的分析步骤 ...
 - CS231n 2016 通关 第三章-Softmax 作业
		
在完成SVM作业的基础上,Softmax的作业相对比较轻松. 完成本作业需要熟悉与掌握的知识: cell 1 设置绘图默认参数 mport random import numpy as np from ...
 - CS231n 2016 通关 第三章-SVM 作业分析
		
作业内容,完成作业便可熟悉如下内容: cell 1 设置绘图默认参数 # Run some setup code for this notebook. import random import nu ...
 - 第四章 跨平台图像显示库——SDL 第一节 与SDL第一次亲密接触
		
http://blog.csdn.net/visioncat/article/details/1596576 GCC for Win32 开发环境介绍(5) 第四章 跨平台图像显示库——SDL 第一节 ...
 - CS231n 2016 通关 第五、六章 Dropout 作业
		
Dropout的作用: cell 1 - cell 2 依旧 cell 3 Dropout层的前向传播 核心代码: train 时: if mode == 'train': ############ ...
 
随机推荐
- Android摄像头採集的视频数据流怎样通过Socket实时发送到目标服务端
			
分两块: 1.取得摄像头採集的视频流 2.发送到server端 protected MediaRecorder mMediaRecorder; private LocalServerSocket mL ...
 - 笔记08 WPF导航
			
如何在winform中做导航,如何重定向界面,就产生了争执. 是用window还是Page还是UserControl? 先不管用啥.我们先比较一下各自的优缺点. 在WPF中使用导航,内容被组织在Pag ...
 - Mtk Camera
			
MTK6577+Android之Camera驱动 http://blog.csdn.net/loongembedded/article/details/41695205 MTK Camera 开机启动 ...
 - kubernetes调度之资源耗尽处理配置
			
系列目录 本篇将介绍如何使用kubelet处理资源耗尽的情况 当可用的计算机资源非常低的时候,kubelet仍然要保证节点的稳定性.当处理不可压缩的计算机资源(比如内存或磁盘空间)时,这尤其重要,当这 ...
 - kubernetes集群管理命令(二)
			
系列目录 上一节我们介绍了一些基本的命令,这一节我们介绍一些更为复杂的命令. pod排序 使用kubectl get pod获取pod资源默认是以名称排序的,有些时候我们可能希望按其它顺序排序.比如说 ...
 - transient、volatile关键字
			
transient是在对象序列化的时候,不参与序列化的字段. 如LinkedList实现了Serializable,其中有变量transient int size = 0; 在Serializable ...
 - 【caffe-windows】 caffe-master 之 卷积核可视化(利用matlab)
			
此篇是利用matlab对caffemodel的卷积核进行可视化.只介绍了卷积核的可视化,不涉及特征图的可视化. 是参考此博客: http://blog.csdn.net/zb1165048017/ar ...
 - commons io上传文件
			
习惯了是用框架后,上传功能MVC框架基本都提供了.如struts2,springmvc! 可是假设项目中没有使用框架.而是单纯的使用jsp或servlet作为action,这时我们就能够使用commo ...
 - iOS中从零開始使用protobuf
			
让我们一起打开以下这个链接 https://github.com/alexeyxo/protobuf-objc 在github上有protobuf-objc,当中的readme能够教会我们安装prot ...
 - 基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案
			
一.方案介绍 1.1.方案背景 在2016年10月25日至28日的安博会上,我们看到了不少的幼教平台厂商,我们注意到大部分的幼教平台,为了追求极佳的用户体验,在微信或者APP端能够做到极快的打开速度, ...