一:前言
如果我们现实生活中的多元值求最优化的问题,我们会遇到一下三种场景:
- 无条件约束的优化问题
- 有等式约束的优化问题
- 有不等式约束的优化问题
而拉格朗日乘子法和KKT条件是现实生活中求解这类优化问题两种非常重要的求值方法。这里我们将从上边的上个场景讲解这两种方法。
接下来的讲解过程中,我们所使用的未知变量都会都向量,而非我们以前所对应的一个实数。因为我们考虑的是多元问题,即未知数可能不止一个,也可能是几十个、几百个,而这种场景才能运用到现实生活中,毕竟所有的数学研究都是为了直接或者间接解决现实生活中的问题而存在的。
二:无条件约束的优化问题
场景描述:
2.1 凸函数
凸函数是定义在某个向量空间的凸子集C(区间)上的实值区域,对于区间上的任意两个向量 x1,x2 都存在 f((x1+x2)2)⪖f(x1)+f(x2)2 。这里给大家展示一个二维向量凸函数的示意图:
2.2 Fermat引理求最优解
该类问题比较简单。我们可以通过Fermat引理就可以获取到相应的最优值。Fermat引理的求解最优解的过程可以总结为如下的流程(以前文中提到的场景为例):
- 求出 f(x) 的导数—— f′(x)
- 求出当 f′(x)=0 时x的值,这样我们就可以得到对应最优值的后选值——我们将这些值以集合N代表
- 验证N中的每一个值,如果是凸函数的话,那么我们可以认为当前对应可能是最小值
- 如果考虑到局部最优解的话,我们可能需要再作进一步的分析
由于Fermat引理是比较相对简单并且不是本章讲解的中点,所以这里我们不做进一步的讲解,如果有兴趣的话大家可以私下去看一下。
三:有等式约束的优化问题
3.1 拉格朗日乘子法
优化场景如下:
这个场景就是:当满足 hi(x)=0;的时候求解f(x)的最小值。
s.t.的含义代表:subject to 表示:“受限于”
关于这类问题我们经常使用的是拉格朗日乘子法(也就是我们标题中提到的方法之一)。
拉格朗日乘子法是将约束等式( hi=0 )乘以一个系数与原函数 f(x) 联系在一起写成一个式子,称为拉格朗日函数。如下是我们场景转变后的结果:
该方程还有另外一种表示形式如下:
以上两种形式的式子表示的都是同一个含义的内容。 ai 是各个约束条件的待定系数。 L 代表等式约束的个数。
当我们获取了如上所示的拉格朗日函数的时候,我们通过对这个函数对各个变量求导,令其函数等于零,可以求出后选值,然后验证得出最优值(就是我们第二章讲解的Fermat引理)。公式如下:
3.2 几何解释——为什么这样做可以求最优化?
首先呢我们给一个文字描述,因为x是多元的,我们不能够通过图形的方式显示出来,但是在文字讲解完毕的话我们会给一个二维的例子来帮助理解记忆。
针对目标函数