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

优化问题是解决形如

minxg(x)+h(x),s.t.,xX m i n x g ( x ) + h ( x ) , s . t . , x ∈ X

的问题, g(x) g ( x ) 是损失函数, h(x) h ( x ) 是正则化约束, X X 是可行域。
我们令 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 ) , ξ ]

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

无约束最优化问题的解法

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

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

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

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

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

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

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 ( x t )

xt+1=xtηV(t) x t + 1 = x t − η 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ηV(t1))
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值