优化问题综述(一)无约束最优化问题的解法中用于神经网络的常见算法

本文概述了无约束最优化问题,重点关注在神经网络中常用的优化算法,包括梯度下降、动量优化器、Nesterov动量优化器、Adagrad、Adadelta、RMSprop、Adam及其变体。这些算法通过不同的梯度更新策略来改善收敛速度和精度,例如,Adam结合了动量和二阶矩估计,提供了一种有效的优化方法。

优化问题是解决形如

minxg(x)+h(x),s.t.,xXminxg(x)+h(x),s.t.,x∈X

的问题,g(x)g(x)是损失函数,h(x)h(x)是正则化约束,XX是可行域。
我们令 f ( x ) = g ( x ) + h ( x ) ,对f(x)f(x)已知信息的多少可把这个问题分为

  • 2阶问题:已知f(x)f(x)的函数值、1阶、2阶导数(值、梯度、hessen矩阵)
  • 1阶问题:已知f(x)f(x)的函数值、1阶导数(值、梯度)
  • 0阶问题:只知道f(x)f(x)的函数值(值)
  • -1阶问题:只知道f(x)f(x)的估计值F[f(x),ξ]F[f(x),ξ]

当可行域XX为整个空间时,优化问题被成为无约束的最优化问题;当可行域 X 受到限制时,优化问题被成为有约束的最优化问题。

无约束最优化问题的解法

我们希望得到minxf(x)minxf(x),我们把f(x)f(x)泰勒展开可得

f(x+Δ)=f(x)+f(x)TΔ+ΔT2f(x)Δ+O(Δ3)f(x+Δ)=f(x)+∇f(x)TΔ+ΔT∇2f(x)Δ+O(Δ3)

1阶问题中用于神经网络的常见算法

f(x)∇f(x)已知时,我们可知,将xx往与 f ( x ) 相反的方向走一小步ΔΔf(x+Δ)f(x+Δ)会下降,那么我们可以得到递推公式

xt+1=xtηf(xt)xt+1=xt−η∇f(xt)

ηη为步长大小。观察递推公式,我们可知可以从步长ηη和梯度f(xt)∇f(xt)进行优化。

Gradient Descent Optimizer

tf.train.GradientDescentOptimizer(learning_rate, name=’GradientDescent’)

最朴素的算法,直接利用梯度递推公式进行优化,步长可为定值或指数衰减。
他的缺点很明显:

  • 很难选择出合适的学习率
  • 相同的学习率并不适用于所有的参数
  • 在神经网络中,非凸问题关键是要避免陷入局部最小值或自鞍点,梯度下降法并不能很好的解决

Momentum Optimizer

tf.train.MomentumOptimizer(learning_rate, momentum, use_nesterov=False, name=’Momentum’)

添加上步的更新分量到当前,可以一定程度上避免陷入局部最小值或自鞍点。直观的理解就是给运动加上了惯性。与梯度下降相比,加速收敛,提高精度(减少收敛过程中的振荡)。递推公式为

V(t)=γV(t1)+(1γ)f(xt)V(t)=γV(t−1)+(1−γ)∇f(xt)

xt+1=xtηV(t)xt+1=xt−ηV(t)

γγ一般设置为0.9。

Nesterov Momentum Optimizer

tf.train.MomentumOptimizer(learning_rate, momentum, use_nesterov=True, name=’Momentum’)

添加上步的更新分量到当前,并预测下一时刻的动量来修正。递推公式为

V(t)=γV(t1)+(1γ)f(xt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值