机器学习要点(一):梯度相关

梯度消失与爆炸

本质原因:梯度反向传播时,由于连乘造成的现象。网络训练的时候,采用的反向传播方式,该方式背后其实是链式求导,计算每层梯度的时候会涉及一些连乘操作,因此如果网络过深,那么如果连乘的因子大部分小于1,最后乘积可能趋于0;另一方面,如果连乘的因子大部分大于1,最后乘积可能趋于无穷。这就是所谓梯度消失与梯度爆炸。

 

具体原因:

1、使用sigmoid激励函数,sigmoid激励函数容易发生梯度消失现象,是由于他的导数最大为1/4。

2、学习率过大或过小。

3、初始权重过大或过小

 

防止梯度爆炸:

设置梯度剪切阈值 gradient_clipping_threshold, 一旦梯度超过改值,直接置为该值,或者同比收缩。

 

防止梯度消失:

1、使用ReLU、maxout替代sigmoid

2、batch normalization(加在relu前面)

3、使用LSTM能避免RNN的梯度消失

4、使用残差网络

 

ReLU

ReLU的优点:

1、防止梯度消失,sigmoid在两端会饱和,梯度消失

2、线性运作,计算量小,收敛速度快,sigmoid等计算复杂,指数运算

3、有利于特征稀疏化,de-active部分为0,减少了参数的相互依存关系,缓解了过拟合问题的发生。


ReLU的缺点: 

随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新。这种现象被称为“神经元死亡”。ReLU还经常被“诟病”的一个问题是输出具有偏移现象,即输出均值恒

大于零。偏移现象和 神经元死亡会共同影响网络的收敛性。


ReLU dying问题(也被称为“神经元死亡”)

1、使用Leaky ReLU或Randomized Leaky ReLU,即f(x)=max(0,x)+min(0,x),a是由经验设定的小的非0常数,或随机的。

2、何凯明提出ParametricReLU,即f(x)=max(0,x)+min(0,x),a是可训练的参数,效果比1好

3、使用maxout,f(x)= max(wT1x+b1,wT2x+b2),ReLU 和 Leaky ReLU 都是它的一个变形,Maxout 具有 ReLU 的优点(如:线性运作计算简单,不会 saturation),同时又没有 ReLU 的一些缺点 (如:ReLU dying),但是有把参数double的缺点。

       

Batch normalization

关于Mini-batch:

减少了单次计算量,便于工程实现,单次epoch的迭代次数增加,且批次之间的梯度竞争有利于跳出局部最优解。但这种竞争消耗着效率,对于深层次模型来说,越底层,竞争越容易变成恶性竞争,乱了大局。

 

关于Batch normalization:

批规范化,使得输出具有均值为0,方差为1的分布。是一种全局调整,对每个批进行线性变换,使梯度具有可比性,弱化恶性竞争。

 

优点:

1、可以选择比较大的初始学习率。

2、可以不用去理会过拟合中drop out、L2正则项参数的选择问题。采用BN算法后,可以移除这两项了参数,或者可以选择更小的L2正则约束参数了,因为BN具有提高网络泛化能力的特性;

3、再也不需要使用使用局部响应归一化层了(局部响应归一化是Alexnet网络用到的方法,搞视觉的估计比较熟悉),因为BN本身就是一个归一化网络层;

4、可以把训练数据彻底打乱

 

TensorFlow使用:http://www.jianshu.com/p/0312e04e4e83?from=timeline

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值