拉格朗日乘子法和KKT条件详解,以及在SVM上的应用
在最优化问题中,我们可以根据约束类型将其分为三类:无约束优化问题、等式约束优化问题以及不等式约束优化问题。其中无约束问题最简单,只需要求导,找到导数为0的极值点,再带回原函数验证其最值性即。而有约束的优化问题求解,则可以用到拉格朗日乘子法(Lagrange Multiplier),不等式约束中还需要额外在极值点处满足KKT(Karush Kuhn Tucker)条件,KKT条件是对拉格朗日乘子法在不等式约束上的一种泛化。
一、等式约束
形如:
min f(x)s.t.hi(x)=0i=1,2,...,l
\begin{align*}
&min\ f(x) \\
s.t.\quad &h_i(x) = 0\quad i=1,2,...,l
\end{align*}
s.t.min f(x)hi(x)=0i=1,2,...,l
的优化问题称为等式约束优化,其中f(x)f(x)f(x)为目标函数,hi(x)=0h_i(x)=0hi(x)=0为约束条件。
解决这个问题主要使用的方法有消元法和拉格朗日乘子法,事实上当约束函数非线性的时候,使用消元法去消元并不容易,而拉格朗日乘子法可以很好的解决该问题,我们先说求解过程,再讲解原理。
1.1拉格朗日乘子法过程
(1)拉格朗日乘子法第一步首先要构造拉格朗日函数:
L(x,λ)=f(x)+∑i=1lλihi(x)
L(x,\lambda) = f(x) + \sum_{i=1}^{l}\lambda_ih_i(x)
L(x,λ)=f(x)+i=1∑lλihi(x)
注意这里的xxx,λ\lambdaλ表示位向量,λ\lambdaλ为约束函数前待定系数的向量,LLL是关于xxx和λ\lambdaλ的函数。
(2)第二步,对每个自变量求偏导,并令其为0,以求解FFF的极值点
∂L(x,λ)∂xk=0,∂L(x,λ)∂λi=0
\frac{\partial L(x,\lambda)}{\partial x_k} = 0,\quad \frac{\partial L(x,\lambda)}{\partial \lambda_i} = 0
∂xk∂L(x,λ)=0,∂λi∂L(x,λ)=0
(3)若xxx为kkk维向量,λ\lambdaλ为lll维向量,则得到k+lk+lk+l个等式,联合求出极值点x∗x^*x∗,带回原函数f(x∗)f(x^*)f(x∗)即为最值,再验证即可。
1.2拉格朗日乘子法原理
为了直观说明,在此举一个简单的二维例子
min f(x,y)s.t.h(x,y)=0
\begin{align*}
& min\ f(x,y) \\
s.t.\quad &h(x,y) = 0 \\
\end{align*}
s.t.min f(x,y)h(x,y)=0

