KKT条件和拉格朗日乘子法

hit2015spring ,转载请注明出处

华为面试的时候,部长先生问了这个问题,于是就回来看了一下,补补课,平常学的有点水货,哈哈!希望有帮助!如果你从头到尾拿出笔来写下这里面的公式,我觉得肯定能看懂!

最优化问题的最优性条件,最优化问题的解的必要条件和充分条件

无约束问题的解的必要条件

f(x) x 处的梯度向量是0

有约束问题的最优性条件

等式约束问题的必要条件:

一个条件,两变量

minf(x)=f([x]1,[x]2)
s.t.c(x)=c([x]1,[x]2)=0

则最优解的必要条件如下面式子所示:

f(x)+αc(x)=0
c(x)=0

α 是常数,即存在一个常数使得约束条件和待优化问题的梯度之和为0
上面就把它当成一个结论吧,具体推导见《数据挖掘中的新方法——支持向量机》

这里的理解是:

xc(x1,x2)=0 的条件下去寻找一个 x 来使得 f(x) 最小。其实这个点就是在满足约束条件 c(x)=0 的曲面上。
来这样理解一下:

KKT条件和拉格朗日乘子法_第1张图片

c(x) 是曲线,画出 f(x)=k 的等高线,当然了在 x=4 的位置两者相交,但是二者不是相切的,这样就还能移动x点去寻找更低的点来满足最小化,其实这里要找的点就是二者相切的点,这样就能保证最小值,相切的时候,目标函数的梯度肯定正交于约束曲面,此时就有了
f(x)+αc(x)=0

KKT条件和拉格朗日乘子法_第2张图片

上面的 z 是待优化的函数, c(x1,x2) 是约束的等式条件,注意这里面的 x1,x2 是在平面上的(联想圆锥曲线)然后把z的等高线投影到 x1,x2 平面上,在该平面上的约束条件上面的点就是该x取值的可行域,在这些点里面选取的x使得目标函数最小。当等高线与 c(x1,x2) 相交时,在等高线内部肯定还有满足 z 更小的 x1,x2 ,只有当等高线与 c(x1,x2) 相切时,等高线内部就没有了点使得优化函数更小,于是就必须是等高线的梯度方向和约束曲线的方向相同或者一致,这样才能保证相切,于是就有了式子

f(x)+αc(x)=0

引入拉格朗日函数

L(x,α)=L([x]1,[x]2,α)=f([x]1,[x]2)+αc([x]1,[x]2)

上面的条件就变成:
xL(x,α)=f(x)+αc(x)=0
αL(x,α)=c(x)=0

推广到两个约束条件,三个变量的问题

minf(x)=f([x]1,[x]2,[x]3)
s.t.ci(x)=ci([x]1,[x]2,[x]3)=0

它的最优解的必要条件是:
f(x)+α1c1(x)+α2c2(x)=0
c1(x)=0
c2(x)=0

引入拉格朗日函数

L(x,α)=L([x]1,[x]2,[x]3,α1,α2)=f([x]1,[x]2[x]3)+α1c1([x]1,[x]2[x]3)+α2c2([x]1,[x]2[x]3)

于是最优化条件变成:
xL(x,α)=f(x)+α1c1(x)+α2c2(x)=0
αL(x,α)=c(x)=0

然后是多变量,多 q 条件约束:
引入拉格朗日函数
L(x,α)=L([x]1,[x]2,,[x]n,α1,,αq)=f([x]1,[x]2)+i=1qαici([x]1,[x]2)=f(x)+αTc(x)

x=([x]1,[x]2,,[x]n) 是该问题的局部最优解,且约束函数在 x 处的梯度向量 c1(x),,cq(x) 线性无关此时 x 则存在q维向量: α=(α1,,αq) 满足下面条件

xL(x,α)=f(x)+i=1qαici(x)=f(x)+c(x)α=0
αL(x,α)=c(x)=0

其中 c(x) 是以 c1(x),,cq(x) 为列的矩阵,注意这里的 c(x),α 是向量形式

不等式约束时候的条件

最简单的不等式约束问题

minf(x)=f([x]1,[x]2,[x]3)
s.t.ci(x)=ci([x]1,[x]2,[x]3)0

此时的问题类比于上面的等式约束,并引入拉格朗日函数 L(x,α)=f(x)+αc(x)

此时的条件要满足的是:

xL(x,α)=f(x)+αc(x)=0
c(x)0
α0
αc(x)=0

一般不等式约束问题

引入Lagrange函数
L(x,α)=f(x)+i=1pαici(x)=f(x)+αTc(x)

该约束问题最优解的必要条件就是

xL(x,α)=f(x)+i=1pαici(x)=f(x)+c(x)α=0
ci(x)0 i=1,,p
αi0 i=1,,p
αici(x)=0 i=1,,p

其中 c(x) 是一个以 c1(x),c2(x),,cp(x) 列矩阵

KKT条件

综合上面的结论就导出了下面的KKT条件
KKT条件一般约束问题的必要条件

考虑一般问题:
minf(x)
s.t.ci(x)0 i=1,,p
ci(x)=0 i=p+1,,p+q

优化问题 f(x),c(x),i=1,,p+q 具有连续一阶偏导, x 为问题的局部解。若在 x 处的有效约束梯度 ci(x) 线性无关,或者所有的约束函数都是线性函数,则存在 p+q 维向量 α=(α1,α2,,αp+q) 使得:

xL(x,α)=f(x)+i=1p+qαici(x)=f(x)+c(x)α=0
ci(x)0 i=1,,p
ci(x)=0 i=p+1,,p+q
αi0 i=1,,p
αici(x)=0 i=1,,p

这里 c(x) 是一个以 c1(x),c2(x),,cp+q(x) 列矩阵即:

c(x)=(c1(x),c2(x),,cp+q(x))

p+q 维向量 α 称为KKT乘子向量或者lagerange乘子向量,其分量 α1,α2,,αp+q 称为KKT乘子或者lagrange乘子

当优化问题为凸约束问题的时候上述的KKT条件变为最优解的充要条件

上面的方法就是为了在寻找多元函数在一组约束下的极值优化的方法,通过引入拉格朗日乘子,可以将有d个变量与k个约束条件的最优化问题转化为具有 d+k 个变量的无约束的优化问题进行求解

更为感性的理解这个条件就是:
引入了拉格朗日乘子,描述了在可行域边上的时候是等式约束的条件这时候用的是拉格朗日乘子法,在可行域的内部是无约束的条件,或者是不等式约束的条件下变换出了KKT条件。归根结底的说KKT条件是拉格朗日乘子法的一个泛化

问题先按照几何间隔最大化的原则他的问题为

minw,b12w2
s.t.yi(wTxi+b)1,i=1,2,,m

这个是SVM的基本型

对它引入拉格朗日乘子法,即对上式添加拉格朗日乘子 αi0

你可能感兴趣的:(机器学习,支持向量机)