1.最优化问题的由来和概述
在实际应用中,最优化问题是我们绕不开的话题,最优化问题由两部分组成:
m i n i m i z e f ( x ) minimize \,f(x) minimizef(x)
s u b j e c t t o x ∈ Ω subject\,to\,x\in \Omega subjecttox∈Ω
他要解决的实际问题就是针对我们上面所写的实值函数 f f f,去寻找一个合适的 x x x,使得函数 f f f的取值达到最小,需要注意的是,如果函数 f f f是一个一元函数,那么 x x x就是一个使得函数取得最小值的数值,而对于一个 n n n元函数 f f f而言,自然的, x x x就是一个 n n n维向量: [ x 1 x 2 x 3 . . . x n ] T \begin{bmatrix} x_1&x_2&x_3&...&x_n \end{bmatrix}^T [x1x2x3...xn]T。
如果你对上面的表述比较陌生,没关系,我们对应回忆一下二元函数 f ( x , y ) f(x,y) f(x,y)的情形,实际上我们就是在这里把自变量 x x x和 y y y统一表述成向量 [ x 1 x 2 ] T \begin{bmatrix} x_1&x_2\end{bmatrix}^T [x1x2]T。
我们知道所有的 n n n维向量会构成一个 R n R^n Rn空间,而所谓的集合 Ω \Omega Ω是自变量 x x x的约束集,在空间中,也是 R n R^n Rn空间中的一个子集,一般我们将约束集表示成: Ω = { x : h ( x ) = 0 , g ( x ) ≤ 0 } \Omega=\{ x:h(x)=0,g(x)\le 0\} Ω={x:h(x)=0,g(x)≤0}。
换句话说,我们所讨论的有约束条件的优化问题,就是指自变量 x x x必须取自于约束集 Ω \Omega Ω范围中的值,在这个范围内寻找使得函数 f f f取得极小值的 x x x的取值。
当然,如果我们的约束集定义为 Ω = R n \Omega=R^n Ω=Rn,实际上就对应了另一种情况,也就是无约束的优化问题。
在实际问题中,我们可能还会想到要求取目标函数 f f f的极大值,我们对其取负号 − f -f −f,就将其统一到求极小值的框架中来了。
2.关于极小值的一些概念
关于极小值点的概念,我们这里要展开说一下:
对于在约束域 Ω \Omega Ω内的点 x ∗ x^{*} x∗,如果在约束域内他的邻域 ∣ x − x ∗ ∣ < ϵ |x-x^*|<\epsilon ∣x−x∗∣<ϵ当中,对于其余所有的自变量 x x x,都有 f ( x ) ≥ f ( x ∗ ) f(x)\ge f(x^*) f(x)≥f(x∗),那么我们就说 x ∗ x^* x∗是函数约束域中的一个局部极小值点,那么如果在整个约束域 Ω \Omega Ω中的自变量 x x x都满足 f ( x ) ≥ f ( x ∗ ) f(x)\ge f(x^*) f(x)≥f(x∗),那么此时的 x ∗ x^* x∗就由局部极小值点升格成了全局极小值点。
我们以一个最简单的一元函数 y = f ( x ) y=f(x) y=f(x)的图像为例,这个概念就非常清晰了。
在这个例子中,图像上所展示的是函数 f ( x ) f(x) f(x)在约束域内的图像,很显然 x = x 1 x=x_1 x=x1以及 x = x 2 x=x_2 x=x2都是极小值点,而进一步的, x 1 x_1 x1是全局极小值点, x 2 x_2 x2是局部极小值点。
而实际操作中,请大家注意:我们一般会觉得,严格说来只有找到了全局极小值点,才算是最终解决了问题,而在实际的应用当中,全局极小值点是非常难找到的,通常找到局部极小值点一般也就可以了。
3.剖析最优化分析的工具
在讲解寻找极小值的具体方法前,大家请务必牢记这几个工具:
我们以二元函数 f ( x 1 , x 2 ) = x 1 2 + 3 x 2 2 + 2 x 1 x 2 + 4 x 1