我们在平面上做出h(x,y)=0h(x,y)=0h(x,y)=0的图像(图中橙色曲线),以及f(x,y)f(x,y)f(x,y)的等高线(图中虚线),可以看到箭头是函数梯度的方向,沿梯度方向函数值下降最快。只有落在橙色曲线上的点才满足约束条件,而这些点中,哪一个点使目标函数f(x,y)f(x,y)f(x,y)取到最小值呢?很显然在橙色曲线与fff等高线相切的这一点,f(x,y)f(x,y)f(x,y)取到最小值,否则沿曲线向与梯度夹角为锐角方向前进可以得到更小的目标函数值。
因此我们可以得到在最小值点有fff与ggg相切,二者梯度共线:
∇f(x,y)=λ∇h(x,y)
\nabla f(x,y) = \lambda \nabla h(x,y)
∇f(x,y)=λ∇h(x,y)
即
∇(f(x,y)+λh(x,y))=0
\nabla (f(x,y)+ \lambda h(x,y)) = 0\\
∇(f(x,y)+λh(x,y))=0
因此构造拉格朗日函数L(x,y,λ)=f(x,y)+λh(x,y)L(x,y,\lambda) = f(x,y)+\lambda h(x,y)L(x,y,λ)=f(x,y)+λh(x,y),且有:
∂L(x,y,λ)∂x=∂(f(x,y)+λh(x,y))∂x=0,∂L(x,y,λ)∂y=∂(f(x,y)+λh(x,y))∂y=0
\frac{\partial L(x,y,\lambda)}{\partial x}=\frac{\partial (f(x,y)+ \lambda h(x,y))}{\partial x} = 0,\qquad
\frac{\partial L(x,y,\lambda)}{\partial y}=\frac{\partial (f(x,y)+ \lambda h(x,y))}{\partial y} = 0
∂x∂L(x,y,λ)=∂x∂(f(x,y)+λh(x,y))=0,∂y∂L(x,y,λ)=∂y∂(f(x,y)+λh(x,y))=0
又最小值点在曲线上,因此满足g(x,y)=0g(x,y) = 0g(x,y)=0,所以:
∂L(x,y,λ)∂λ=∂(f(x,y)+λh(x,y))∂λ=h(x,y)=0
\frac{\partial L(x,y,\lambda)}{\partial \lambda}=\frac{\partial (f(x,y)+ \lambda h(x,y))}{\partial \lambda} = h(x,y)=0
∂λ∂L(x,y,λ)=∂λ∂(f(x,y)+λh(x,y))=h(x,y)=0
因此得到:
∂L(x,y,λ)∂x=0,∂L(x,y,λ)∂y=0,∂L(x,y,λ)∂λ=0,
\frac{\partial L(x,y,\lambda)}{\partial x} = 0,\quad
\frac{\partial L(x,y,\lambda)}{\partial y} = 0,\quad
\frac{\partial L(x,y,\lambda)}{\partial \lambda} = 0,
∂x∂L(x,y,λ)=0,∂y∂L(x,y,λ)=0,∂λ∂L(x,y,λ)=0,
这我们可以看出最小值点即为L(x,y,λ)L(x,y,\lambda)L(x,y,λ)的极值点中的(x,y)(x,y)(x,y),这就是为何我们可以通过构造拉格朗日函数并求其极值点来找目标函数的最值,但注意求出的只是极值点,还要验证其是否为最值。
将本例推广到任意维空间,以及任意数量约束的优化问题中可得到1.11.11.1所提到的拉格朗日乘子法。
二、不等式约束
形如:
min f(x)s.t.hi(x)=0i=1,2,...,pgj(x)≤0j=1,2,...,q
\begin{align*}
&min\ f(x) \\
s.t.\quad &h_i(x) = 0\quad i=1,2,...,p \\
&g_j(x) \le 0\quad j=1,2,...,q
\end{align*}
s.t.min f(x)hi(x)=0i=1,2,...,pgj(x)≤0j=1,2,...,q
的优化问题称为不等式约束优化,其中f(x)f(x)f(x)为目标函数,hi(x)=0h_i(x)=0hi(x)=0为等式约束条件,gj(x)≤0g_j(x)\le 0gj(x)≤0为不等式约束条件。
2.1KKT条件
解决这个问题同样可以使用拉格朗日乘子法
(1)构造拉格朗日函数
L(x,λ,μ)=f(x)+∑i=1pλihi(x)+∑j=1qμjgj(x)
L(x,\lambda,\mu) = f(x) + \sum_{i=1}^{p}\lambda_ih_i(x)+ \sum_{j=1}^{q}\mu_jg_j(x)
L(x,λ,μ)=f(x)+i=1∑pλihi(x)+j=1∑qμjgj(x)
(2)第二步,对每个自变量求偏导,并令其为0,以求解FFF的极值点
∂L(x,λ)∂xk=0,∂L(x,λ)∂λi=0∂L(x,μ)∂μj=0
\frac{\partial L(x,\lambda)}{\partial x_k} = 0,\quad
\frac{\partial L(x,\lambda)}{\partial \lambda_i} = 0 \quad
\frac{\partial L(x,\mu)}{\partial \mu_j} = 0
∂xk∂L(x,λ)=0,∂λi∂L(x,λ)=0∂μj∂L(x,μ)=0
(3)对得到的等式,联合求出极值点x∗x^*x∗,带回原函数f(x∗)f(x^*)f(x∗)即为最值,再验证即可。
但我们需要额外要求在解这一点满足KKT条件,把拉格朗日函数表示为L(x,λ,μ)=f(x)+λ∗h(x)+μ∗g(x)L(x,\lambda,\mu)= f(x) + \lambda*h(x)+\mu*g(x)L(x,λ,μ)=f(x)+λ∗h(x)+μ∗g(x),KKT条件是说最优值处必须满足以下条件:
- L(x,λ,μ)L(x, \lambda, \mu)L(x,λ,μ)对xxx求导为零;
- h(x)=0h(x) =0h(x)=0;
- μ∗g(x)=0;\mu*g(x) = 0;μ∗g(x)=0;
2.2KKT条件原理
KKT条件中第三个式子非常有趣,因为g(x)<=0g(x)<=0g(x)<=0,如果要满足这个等式,必须μ=0\mu=0μ=0或者g(x)=0g(x)=0g(x)=0. 这是SVM的很多重要性质的来源,如支持向量的概念。
接下来主要介绍KKT条件,推导及应用。为简化证明过程,设不等式约束如下:
min f(x)s.t.gj(x)≤0j=1,2,...,p
\begin{align*}
&min\ f(x) \\
s.t.\quad &g_j(x) \le 0\quad j=1,2,...,p \\
\end{align*}
s.t.min f(x)gj(x)≤0j=1,2,...,p
其中f(x)f(x)f(x)为目标函数,gj(x)≤0g_j(x)\le0gj(x)≤0为不等式约束条件
min f(x)s.t.gj(x)≤0j=1,2,...,p
\begin{align*}
&min\ f(x) \\
s.t.\quad &g_j(x) \le 0\quad j=1,2,...,p \\
\end{align*}
s.t.min f(x)gj(x)≤0j=1,2,...,p
其中f(x)f(x)f(x)为目标函数,gj(x)≤0g_j(x)\le0gj(x)≤0为不等式约束条件
letL(x,μ)=f(x)+∑j=1pujgj(x)whereuj≥0,gj(x)≤0∴ug(x)≤0∴maxμ L(x,μ)=f(x)(1)sominx maxμ L(x,μ)=minxf(x)(2)∵maxμ minx L(x,μ)=maxμ(minx f(x)+minx ug(x)anduj≥0,gj(x)≤0∴μg(x)={0uj=0 or gj(x)=0−∞uj<0 and gj(x)>0somaxμ minx L(x,μ)=minxf(x),when u=0 or g(x)=0(3)because(1)(2)maxμ minx L(x,μ)=minx maxμ L(x,μ)=minxf(x),when ug(x)=0(4)
\begin{align*}
&let&
&L(x,\mu) = f(x) + \sum_{j=1}^{p}u_jg_j(x) \\
&where&
&u_j\ge 0,\quad g_j(x)\le0 \\
&\therefore&
&ug(x)\le 0 \\
&\therefore&
&\mathop{max}\limits_{\mu}\ L(x,\mu) = f(x)& &(1)&\\
&so&
&\mathop{min}\limits_x \ \mathop{max}\limits_{\mu}\ L(x,\mu) =\mathop{min}\limits_x f(x)& &(2)&\\ \\
&\because&
&\mathop{max}\limits_{\mu}\ \mathop{min}\limits_x\ L(x,\mu) =
\mathop{max}\limits_{\mu}(\mathop{min}\limits_{x}\ f(x) +\mathop{min}\limits_{x}\ ug(x) & \\
&and&
&u_j\ge 0,\quad g_j(x)\le0 \\ &\\
&\therefore&
&\mu g(x)=\left\{
\begin{align*}
& 0 & &u_j = 0\ or\ g_j(x)=0 \\
&-\infty & &u_j < 0\ and\ g_j(x)>0 \\
\end{align*}
\right.&\\
&so&
&\mathop{max}\limits_{\mu} \ \mathop{min}\limits_{x}\ L(x,\mu) =\mathop{min}\limits_x f(x)
,\quad when\ u = 0\ or\ g(x)=0& &(3)&\\ \\
&because(1) (2)&
&\mathop{max}\limits_{\mu} \ \mathop{min}\limits_{x}\ L(x,\mu) =
\mathop{min}\limits_x \ \mathop{max}\limits_{\mu}\ L(x,\mu)=
\mathop{min}\limits_x f(x),\quad when\ ug(x)=0& &(4)&\\ \\
\end{align*}
letwhere∴∴so∵and∴sobecause(1)(2)L(x,μ)=f(x)+j=1∑pujgj(x)uj≥0,gj(x)≤0ug(x)≤0μmax L(x,μ)=f(x)xmin μmax L(x,μ)=xminf(x)μmax xmin L(x,μ)=μmax(xmin f(x)+xmin ug(x)uj≥0,gj(x)≤0μg(x)={0−∞uj=0 or gj(x)=0uj<0 and gj(x)>0μmax xmin L(x,μ)=xminf(x),when u=0 or g(x)=0μmax xmin L(x,μ)=xmin μmax L(x,μ)=xminf(x),when ug(x)=0(1)(2)(3)(4)
其中我们称maxμ minx L(x,μ)\mathop{max}\limits_{\mu} \ \mathop{min}\limits_{x}\ L(x,\mu)μmax xmin L(x,μ)为原问题 minx maxμ L(x,μ)=\mathop{min}\limits_x \ \mathop{max}\limits_{\mu}\ L(x,\mu)=xmin μmax L(x,μ)=的对偶问题,在满足一定条件时,二者的解是相同的。设解为x∗x^*x∗,由公式(1)和公式(4可得到:
∵minx f(x)=f(x∗)=maxμ L(x∗,μ)∵maxμ minx L(x,μ)=minxf(x),when ug(x)=0∴minx L(x,μ)= L(x∗,μ)因此x∗是L(x,μ)的极值点:∂L(x,μ)∂x∣x=x∗=0
\begin{align*}
&\because\quad
\mathop{min}\limits_x\ f(x) = f(x^*) =\mathop{max}\limits_{\mu}\ L(x^*,\mu)\\
&\because\quad
\mathop{max}\limits_{\mu} \ \mathop{min}\limits_{x}\ L(x,\mu) =\mathop{min}\limits_x f(x),\quad when\ ug(x)=0\\
&\therefore \quad
\mathop{min}\limits_{x}\ L(x,\mu)=\ L(x^*,\mu)\\
&因此x^*是L(x,\mu)的极值点:\frac{\partial L(x,\mu)}{\partial x|x=x^*}=0
\end{align*}
∵xmin f(x)=f(x∗)=μmax L(x∗,μ)∵μmax xmin L(x,μ)=xminf(x),when ug(x)=0∴xmin L(x,μ)= L(x∗,μ)因此x∗是L(x,μ)的极值点:∂x∣x=x∗∂L(x,μ)=0
其中我们称maxμ minx L(x,μ)\mathop{max}\limits_{\mu} \ \mathop{min}\limits_{x}\ L(x,\mu)μmax xmin L(x,μ)为原问题 minx maxμ L(x,μ)=\mathop{min}\limits_x \ \mathop{max}\limits_{\mu}\ L(x,\mu)=xmin μmax L(x,μ)=的对偶问题,在满足一定条件时,二者的解是相同的。设解为x∗x^*x∗,由公式(1)和公式(4可得到:
∵minx f(x)=f(x∗)=maxμ L(x∗,μ)∵maxμ minx L(x,μ)=minxf(x),when ug(x)=0∴minx L(x,μ)= L(x∗,μ)因此x∗是L(x,μ)的极值点:∂L(x,μ)∂x∣x=x∗=0
\begin{align*}
&\because\quad
\mathop{min}\limits_x\ f(x) = f(x^*) =\mathop{max}\limits_{\mu}\ L(x^*,\mu)\\
&\because\quad
\mathop{max}\limits_{\mu} \ \mathop{min}\limits_{x}\ L(x,\mu) =\mathop{min}\limits_x f(x),\quad when\ ug(x)=0\\
&\therefore \quad
\mathop{min}\limits_{x}\ L(x,\mu)=\ L(x^*,\mu)\\
&因此x^*是L(x,\mu)的极值点:\frac{\partial L(x,\mu)}{\partial x|x=x^*}=0
\end{align*}
∵xmin f(x)=f(x∗)=μmax L(x∗,μ)∵μmax xmin L(x,μ)=xminf(x),when ug(x)=0∴xmin L(x,μ)= L(x∗,μ)因此x∗是L(x,μ)的极值点:∂x∣x=x∗∂L(x,μ)=0
以上我们以及得到了KKT条件中的第一条和第三条,若将等式约束一并纳入,则有
∂L(x,λ,μ)∂λ=h(x)=0
\frac{\partial L(x,\lambda,\mu)}{\partial \lambda}= h(x)=0
∂λ∂L(x,λ,μ)=h(x)=0
由此我们得到了KKT条件中的第二条。
注:x,λ,μ,h(x),g(x)x,\lambda,\mu,h(x),g(x)x,λ,μ,h(x),g(x)均为向量
∂L(x,μ)∂x∣x=x∗=0\frac{\partial L(x,\mu)}{\partial x|x=x^*}=0∂x∣x=x∗∂L(x,μ)=0,说明了在x∗x^*x∗处f(x)f(x)f(x)的梯度是hi(x∗)h_i(x^*)hi(x∗)和gj(x∗)g_j(x^*)gj(x∗)梯度的的线性组合
三、具体应用SVM(支持向量机)
问题背景与支持向量
给定训练样本集DDD,分类学习基本思想就是找到一个超平面划分,将不同的样本分开,但能将训练样本分开的超平面有许多(如图),选择哪一个就是我们要考虑的问题。

如图所示,存在多个超平面划分将两类样本分开(训练集DDD中样本形式为(x,y),x(x,y),x(x,y),x为特征向量,yyy为分类标签y∈{−1,1}y\in\{-1,1\}y∈{−1,1})
不难想到,我们选择“正中间”超平面作为分界线效果最好,因为当训练集出现局部扰动时,该划分对其容忍性最好,换言之,当训练集出现异常样本时,该划分比起其他划分更不容易出错。在线性空间中,我们可以通过线性方程来表示超平面划分:
ωTx+b=0
\omega^Tx + b =0
ωTx+b=0
ω=(ω1,ω2,...,ωd)\omega=(\omega_1,\omega_2,...,\omega_d)ω=(ω1,ω2,...,ωd)为超平面法向量,任意样本点xxx到平面法向量的距离可表示为:
∣ωTx+b∣∥ω∥
\frac{|\omega^Tx + b|}{\|\omega\|}
∥ω∥∣ωTx+b∣
对于能正确分类样本的超平面,有对任意样本(xi,yi)∈D(x_i,y_i)\in D(xi,yi)∈D,当yi=+1y_i=+1yi=+1时,ωT+b>0\omega^T+b>0ωT+b>0,当yi=−1y_i=-1yi=−1时,ωT+b<0\omega^T+b<0ωT+b<0,对任意ω、b\omega、bω、b只要满足上述条件,我们就可以做一个简单的伸缩变换使得满足:
{ωT+b≥+1, yi=+1ωT+b≤−1, yi=−1
\left\{
\begin{align*}
&\omega^T+b\ge +1,&\ &y_i=+1 \\
&\omega^T+b\le -1,&\ &y_i=-1 \\
\end{align*}
\right.
{ωT+b≥+1,ωT+b≤−1, yi=+1yi=−1
距离平面最近的几个训练样本点使等号成立,被称为支持向量,支持向量到超平面的距离为1∥ω∥\frac{1}{\|\omega\|}∥ω∥1,两个异类支持向量到平面的距离和为:
γ=2∥ω∥
\gamma = \frac{2}{\|\omega\|}
γ=∥ω∥2
这个距离和被称之为间隔。

现在让我们回顾我们的任务:能将训练样本分开的超平面有许多(如图),选择一个分类效果最好,对误差容忍性最好的超平面划分。那么怎么样的超平面才是效果最好的,答案是γ\gammaγ最大,也就是2∥ω∥\frac{2}{\|\omega\|}∥ω∥2最大的平面,于是我们就得到了一个优化问题,找到满足约束的ω、b\omega、bω、b使得,γ\gammaγ最大:
maxω,b 2∥ω∥s.t. yi(ωTxi+b)≥1,i=1,2....,d
\mathop{max}\limits_{\omega,b} \ \frac{2}{\|\omega\|}\\
s.t.\ y_i(\omega^Tx_i + b)\ge 1,\quad i=1,2....,d
ω,bmax ∥ω∥2s.t. yi(ωTxi+b)≥1,i=1,2....,d
我们可以做一个简单的等价,使其转化为优化问题的标准型:
minω,b 12∥ω∥2s.t. yi(ωTxi+b)≥1,i=1,2....,d
\mathop{min}\limits_{\omega,b} \ \frac{1}{2}\|\omega\|^2\\
s.t.\ y_i(\omega^Tx_i + b)\ge 1,\quad i=1,2....,d
ω,bmin 21∥ω∥2s.t. yi(ωTxi+b)≥1,i=1,2....,d
这就是支持向量机(Support Vector Machine)的基本型。
对偶问题
如上述,我们得到了一个凸二次规划问题,对其使用拉格朗日乘子法:为每条约束条件添加拉格朗日乘子αi\alpha_iαi,得到拉格朗日函数:
L(ω,b,α)=12∥ω∥2+∑i=1mαi(1−yi(ωiTxi+b))
L(\omega,b,\alpha) =\frac{1}{2}\|\omega\|^2 + \sum_{i=1}^{m}\alpha_i(1-y_i(\omega_i^Tx_i + b))
L(ω,b,α)=21∥ω∥2+i=1∑mαi(1−yi(ωiTxi+b))
令∂L∂ω=0, ∂L∂b=0\frac{\partial L}{\partial \omega}=0,\ \frac{\partial L}{\partial b}=0∂ω∂L=0, ∂b∂L=0,得到:
ω=∑i=1mαiyixi0=∑i=1mαiyi
\omega = \sum_{i=1}^{m}\alpha_iy_ix_i\\
0 = \sum_{i=1}^{m}\alpha_iy_i
ω=i=1∑mαiyixi0=i=1∑mαiyi
带入L(ω,b,α)L(\omega,b,\alpha)L(ω,b,α),将ω,b\omega,bω,b消去,得到原问题的对偶问题:
maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxiTxjs.t.∑i=1mαiyi=0,αi≥0,i=1,2,...,m
\mathop{max}\limits_{\alpha} \sum_{i=1}^{m}\alpha_i - \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j\\
s.t. \sum_{i=1}^m\alpha_iy_i = 0,\quad \alpha_i\ge0,\quad i=1,2,...,m
αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxjs.t.i=1∑mαiyi=0,αi≥0,i=1,2,...,m
解出α\alphaα后,求得ω,b\omega,bω,b得到我们想要的模型:
f(x)=ωTx+b=∑i=1mαiyixiTx+b
f(x) = \omega^Tx + b = \sum_{i=1}^m \alpha_i y_i x_i^T x + b
f(x)=ωTx+b=i=1∑mαiyixiTx+b
由于是不等式约束,还需满足KKT条件:
{αi≥0yif(xi)−1≥0αi(yif(xi)−1)=0
\left\{
\begin{align*}
\quad
&\alpha_i \ge 0 \\
&y_if(x_i) - 1 \ge 0\\
&\alpha_i(y_if(x_i)-1)=0
\end{align*}
\right.
⎩⎨⎧αi≥0yif(xi)−1≥0αi(yif(xi)−1)=0
这揭示了SVM的一个重要性质,对任意训练样本(xi,yi)(x_i,y_i)(xi,yi),总有αi=0\alpha_i =0αi=0或者yif(xi)−1=0y_if(x_i) - 1 = 0yif(xi)−1=0,若αi=0\alpha_i =0αi=0,则不会出现在f(x)f(x)f(x)的求和式中,因此不会对最终模型f(x)f(x)f(x)照成影响,若αi=0,则yif(xi)=1\alpha_i =0,则y_if(x_i) = 1αi=0,则yif(xi)=1,这表明样本(xi,yi)(x_i,y_i)(xi,yi)是一个支持向量。这告诉我们训练结束后,大部分训练样本都不需要保留,最终模型仅与f(x)f(x)f(x)有关。
623

被折叠的 条评论
为什么被折叠?



