深度学习优化

挑战:局部最优、鞍点、梯度悬崖和梯度消失

局部最优

详解机器学习中的梯度消失、爆炸原因及其解决方法
并不是找到全局最优点。局部最优点也可以,泛化性能也通常比最优解好。

鞍点

梯度悬崖

这是由于几个较大的权重相乘导致的

梯度消失

解决:ReLU

梯度爆炸

如果上层的权重过大,当经过传递后,本层的梯度就会变得异常巨大,造成梯度非常不稳定。

梯度不精确

导致训练的稳定性较差,但梯度不精确又是也可以看作是防止过拟合以及逃离局部最优或鞍点的方法。

优化算法

批量梯度下降

Batch Gradient Descent,BGD
整个训练数据集的数据计算梯度。更新权重。
优点:准确,下降快。
缺点:计算慢,不能投入新数据,若存在相似样本出现冗余。
对于凸函数可以收敛到全局极小值,对于非凸函数可以收敛到局部极小值。

随机梯度下降

Stochastic Gradient Descnet,SGD
选择一条数据,就训练一条数据,然后修改一次权重。
缺点:可能选择错误标记的数据/与正常数据差异很大的数据。导致此数据求得的梯度有很大的偏差。有很强的随机性。cost function有严重的震荡。
优点:没有冗余,比较快,可以新增样本,
学习率(学习率衰减)、选择多条数据

最小批量梯度下降

Mini-Batch Gradient Descent,MBGD
每一次利用一小批样本
可以降低参数更新时的方差,收敛更稳定。可以充分利用深度学习库中高度优化的矩阵操作来进行更有效地梯度计算。

learning rate选择太小收敛速度慢,如果太大,loss function就会在极小值处不停地震荡甚至偏离。在鞍点,BGD会停止不动,如果是MBGD或SGD,会发生震荡。如果是mini-batch或者SGD,每次找到的梯度都是不同的,就会发生震荡,来回跳动。

指数加权平均
减少噪音,刻画了原数据地趋势。
加权系数是随着时间以指数形式递减的,时间越靠近,权重越大,越靠前,权重越小。

动量学习法

加速SGD,抑制震荡
加速学习过程,可以在鞍点处继续前行,也可以逃离一些较小的局部最优区域
0.9

AdaGrad

adaptive gradient algorithm
将每一维各自的历史梯度的平方叠加起来,然后在更新的时候除以该历史梯度值即可。
缺点:容易收到‘过去’的影响,梯度很容易就累积到很大的值,此时学习率就会被降低的非常厉害。

Adadelta

没有学习率超参数
Adadelta
2
Adadelta 是 Adagrad 的一个具有更强鲁棒性的的扩展版本,它不是累积所有过去的梯度,而是根据渐变更新的移动窗口调整学习速率

RMSProp

Root Mean Square Prop
在AdaGrad的版本上引入衰减因子
在‘过去’和‘现在’做一个权衡。

Adam

Momentum+RMSProp的微调版本

参数初始化策略

初始点不好:学习算法可能根本无法收敛,也可能造成学习算法不稳定。
不同的参数也决定着学习的收敛速度以及能否降低到足够低的损失值区域。
尽量避免神经元参数出现对称情况。
随机初始化方式:均匀分布/高斯分布
较大的初始值权重范围:
有点:有效的避免参数对称线性、减少神经元冗余现象,帮助减轻训练网络时的梯度消失问题。
缺点:梯度爆炸问题,Sigmoid出现过饱和现象。

批量归一化

归一化:将数据的输入值减去其均值然后处以数据的标准差。
批量归一化:在网络的每一层都进行数据归一化处理。批量归一化中的‘批量‘其实就是采样一小批数据,然后对该批数据在网络各层的输出进行归一化处理。
目的:把神经网络每一层的输入数据都调整到均值为零,方差为1的标准正态分布。
BN就是把输入值尽可能地归一化在激活函数这一狭窄区域。:减低网络地性能。
另一个步骤:再将归一化地数据放大,平移回非线性区域。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值