拉格朗日乘子法及KKT条件

前言

最近在学习SVM的时候发现想要了解SVM的前提是必须得了解拉格朗日乘子法和KKT条件。为此,在花时间了解了拉格朗日乘子法和KKT条件之后在此说说自己的理解,顺便记录下自己的学习过程。
第一次接触拉格朗日乘子法是在高数课上求解在一定等式约束条件下的函数极值问题。当时只知道稀里糊涂的如何去用,从来都没有想过为什么要这样去做。总的来说,拉格朗日乘子法(Lagrange multipliers)是一种寻找多元函数在一组约束条件下的极值问题。通过引入拉格朗日乘子法,可以将有d个变量与k个约束条件的最优化问题转化为具有d+k个变量的无约束优化问题。

无约束极值

在讲解拉格朗日之前,先来看看一个简单的列子,即无约束优化问题。

minf(x)(1)

对于这种无约束的函数求解,我们很自然会想到对其进行求导获取候选集,然后将候选解代入函数中寻找最小值。

等式约束

而对于下面这种等式约束情况

minf(x)s.t.g(x)=0(2)

这个时候我们就可以用到了拉格朗日乘子法。首先定义拉格朗日函数
L(x,λ)=f(x)+λg(x)(3)

然后分别对 x 和对 λ 求导,即得到
L(x,λ)x=f(x)+λg(x)=0L(x,λ)λ=g(x)=0(4)

求解公式(4)即可解得公式(2)的等式约束问题。那么问题来了:为什么这样子可以求得最优点?
从几何上来看,等式约束的极值问题相当于: 假设 x 是d维向量,在满足方程 g(x)=0 的约束曲面边界上,尝试寻找一点 x 使曲面上某值 f(x) 最小。这样就可以得出下面两条结论:
1. 对于约束曲面 g(x)=0 上的任意一点 x ,该点的梯度 g(x) 正交于约束曲面
2. 在最优点 x ,目标函数在该点的梯度 f(x) 正交于约束曲面
其中这第一条结论是显然的,梯度是下降最快的方向,显然与该点曲面正交。而对于第二点,我也理解很久,其实可以这么想,如果 f(x) 不正交于约束曲面, 那么在约束曲面上,我们总可以沿着 f(x) 的相反方向移动,使 f(x) 函数值更进一步下降,因为梯度的反方向就是函数值下降最快的方向,所以如果找到了最优点 x ,则该点梯度 f(x) 必定正交于约束曲面,使我们无法在约束曲面上沿着梯度的负方向移动。
正因为 g(x) f(x) 方向平行,即存在一个 λ ,使
f(x)+λg(x)=0(5)

这即使公式(4)中的 L(x,λ)x 。我们的拉格朗日函数也就是这么来的。

不等式约束

对于如下的不等式约束:

minf(x)s.t.g(x)0(6)

这个情况要分两者情况:
1. 在约束曲面边界 g(x)=0 的时候,则最优解即是和等式约束的情况类似,此时 g(x) f(x) 反向(反向的原因可以看下后面的图),存在 λ>0 使 f(x)+λg(x)=0
2. 当约束条件是 g(x)<0 ,此时约束条件不起作用,可直接通过条件 f(x)=0 求得最优解。对于拉格朗日函数来说,等价于 λ=0
因此合并以上两者情况可以得到 λg(x)=0 ,即得到的被称为KKT(Karush-Kuhn-Tucker)的条件
g(x)0λ0λg(x)=0(7)

下面的图来自于周志华的《机器学习》P404
拉格朗日乘子法及KKT条件_第1张图片

通过这张图既可以看出上面所说的梯度与约束曲面的正交关系。

对偶问题

一个优化问题一般分为“主问题”(primal problem)和“对偶问题”(dual problem).无论主问题的凸性如何,对偶问题始终是凸优化问题。对偶问题也分为“弱对偶性”和“强对偶性”。对于求最小值的优化问题,“弱对偶性问题”可以提供主问题的一个下界;而对于“强对偶性问题”,求解对偶问题的最优解即是主问题的最优解。由于我目前对对偶问题也不是太熟悉,就不过多说啦,如有说错的地方欢迎指正交流。

你可能感兴趣的:(机器学习)