目录
一:优化问题
1.梯度消失和爆炸
在梯度函数上出现指数级递增或者递减的情况下分别称为梯度爆炸或者梯度消失
假设g(z)=z,对于目标输出:y=w^n*w^n-1*w^n-2......w^2W^1
对于w的值大于1的情况下,激活函数的值将以指数级递增
w的值小于一的情况下,激活函数的值将以指数级递减
在计算梯度时,根据不同情况梯度函数也会以指数级递增或递减,导致训练导数难度上升,梯度下降算法的步长会变得非常小,需要训练的时间将会非常长
2.局部最优
鞍点:是函数上的导数为零,但不是局部极值的点。通常导数为零的带你是图上所示的鞍点,而非局部最小值,减少损失的难度也来自误差曲面中的鞍点,而不是局部最低点
在训练较大的神经网络,存在大量参数,并且函数被定义在较高的维度空间时,困在极差的局部最优基本不会发生
鞍点附近的平稳段会使得学习非常缓慢,而这也是需要动量梯度下将法,RMSProp以及Adam优化算法能加速学习的原因,它能帮助尽早走出平稳段
3.指数加权平均
指数加权平均是一种常用的序列数据处理方式,通常用在序列场景如金融序列分析,温度变化序列分析。
加入给定一个序列,例如一个城市一年中的每天的气温值,图中蓝色的点代表真实数据
那么气温变化可以理解问过程波动较大,异常较多。那么怎么平缓一些呢,着时候就要用到加权平均值了,如指数加权平均
这条红线就是就是指数加权后计算出来的,指数加权公式:
公式中:t表示第几个数据,Yt为当前计算的值,St为上一个加权平均后的值,为权重值。整个公式中,第一个值加权后不变,第二个加权值是由权值乘上第一个值加上1-权值乘上第二个值得到的,如此反复
上图红线中,为0.9,那么带入公式就得:
下图中,当 =0.98时,可以得到图中的绿色曲线,当=0.5时,得到噪点更多的黄色曲线。越大相当于求取平均利用的天数越多,局限自然就会平滑而且越滞后。这些系数被称为偏差修正
4.动量梯度下降法
回顾梯度下降公式:
梯度下降中的每次更新参数都只于当前梯度有关,而使用指数加权平均后得到Vw和Vb,并使用新的参数更新之前的参数,就是动量梯度下降了 。比如在一百次的梯度下降中求得参数:
则动量梯度下降为:
使用指数加权平均后的梯度代替原梯度进行参数更新,因为每次指数加权平均后的梯度含有之前梯度的信息,所以叫动量梯度下降
使用动量梯度下降时,通过累加过去的梯度值来减少抵达最小值路径上的波动,加速了收敛,因此来横轴方向下降得更快。当前后梯度方向一致时,动量梯度下降能够加速学习,而前后方向不一致时,动量梯度下降能够抑制震荡
5.RMSProp算法
RMSProp算法是在对梯度进行指数加权平均的基础上,引入平方和平方根
RMSProp是一种自适应学习率的优化算法,旨在解决Adagrad算法在深度学习训练过程中学习率逐渐减小直至无法进行一步学习的问题,它的核心思想是对每个参数使用不同的学习率,这些学习率是根据参数最近梯度大小自适应调整的。具体来说,它使用平方梯度的指数加权移动平均来调整学习率,从而使得学习率的调整更加平滑。
公式参考动量梯度下降,将这一次的参数平方
其中是一个非常小的数,防止分母太小导致不稳定,当dw或者db较大时,(dw)^2,(db)^2也会较大,进而sdw也会较大,最终使得结果变得非常大
最终RMSProp有助于减少抵达最小值路径上的摆动,并允许使用一个更大的学习率,从而加快算法学习速度
6.Adam算法
Adam是一种广泛使用的深度学习优化算法,它结合了动量梯度下降和RMProp这样的优化算法来加速深度神经网络的训练过程,旨在计算梯度的一阶矩阵估计和二阶矩阵估计来调整学习率,从而实现更高效的网络训练
Adam算法的关键在于同时计算梯度的一阶矩(均值)和二阶矩(未中心的方差)的指数移动平均,平对它们进行偏差矫正,以确保在训练初期时梯度估计不会偏向0
其中,mk和vk分别是梯度的一阶矩估计和二阶矩估计,和是控制两个据估计的指数衰减率,通常设置未0.9和0.999,一阶矩估计就相当于动量梯度下降,二阶矩就相当于RMProp
二:学习率衰减
如果设置一个固定的学习率
在最小值附近,由于不同的梯度下降中存在一定的噪声,因此不会精确的收敛,而是始终在最小值周围一个较大的范围波动
如果随着时间慢慢的减少学习率的大小,在初期学习率较大时,步长较大加快收敛,而后期逐步减小学习率的值,减小步长,由助于算法收敛,更容易接近最优解
最常用的学习率衰减:
其中,decay_rate未衰减率(超参数),epoch_num为将所有的训练样本完整过一遍的次数
还有一种指数衰减:
不同优化算法的效果图:
三:标准化
对于输入的特征进行标准化,能够缓解梯度消失或者梯度爆炸
其中u为平均值,为方差,标准化的目的是将所有特征的平均值为0,标准差为1
标准化前:
标准化后:
标准化后的数据,对于梯度下降无论从那个位置开始迭代,都能以相对较少的次数找到全局最优,可以加速学习