有ddd元函数f(x⃗)f(\vec{x})f(x),其中x⃗\vec{x}x为ddd维向量,试图找到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)附带有不等式约束条件,那这属于不等式约束优化。面对不同的优化问题,需要不同的方法来解决。
无约束优化
用数学的语言表达出来,就是
minx⃗f(x⃗),\displaystyle \min_{\vec{x}} f(\vec{x}),xminf(x),
因为求最大值和最小值可以相互转化,所以都以求最小值为例。对于一元函数f(x)f(x)f(x)来说,大家都知道通过f′(x)=0f^\prime(x)=0f′(x)=0来找到x∗x^*x∗使f(x∗)f(x^*)f(x∗)达到最小值。对于ddd元函数f(x⃗)f(\vec{x})f(x)来说,方法类似,通过方程组
∂f∂x1=0,∂f∂x2=0,…,∂f∂xd=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<