http://blog.youkuaiyun.com/huanongjingchao/article/details/17298569
机器学习中的优化问题:
http://www.chawenti.com/articles/20470.html
在求取有约束条件的优化问题时,拉格朗日乘子法和KKT条件是非常重要的两种方法。
当然,这两个方法求得的结果只是必要条件,只有当是凸函数的情况下,才能保证是充分必要条件。KKT条件是拉格朗日乘子法的泛化。之前学习的时候,只知道直接应用两个方法,但是却不知道为什么拉格朗日乘子法(Lagrange Multiplier) 和KKT条件能够起作用,为什么要这样去求取最优值呢?
拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
通常我们需要求解的最优化问题有如下几类:
- 无约束优化问题
minf(x)- 等式约束问题
minf(x)
s.t hi(x)=0;i=1...n
- 不等式约束问题
minf(x)
s.t hi(x)=0;i=1...n
gi(x)≤0;i=1...n
对于第一类的优化问题,常常使用的方法就是Fermat定理,即使用求取
f(x)
的导数,然后令其为零,可以求得候选最优值,再在这些候选值中验证;如果是凸函数,可以保证是最优解。
对于第(ii)类的优化问题,常常使用的方法就是拉格朗日乘子法(Lagrange Multiplier) ,即把等式约束
hi(x)
用一个系数与
f(x)
写为一个式子,称为拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。
对于第(iii)类的优化问题,常常使用的方法就是KKT条件。同样地,我们把所有的等式、不等式约束与f(x)写为一个式子,也叫拉格朗日函数,系数也称拉格朗日乘子,通过一些条件,可以求出最优值的必要条件,这个条件称为KKT条件。
- 拉格朗日乘子法(Lagrange Multiplier)
e.g:
min f(x,y)=x2+y2
s.t:x+2Y=1
即: h(x,y)=x+2y−1=0
- KKT 条件
一般地,一个最优化数学模型能够表示成下列标准形式:
所谓 Karush-Kuhn-Tucker 最优化条件,就是指上式的最小点 x* 必须满足下面的条件:
KKT最优化条件是Karush[1939]以及Kuhn和Tucker[1951]先后独立发表出來的。这组最优化条件在Kuhn和Tucker 发表之后才逐渐受到重视,因此许多书只记载成「Kuhn-Tucker 最优化条件 (Kuhn-Tucker conditions)」。
KKT条件第一项是说最优点必须满足所有等式及不等式限制条件,也就是说最优点必须是一个可行解,这一点自然是毋庸置疑的。第二项表明在最优点 ¥
x∗,∇f
必須是
∇hj
和
∇gk
的线性組合, 和 都叫作拉格朗日乘子。所不同的是不等式限制条件有方向性,所以每一个 kµ都必须大於或等於零,而等式限制条件没有方向性,所以 jλ没有符号的限制,其符号要视等式限制条件的写法而定