【dlbook】优化
【神经网络优化的挑战】
一、病态:
虽然学习率很小,而且梯度大,但是由于Hessian阵的病态,二次项比一次项还要大,梯度下降事实上并不一定能下降,反而有可能上升。因此需要将学习率调低。
表现:梯度很强,但是学习很缓慢,因为曲率太强
二、局部最小值:
由于权重空间对称性,神经网络有很多局部极小值。
是否存在大量代价高的局部极小值,优化算法是否会碰到,都尚未解决。
梯度范数是否能收缩到一个微小的值。
三、鞍点:
鞍点是更加现实的问题!局部最小值是全正,鞍点是有正有负。
牛顿法会陷入鞍点,二阶算法通常难以扩大到大型神经网络。
四、悬崖和梯度爆炸:
常见于循环神经网络,
斜率较大区域,由于几个较大的权重相乘。使得导数巨大,梯度下降会使参数弹射的非常远,之前的优化就成为无用功。
五、梯度爆炸和梯度消失:
常见于循环神经网络或者很深的神经网络。
如果一个矩阵经过多次相乘运算,而其特征值 > 1。最终特征值会趋于无穷,表现出悬崖的特征,即梯度爆炸。如果特征值小于1,会趋于0,显示为梯度消失,不知道向哪个方向移动。
比较好的方式是记录每个梯度值!
六、非精确梯度
梯度估计是一个常见的问题,需要基于采样来估计,采样通常有噪声。
七、局部与全局弱对应
没有全局的优化算法。
主要是在低维度的时候会达不到局部最优。
高维度能够达到,但是路径可能会比较长。
【基本算法】
SGD:
lr需要逐步衰减,一般使用的是线性衰减,
动量:
v = alpha v - epsilon 梯度
theta = theta + v
解决问题1:Hessian矩阵的病态条件
解决问题2:随机梯度的方差
实践中,动量alpha的取值一般为 0.5 , 0.9 , 0.99, 应当随着时间变大。但是扩大动量alpha 没有收缩学习率 epsilon重要。
Nesterov动量
梯度计算时使用参数为 theta + alpha v,也就是提前计算动量的梯度
在批量梯度下降(使用所有样本更新)的表现比动量算法好,但是在随机梯度的情况下并没有改善收敛率
【参数初始化】
权重初始化
需要在不同单元之间破坏对称性、如果连接相同的输入,必须有不同的初始参数。
一般是高斯或者均匀分布,这两种似乎没有很大差别,但没有研究证实。
初始权重方差是重要的。更大的权重可以更好的破坏对称性,避免冗余单元,更好传播信息,但是容易在前向或者反向传播中产生爆炸的值。
优化希望初始权重大,更好的传播信息,正则化希望初始权重更小,
如果计算资源允许,可以将初始数据范围设置为超参数。
偏置初始化
通常可以简单设置为0,以下是例外:
1、偏置作为输出单元,
2、避免初始化引起太大饱和,例如ReLU不设置为0而是0.1
3、一个单元控制其他单元能否参与等式,
【自适应学习率算法】
Adagrad
不同模型参数具有不同的学习率!
缺陷:从训练开始进行累积会导致学习率过早过量减小,更多适用于凸优化!
RMSProp
相比较Adagrad,在非凸设定下效果更好,从梯度累积转变为指数加权的移动平均。
实现指数加权的方式是与动量相近,动量的值一般设成
有效且使用,是经常采用的优化方法。
Adam
一阶矩和二阶矩综合使用,对超参数的选择相当鲁棒,但是需要修改一下建议的学习率。
【二阶算法】
待续
【dlbook】优化的更多相关文章
- 关于DOM的操作以及性能优化问题-重绘重排
写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...
- In-Memory:内存优化表的事务处理
内存优化表(Memory-Optimized Table,简称MOT)使用乐观策略(optimistic approach)实现事务的并发控制,在读取MOT时,使用多行版本化(Multi-Row ve ...
- 试试SQLSERVER2014的内存优化表
试试SQLSERVER2014的内存优化表 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据库管理系统,而使用先进内存技 ...
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- 03.SQLServer性能优化之---存储优化系列
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概 述:http://www.cnblogs.com/dunitian/p/60413 ...
- 前端网络、JavaScript优化以及开发小技巧
一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...
- 数据库优化案例——————某市中心医院HIS系统
记得在自己学习数据库知识的时候特别喜欢看案例,因为优化的手段是容易掌握的,但是整体的优化思想是很难学会的.这也是为什么自己特别喜欢看案例,今天也开始分享自己做的优化案例. 最近一直很忙,博客产出也少的 ...
- 【前端性能】高性能滚动 scroll 及页面渲染优化
最近在研究页面渲染及web动画的性能问题,以及拜读<CSS SECRET>(CSS揭秘)这本大作. 本文主要想谈谈页面优化之滚动优化. 主要内容包括了为何需要优化滚动事件,滚动与页面渲染的 ...
- Web性能优化:What? Why? How?
为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...
随机推荐
- 【分库分表】sharding-jdbc—分片策略
一.分片策略 Sharding-JDBC认为对于分片策略存有两种维度: 数据源分片策略(DatabaseShardingStrategy):数据被分配的目标数据源 表分片策略(TableShardin ...
- APP开放接口API安全性——Token令牌Sign签名的设计与实现
在APP开放接口API的设计中,避免不了的就是安全性问题. 一.https协议 对于一些敏感的API接口,需要使用https协议.https是在http超文本传输协议加入SSL层,它在网络间通信是加密 ...
- # 20145314《信息安全系统设计基础》期中复习总结 Part B
20145314<信息安全系统设计基础>期中复习总结 Part B 学习知识点内容总结 复习线索:http://group.cnblogs.com/topic/73069.html 本周的 ...
- Java学习笔记-方法引用
方法引用(Method Reference) 上一篇中记录了Lambda表达式,其可以创建匿名方法.当Lambda表达式只是调用一个存在的方法时,可以采用方法引用(JDK8具有的特性).如下: pub ...
- 重新想,重新看——CSS3变形,过渡与动画④
最后,我们来探讨一下CSS3的动画属性. 之前提到过,实际上过渡也算作动画的一种.但过渡作为动画的缺陷在于,只能使元素属性从一个值“过渡”至另一个值,但如果想要使元素的属性值根据需要在时间轴上不断变化 ...
- python使用百度api翻译中英文
python使用百度api翻译中英文 写程序取变量名的时候,常常需要翻译单词,或者将中文翻译成英语.有道词典,必应词典都很好,可是...命令行习惯了还是觉得用在cmd里面调出程序使用起来也许会更爽.于 ...
- mysql参数及解释
key_buffer_size:(global.Dynamic)#*** MyISAM 特有的选项.即使你不使用 MyISAM 表,你仍应该将它设置为 8-64M,因为它也被用于内部的临时磁盘表.这个 ...
- 【论文解析】MTCNN论文要点翻译
目录 0.论文连接 1.前言 2.论文Abstract翻译 3.论文的主要贡献 4.4 训练 5 模型性能分析 5.1 关于在线挖掘困难样本的性能 5.2 将人脸检测与对齐联合的性能 5.3 人脸检测 ...
- 秒懂算法3——插入排序(C#实现)
算法思路: 将n个元素分成[已排序]和[未排序]两部分.每次将[未排序]中的一个元素取出,插入到已排序中的相应位置.直至所有元素排序完毕. [已排序] [未排序] { { a[0] } ...
- HttpServletRequest request方法详解
//1.获取请求参数 //获取参数的单个值,如有多个则只返回第一个 String parameter1 = request.getParameter("demo"); //获取参数 ...