文档介绍:在求取有约束条件的优化问题时, 拉格朗日乘子法( Lagrange Multiplier) 和 KKT 条件是非常重要的两个求取方法, 对于等式约束的优化问题, 可以应用拉格朗日乘子法去求取最优值; 如果含有不等式约束,可以应用 KKT 条件去求取。当然,这两个方法求得的结果只是必要条件,只有当是凸函数的情况下,才能保证是充分必要条件。 KKT 条件是拉格朗日乘子法的泛化。之前学****的时候, 只知道直接应用两个方法, 但是却不知道为什么拉格朗日乘子法( Lagrange Multiplier) 和 KKT 条件能够起作用,为什么要这样去求取最优值呢? 本文将首先把什么是拉格朗日乘子法( Lagrange Multiplier) 和 KKT 条件叙述一下; 然后开始分别谈谈为什么要这样求最优值。一. 拉格朗日乘子法( Lagrange Multiplier) 和 KKT 条件通常我们需要求解的最优化问题有如下几类: (i) 无约束优化问题,可以写为: min f(x); (ii) 有等式约束的优化问题,可以写为: min f(x), . h_i(x) = 0;i =1, ..., n (iii) 有不等式约束的优化问题,可以写为: min f(x), . g_i(x) <= 0;i =1, ..., n h_j(x) = 0;j =1, ..., m 对于第(i) 类的优化问题,常常使用的方法就是 Fermat 定理,即使用求取 f(x) 的导数,然后令其为零, 可以求得候选最优值, 再在这些候选值中验证; 如果是凸函数, 可以保证是最优解。对于第(ii) 类的优化问题,常常使用的方法就是拉格朗日乘子法( Lagrange Multiplier) , 即把等式约束 h_i(x) 用一个系数与 f(x) 写为一个式子,称为拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导, 令其为零, 可以求得候选值集合, 然后验证求得最优值。对于第(iii) 类的优化问题,常常使用的方法就是 KKT 条件。同样地,我们把所有的等式、不等式约束与 f(x) 写为一个式子, 也叫拉格朗日函数, 系数也称拉格朗日乘子, 通过一些条件,可以求出最优值的必要条件,这个条件称为 KKT 条件。(a) 拉格朗日乘子法( Lagrange Multiplier) 对于等式约束,我们可以通过一个拉格朗日系数 a 把等式约束和目标函数组合成为一个式子 L(a, x)= f(x) + a*h(x), 这里把 a和 h(x) 视为向量形式, a 是横向量, h(x) 为列向量,之所以这么写,完全是因为 csdn 很难写数学公式,只能将就了..... 。然后求取最优值, 可以通过对 L(a,x) 对各个参数求导取零, 联立等式进行求取, 这个在高等数学里面有讲,但是没有讲为什么这么做就可以,在后面,将简要介绍其思想。(b) KKT 条件对于含有不等式约束的优化问题, 如何求取最优值呢?常用的方法是 KKT 条件, 同样地, 把所有的不等式约束、等式约束和目标函数全部写为一个式子 L(a, b, x)= f(x) + a*g(x)+b*h(x) , KKT 条件是说最优值必须满足以下条件: 1. L(a, b, x)对x 求导为零; 2. h(x) =0; 3. a*