梯度下降优化系列方法, 以及牛顿法的介绍。

简单总结一下优化方法
优化线性回归有三种方法,1求解析解,2梯度下降,3牛顿法
对于没有解析解的优化问题,用方法2和3。

这两种方法都是常见的求解极值问题的方法,而且都是通过迭代逼近的办法求得最优解。但是两者之间又有着千丝万缕的关系。
对于梯度下降,梯度的步长是固定的。
而对于牛顿法,步长是根据当前状态的导数或者二阶导数决定的,因此步长是动态变化的。但是因为这种动态的步长,使得牛顿法相比于梯度下降法,收敛速度会有所提高。
但是用牛顿法求极值时,要求二阶导数存在,因此牛顿法的使用范围受到了一定的限制
此外还有拟牛顿法和各种牛顿法基础上的优化算法比如BFGS,L-BFGS。

梯度下降家族
相比于牛顿法,拟牛顿法等,神经网络的优化方法都是梯度下降方法,所以我还是先总结一下GD系列的方法吧。
文章来源 机器之心
一般的梯度下降GD是根据损失函数求学习参数的偏导数,也就是梯度,然后按照梯度的反方向来更新参数,更新由学习率learning rate来控制。

梯度下降算法中一些调优:

1算法的步长选择
步长取值取决于数据样本,可以多取一些值,从大到小,分别运行算法,看看迭代效果,如果损失函数在变小,说明取值有效,否则要增大步长。步长太大,会导致迭代过快,甚至有可能错过最优解。步长太小,迭代速度太慢,很长时间算法都不能结束。所以算法的步长需要多次运行后才能得到一个较为优的值。
2算法参数的初始值选择
初始值不同,获得的最小值也有可能不同,因此梯度下降求得的只是局部最小值;当然如果损失函数是凸函数则一定是最优解。由于有局部最优解的风险,需要多次用不同初始值运行算法,关键损失函数的最小值,选择损失函数最小化的初值。
3归一化
由于样本不同特征的取值范围不一样,可能导致迭代很慢,为了减少特征取值的影响,可以对特征数据归一化(由Batch Normalization完成)。
1.7 梯度下降法和最小二乘法

梯度下降法和最小二乘法:
1 梯度下降法需要选择步长,而最小二乘法不需要。
2 梯度下降法是迭代求解,最小二乘法是计算解析解。
如果样本量不算很大,且存在解析解,最小二乘法比起梯度下降法要有优势,计算速度很快。
但是如果样本量很大,用最小二乘法由于需要求一个超级大的逆矩阵,这时就很难或者很慢才能求解解析解了,使用迭代的梯度下降法比较有优势。

GD的主要三种变体是
Batch Gradient Descent, 批量梯度下降
Stochastic Gradient Descent, 随机梯度下降
mini-batch Gradient Descent,小批量梯度下降
主要的不同就是每次用于计算目标函数的梯度的数据量不同

BGD,每次用整个数据集求梯度。
缺点:速度慢,对大数据集失效,不能在线学习(运行中不能加新样本)

SGD,每次用一个样本计算梯度,可以在线学习。
缺点,噪声较多,并不是每次学习都往最优化方向进行。

MBGD,每次用m个样本计算梯度,速度较快,精度也较高。
缺点,两个主要的问题,一个是学习率的选择,第二个是陷入鞍点(目标函数在此点上的梯度(一阶导数)值为 0,但从改点出发的一个方向是函数的极大值点,而在另一个方向是函数的极小值点,典型的鞍点比如 y = x 3 y=x^3 y=x3 在x=0处, z = x 2 − y 2 z=x^2-y^2 z=x2y2 在x=0 y=0处 鞍点介绍)。

动量法 Momentum
该算法会考虑上一次的梯度,如果当前梯度与上一次的梯度方向一致,那么当前梯度会增强,反之梯度会减弱。
v t = γ v t − 1 + α ∇ ( θ ) v_t=\gamma v_{t-1}+\alpha\nabla(\theta) vt=γvt1+α(θ)
θ = θ − v t \theta=\theta-v_t θ=θvt

Adaptive gradient (Adagrad)
Adagrad主要是对learning rate进行自动调整,设 θ t , i \theta_{t,i} θt,i是第t轮第i个参数
θ t + 1 , i = θ t , i − α G t , i i + e ∇ t , i \theta_{t+1,i}=\theta_{t,i}-\frac{\alpha}{\sqrt{G_{t,ii}+e}} \nabla_{t,i} θt+1,i=θt,iGt,ii+e αt,i
其中, G t ∈ R d × d G_t\in R^{d\times d} GtRd×d 为对角矩阵,每个对角线位置{i,i}为对应参数 θ i \theta_i θi从第1轮到第t轮梯度的平方和。e是平滑项,用于避免分母为0,一般取值1e−8。
Adagrad优点是对于对于出现频率较大的参数采取较小的学习率,对于出现频率较小的参数采取较大的学习率。
Adagrad的缺点是在训练的中后期,分母上梯度平方的累加将会越来越大,从而梯度趋近于0,使得训练提前结束。

RMSProp
为了解决Adagrad的问题,RMSProp不累加之前所有轮的梯度平方和,而仅仅计算之前梯度平方的均值。
E [ ∇ 2 ] t = 0.9 E [ ∇ 2 ] t − 1 + 0.1 ∇ t 2 E[\nabla^2]_t=0.9E[\nabla^2]_{t-1}+0.1\nabla_t^2 E[2]t=0.9E[2]t1+0.1t2
θ t + 1 = θ t − α E [ ∇ 2 ] t + e ∇ t \theta_{t+1}=\theta_t-\frac{\alpha}{\sqrt{E[\nabla^2]_t+e}} \nabla_{t} θt+1=θtE[2]t+e αt

自适应动量法Adaptive Momentum(Adam)
Adam可以说是Momentum方法和RMSProp方法的结合,不仅在
除了存储类似RMSprop 中指数衰减的过去梯度平方均值 外,Adam 法也存储像动量法中的指数衰减的过去梯度值均值 :

博客1
博客2
博客3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值