数值优化:一阶和二阶优化算法(Pytorch实现)

1 最优化概论

(1) 最优化的目标

最优化问题指的是找出实数函数的极大值或极小值,该函数称为目标函数。由于定位\(f(x)\)的极大值与找出\(-f(x)\)的极小值等价,在推导计算方式时仅考虑最小化问题就足够了。极少的优化问题,比如最小二乘法,可以给出封闭的解析解(由正规方程得到)。然而,大多数优化问题,只能给出数值解,需要通过数值迭代算法一步一步地得到。

(2) 有约束和无约束优化

一些优化问题在要求目标函数最小化的同时还要求满足一些等式或者不等式的约束。比如SVM模型的求解就是有约束优化问题,需要用到非线性规划中的拉格朗日乘子和KKT条件。这里我们仅介绍无约束优化,有约束优化放在后面的章节讲解。

(3) 线性和非线性规划

线性函数是指目标函数和约束都为线性的优化问题,非线性规划是指目标函数和约束有一个为非线性的优化问题。线性规划一般在运筹学(经济模型、图论网络流等)中有重要运用,而非线性规划在机器学习中有着重要的运用。我们把主要目光放在非线性规划。

(4) 凸优化和非凸优化

按照斯坦福 Boyd 教授(编写凸优化圣经《convex optimization》的那位)的观点,优化问题的分水岭不是线性和非线性,而是凸和非凸。这句话侧面说明了凸优化做为一种特殊的优化问题,显得非常重要,尤其是在机器学习领域。那么为什么凸优化会如此重要呢?首先我们拉看什么是凸函数。凸函数的定义如下:
\(Ω\)为凸集,如果对任意的\(x_1,x_2 \in Ω\)以及每一个\(α(0\leqslant \alpha \leqslant 1)\),有 \(f(αx_1+(1-\alpha)x_2)<=αf(x_1) + (1-α)f(x_2)\),则称定义在凸集上的函数\(f\)是凸的(convex)。
\(Ω\)为凸集,如果对每一个\(α(0<α<1)\)以及\(x_1,x_2 \in Ω\)\(x_1\neq x_2\),有\(f(αx_1+(1-α)x_2)<αf(x_1) + (1-α)f(x_2)\)则称\(f\)是严格凸的(strictly convex)。
以下展示了几个凸函数的图像例子,从几何角度看没如果图形中两点的连线处处都不在图形的下方,则函数是凸的。或者做为二维空间中的函数,如果函数的图形是碗状的,这个函数就是凸的。

电影爱好者的评分情况示意图

那么凸函数有什么神奇的性质值得我们为之兴奋呢?我们有定理:\(f\)是至少含有一个内点的凸集\(Ω\)上的凸函数,当前仅当\(f\)的Hessian矩阵\(\bm{H}\)在整个\(Ω\)上是半正定的。
此处Hessian矩阵正是函数的曲率概念在\(\R^n\)上的推广,凸函数在每个方向上都有正(至少是非负)的曲率。如果一个函数的Hessian矩阵在一个小区域内是半正定的,则称该函数是局部凸的;如果Hessian矩阵在这个区域内是正定的(但不妨碍我说\(\bm{H}\)在整个\(Ω\)上是半正定的,细品),则称这个函数是严格局部凸的(locally strictly convex)。
以下插入一下函数极值点的必要和充分条件的介绍:
函数极值点的必要和充分条件


而我们对于任意一个无约束优化问题,函数的最值是要满足一阶必要条件和二阶必要条件的。一阶必要条件:\(Ω\)\(\R^n\)的一个子集并且\(f\)\(Ω\)上的函数。如果\(\bm{x}^*\)\(f\)\(Ω\)上的相对极小点,那么对\(\bm{x}^*\)点处的任意一个可行的方向\(\bm{d}∈\R^n\),有\(∇f(\bm{x}^*)\bm{d}>=0\)。一个非常重要的特殊情形发生在\(\bm{x}^*\)\(Ω\)内部时(\(\bm{x}^*\)\(Ω\)的内点,\(Ω=\R^n\)就对应这种情形)。在这种情况下,从\(\bm{x^*}\)发散出去的每个方向都是可行方向,因此对所有的\(\bm{d}∈\R^n\),都有\(\nabla f(\bm{x}^{*})\bm{d}>=0\),这就意味着\(\nabla f(\bm{x}^*)=0\)二阶必要条件:\(Ω\)\(\R^n\)的一个子集并且\(f\)\(Ω\)上的函数。如果\(\bm{x}^*\)\(f\)\(Ω\)上的相对极小点,那么对\(\bm{x}^*\)处的任意一个可行方向\(\bm{d}∈Ω\),有:
\(∇f(\bm{x}^*)\bm{d}>=0\)
② 如果\(∇f(\bm{x}^*)\bm{d}=0\),那么\(d^T∇^2f(\bm{x}^*)\bm{d}>=0\)

同样的,我们在无约束情形下,设\(\bm{x}^*\)是集合\(Ω\)的内点。并且设\(\bm{x}^*\)是函数\(f\)\(Ω\)上的一个内点,那么:
\(\nabla f(\bm{x}^*)=0\)
② 对所有\(\bm{d}\)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值