斯坦福大学-李菲菲,深度学习10-13课时听课笔记
神经网络训练细节part1
第十课时:
(前3行是第9课时的内容)
最少使用3个神经元可以完成2类点的分类
神经网络越多越好,但要加入适当正则化,防止过拟合
L-BFGS是神经网络小的时候的一种优化算法(mini-batch)
Mini-batch SGD 过程
1.从训练集中抽样出一小部分数据
2.将数据运入卷积神经网络中计算损失值
3.通过反向传播确定梯度
4.最后通过梯度值来微调权值得数值
1960年,感知机的出现
Sigmoid的函数值要么是1要么是0,这些神经元会导致在反向传播算法中出现梯度趋于0的问题,
这就是梯度消失问题,并且Sigmoid函数不是关于原点对称的,w可能出现全正或者全负,如果
训练数据不是关于原点对称的,那么收敛的速度会很慢,计算时间比较高
tanh函数,(-1,1),关于原点对称,但是梯度仍然可能饱和,所以依然没有解决梯度消失问题
ReLU,效果很好,收敛快,不会饱和,称之为ReLU神经网络或者修正线性单元(Rectified linear unit)
缺点是也不是关于原点对称的,在输入小于0,会发生梯度消散的问题,正向传播的过程中,输入为正
就传播梯度,输入为负杀掉梯度.会出现dead RELU。
Leaky ReLU f(x)=max(0.01x,x),不会出现神经元失活的情况。
ELU,指数线性单元
Maxout函数,max(w_{1}^{T}x+b1,w_{2}^{T}x+b2)
TLDR均值中心化处理,数据是32乘以32乘以3的CIFAR图像,最后会得到32*32*3的均值图像
减去单通道的均值也是一种输入图像处理的方式
权重初始化,初始化的权值w选择不当会造成梯度消散,"Xavierinitialization"用于Tanh有比较好的结果
对RELU函数使用Xavire,需要考虑均值会变成一半的问题,下面不给出Xavire在这两个情况下的不同的表达式
(1)tanh:W=np.random.randn(fan_in,fan_out)/nq.sqrt(fan_in);
(2)ReLU:W=np.random.randn(fan_in,fan_out).nq.sqrt(fan_in/2);
第十一课时:
Batch Normalization:批量标准化,解决的问题是梯度消失和梯度爆炸
BN层的学习:http://blog.csdn.net/fate_fjh/article/details/53375881
BN函数的本质是个恒等函数,但是在开始的阶段是不等的,通过训练和学习之后就会相等
BN算法增强了整个神经网络的梯度流,它支持更高的学习速率,所以你可以更快的训练模型,这个降低了对初始化的依耐性
超参数优化:https://zhuanlan.zhihu.com/p/27905191
随机取样,网格搜索(基本不会用),适当的时候使用对数空间
神经网络训练细节part2
第十二课时:
BP神经网络的基础学习:http://blog.csdn.net/acdreamers/article/details/44657439
补救SGD垂直进展快的方法,使用动量更新,他可以理解为一个球滚动着接近中间,在这个情况下的梯度可以视作一种动力,物理学中的这种力量,就相当于加速度,而mu倍的v相当于摩擦力。
动量更新
这个v是可以等于0的
Nesterov动量更新
我没怎么懂。。看这个博客吧http://blog.csdn.net/luo123n/article/details/48239963
AdaGrad更新
由凸优化理论发展而来的,然后被移植到了神经网络中,他的实现和一些基本的随机梯度下降的形式是一样的,我们用附加变量来放缩梯度,我们在不停地增加这一附加变量。这里的cache在这里由梯度的平方和构成,他一定是正数。变量cache是一个联合矢量,他和你的主向量是一样大的,因此cache在每一个维度计算其相应的梯度的平方和,我们有时称他为第二moment,我们将这些cache构造起来,然后逐项用这一函数除以cache的平方,这就是人们称他为每个参数自适应学习速率的方法的原因。因为参数空间的每一维,都有自己的学习速率,他会根据梯度的规模大小而动态的变化。le-7是一个平滑因子,一个超参数,防止除数变为0
问题:我们长时间训练,不断有正数加到分母的cache变量中,更新步长就会逐渐衰减到0,最后完全停止学习
改进:其主要思想是不再是在每一维度计算平方和而是变成一个泄漏的变量,最后我们利用衰减率这个超参数
Adam更新
一个动量m表示的是梯度的一阶矩,把他用指数和展开的形式表示。adagrad记录的是梯度的二阶矩,并按指数和形式表示,然后就得到Adam的更新了。可以从另一个角度来理解他,通过小批量抽样处理,在前向传播中你会得到很多随机值,你会得到这些带有噪声的梯度。所以相比于在每一步都用各自梯度值运算,我们实际上是利用前面几个梯度的衰减和,这样能稳定梯度方向,这就是动量的作用。放缩的作用是确保梯度大和梯度小的方向步长相关。
本课总结了对于不同超参数更新方法和学习速率衰减公式的讨论
第十三课时:
集成模型
随机失活,在你进行神经网络前向传播的时候,你要随机的把一些神经元置零。计算每个隐藏层的激活函数,然后随机挑选出一半神经元失活。在反向传播中也要进行随机失活 可以防止过拟合,因为如果我们只用网络的一半的话,他的表达能力就小了很多,我们每次只用一半网络的话,我们就能相对减少在训练中涉及到的变量数(从而减少过拟合的概率)
另一种解释是随机失活可以被视为训练一个由很多小模型集成而成的大模型。每一个子网络都是原来大网络的一个子网络,但是原网络和子网络之间并不能很好的分享参数。我们在前向传播的时候,随机失活一些,在反向传播过程中,我们也要经过这些掩模。在这时,只有那些在前向传播过程中,我们用到的没有失活的神经元的参数或者说经过这些神经元的梯度才会被更新。所以,在随机失活这个过程中,其实只是训练了一个在某一次取样中,选择的原网络的一部分。换句话说,每一个二进制掩模(随机失活后的网络)都是一个新模型,他只会被一个数据训练一次。
当你失活一个神经元的时候,他的权值也就不更新了,如果我们取样了网络的一部分,我们只会用一个数据点来训练这个子网络(因为每次循环中都有新的子网络)。每次我们都会用网络不同的部分来训练,但是他们之间都会有相同的参数(两次取样没有失活的部分),也就是说在多次循环中我们会用相同的数据点来训练不同的有共同参数的模型,这就是随机失活大概的意思。
如果想要更强的正则化,则可以失活更多的神经元。
斯坦福大学-李菲菲,深度学习10-13课时听课笔记相关推荐
- 资源 | 斯坦福大学Tensorflow深度学习课程表
导读 | 孟岩 现在学习 AI,特别是上手深度学习,已经清楚的出现了两条路子. 一条以理论为中心,扎扎实实从数学基础开始,把数据科学.机器学习大基础夯实,然后顺势向上学习Deep Learning,再 ...
- 深度学习-10:人工智能简史及三剑客
深度学习-10:人工智能简史及三剑客 深度学习原理与实践(开源图书)-总目录 1 人工智能简史 深度学习理论的突破和深度学习硬件加速能力的突破,使AI在模式识别.无人驾驶.智力游戏领域取得空前的成功. ...
- 动手学深度学习10:汇聚层(pooling)
动手学深度学习10:汇聚层(pooling) 通常当我们处理图像时,我们希望逐渐降低隐藏表示的空间分辨率.聚集信息,这样随着我们在神经网络中层叠的上升,每个神经元对其敏感的感受野(输入)就越大. 而我 ...
- 深度学习实战13(进阶版)-文本纠错功能,经常写错别字的小伙伴的福星
大家好,我是微学AI,我们在日常生活中,经常会写一些文稿,比如:会议纪要,周报,日报,汇报材料,这些文稿里我们会发现有时候出现拼写.语法.标点等错误:其中拼写错误的错别字占大部分. 经过初步统计:在微 ...
- Yann Lecun纽约大学《深度学习》2020课程笔记中文版,干货满满!
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]Yann Lecun在纽约大学开设的2020春季<深度学习>课 ...
- 深度学习(10):自然语言处理(转)
切换站点概览 目录 你已经读了46% 1. 词嵌入 2. 词嵌入方法 2.1. 神经概率语言模型 2.2. Word2Vec 2.3. GloVe 3. 词嵌入应用:情感分类器 4. 词嵌入除偏 5. ...
- ScalersTalk 机器学习小组第 21 周学习笔记(深度学习-10)
ScalersTalk 机器学习小组第 21 周学习笔记(深度学习-10) Scalers点评:机器学习小组是成长会的内部小组,这是成长会机器学习小组第21周学习笔记,也是深度学习第10次的复盘笔记 ...
- 神经网络与深度学习 Class 13:卷积神经网络
目录 13.1 深度学习基础 13.2 图像识别与深度学习 13.3 图像卷积 13.4 卷积神经网络 13.1 深度学习基础 特征工程:尽可能选择和构建出好的特征,使得机器学习算法能够达到最佳性能 ...
- 干货 | 《深度学习》手推公式笔记开源PDF下载!
为大家找到的王博(Kings)的<深度学习>手推公式笔记,需要的伙伴可以在公众号"飞马会"菜单栏回复数字"91"查看获取方式. 深度学习手推笔记部分 ...
- 深度学习超分辨率综述阅读笔记(翻译)
深度学习超分辨率综述阅读笔记(翻译) https://arxiv.org/abs/1902.06068 摘要:图像超分辨率(SR)是计算机视觉中增强图像和视频分辨率的一类重要图像处理技术.近几年来,图 ...
最新文章
- 计算机应用基础上机操作,计算机应用基础上机操作试题
- 137% YOLOv3加速、10倍搜索性能提升!百度飞桨推出模型压缩神器
- 浅析新站SEO和老站优化推广有哪些区别?
- 抽象类可用于创建对象吗_野芝麻,见过吗?可用于肺热咳血、血淋、跌打损伤...
- 银行应用_讲解人脸识别在银行的应用
- jest java_✅使用jest进行测试驱动开发
- python脚本编程100例_python100例,python经典例题
- 网络之DNS协议图解
- Java安全之数字证书
- jni开发-GetMethodID与CallObjectMethod的坑
- ajax后台重定向会返回什么_处理jquery ajax重定向
- 硬核教程 - 使用Rust编写网游FPS外挂辅助
- 需求分析模板_如何进行培训需求分析?
- Centos7 无线网络设置
- Spring cloud网关gateway代理websocket报Max frame length of 65536 has been exceeded
- Arcgis经纬线标注设置(英文、刻度显示)
- 微信小程序中使用emoji表情相关说明
- Spatial Attention
- CSS的世界(十四)
- 低空急流负风切变对风机的影响