最优化问题
最优化问题值得四在一定约束条件下,求一个函数最大(小)值的过程;
由于极大极小问题可以互相转换,不失一般性,因此我们统一形式化描述如下:
一般而言,我们的目标是找到全局最小值。但是, 有些复杂的目标函数有多个局部最小值点。需要比较这些点处的目标函数值。
梯度下降
驻点的精确求解往往是困难的,在实践中我们往往通过迭代算法找到近似解:从一个初始点开始,基于某种规则,从移动到下一个点,构造这样一个数列,直到找到使得梯度为0的点为止。
注意Taloy展开如下:
设计f(x+\Delta x)-f(x)\approx(\nabla f(x))^\top\Delta x
希望做到,取可以做到;
其中为预先设置的步长,它尽量小;
Steepest Descent
我们希望在第次迭代时,选取合适的步长来最优化目标函数;
形式化地说,考虑以下优化问题:
但是这仍然面临着一元函数求驻点的问题;
Stochastic Gradient Decent,SGD
随机梯度下降法考虑对每个样本都进行更新:
其中步长也被称为学习率(Learning Rate),损失函数和学习率的关系如下:
随机梯度下降的伪代码如下:
Mini-batch SGD
小批量随机梯度下降法
Stopping Criteria
使用一个验证集(Validation Dataset)来测试每一次迭代的参数在验证集上是否最优。如果在验证集上的错误率不再下降,就停止迭代;
这是为了避免算法陷入了局部最优或者鞍点,但我们要找的是全局最小值;
凸优化
凸集:对于维空间中点的集合,若对集合中的任意两点和,以及,都有,则称该集合为凸集;
凸函数的判定:
-
对于维空间中点的集合,如果对集合中的任意两点和,以及实数,都有;
-
Hessian矩阵为半正定矩阵
简单来说,凸优化问题就是同时满足凸函数+凸集的最优化问题,全局最优解的寻找直接被简化成局部最优解;
常见的约束条件有:
- 线性约束:
- 多面体约束:
注意到,多个凸集的交集还是凸集,因此,优化问题中可能有多个等式和不等式约束,只要每个约束条件定义的可行域是凸集,则同时满足这些约束条件的可行域还是凸集;
严谨地说,如果一个最优化问题的可行域是凸集,并且目标函数是凸函数,则该问题为凸优化问题;
形式化描述如下:
目前,不少问题都是凸优化问题,比如线性回归,岭回归,支持向量机,Logistic回归;