最近学习了最优化理论,正好学到了机器学习中支持向量机(Support Vector Machine)和最大熵模型(Maximum Entropy Model)中用到的KKT条件(Karush–Kuhn–Tucker conditions).
之前看了一些相关书籍,发现KKT条件的证明不是有些简略,就是太偏“数学”(对于非数学专业的学生可能看不懂)——不适合非数学专业的同学入门. 因此我通过总结教材、上课笔记和加入一些帮助理解的重要注记(个人认为不“显然”的内容),写下这篇文章,供大家学习和交流!
PS:知乎的排版有些乱,望看官们不要介意:)
目录:0.什么是KKT条件
1.等式约束优化问题(Lagrange乘数法)
2.不等式约束优化问题
3.总结
0.什么是KKT条件
本文从本科高数(微积分)中的有条件极值的Lagrange乘数法入手,一步步推导到KKT条件. 但在讲述推导过程之前,我想先给出KKT条件:
对于具有等式和不等式约束的一般优化问题
KKT条件给出了判断
是否为最优解的必要条件,即:
1. 等式约束优化问题(Lagrange乘数法)
对于这部分内容,其实本科高数课程中已学过,因此本文直接给出结论,并补充一些我的理解与总结,它能帮助理解不等式约束中的一些内容,具体的推导过程在同济7版的高数下册(P.116-118)中已写的较详细。
所谓的等式约束优化问题是指
我们令
,函数
称为Lagrange函数,参数
称为Lagrange乘子.
再联立方程组:
,
得到的解为可能极值点,由于我们用的是必要条件,具体是否为极值点需根据问题本身的具体情况检验. 这个方程组称为等式约束的极值必要条件.
上式我们对
个
和
个
分别求偏导,回想一下在无约束优化问题
中,我们根据极值的必要条件,分别令
,求出可能的极值点. 因此可以联想到:等式约束下的Lagrange乘数法引入了
个Lagrange乘子,或许我们可以把
也看作优化变量(
就叫做优化变量).相当于将优化变量个数增加到
个,