有 d d d元函数 f ( x ⃗ ) f(\vec{x}) f(x),其中 x ⃗ \vec{x} x为 d d d维向量,试图找到 x ⃗ \vec{x} x的某个取值 x ⃗ ∗ \vec{x}^* x∗,使 f ( x ⃗ ∗ ) f(\vec{x}^*) f(x∗)达到 f ( x ⃗ ) f(\vec{x}) f(x)的最小值(或最大值),这就是我们常说的“最优化”或“优化”。我们知道,机器学习中用训练集训练模型,其实大多时候就是建立目标函数,找到使目标函数达到最小值(或最大值)的模型参数的过程。这不就是在解决优化问题吗!所以,学好优化,刻不容缓!
如果函数 f ( x ⃗ ) f(\vec{x}) f(x)没有附带约束条件,那这属于无约束优化;如果函数 f ( x ⃗ ) f(\vec{x}) f(x)附带的都是等式约束条件,那这属于等式约束优化;如果函数 f ( x ⃗ ) f(\vec{x}) f(x)附带有不等式约束条件,那这属于不等式约束优化。面对不同的优化问题,需要不同的方法来解决。
无约束优化
用数学的语言表达出来,就是
min x ⃗ f ( x ⃗ ) , \displaystyle \min_{\vec{x}} f(\vec{x}), xminf(x),
因为求最大值和最小值可以相互转化,所以都以求最小值为例。对于一元函数 f ( x ) f(x) f(x)来说,大家都知道通过 f ′ ( x ) = 0 f^\prime(x)=0 f′(x)=0来找到 x ∗ x^* x∗使 f ( x ∗ ) f(x^*) f(x∗)达到最小值。对于 d d d元函数 f ( x ⃗ ) f(\vec{x}) f(x)来说,方法类似,通过方程组
∂ f ∂ x 1 = 0 , ∂ f ∂ x 2 = 0 , … , ∂ f ∂ x d = 0 , ① \frac{\partial f}{\partial x_1}=0,\frac{\partial f}{\partial x_2}=0,…,\frac{\partial f}{\partial x_d}=0,① ∂x1∂f=0,∂x2∂f=0,…,∂xd∂f=0,①
找到