18[NLP训练营]拉格朗日乘子法、对偶、KTT


公式输入请参考: 在线Latex公式

前言

一般情况下,最优化问题分为三类
一、 无约束条件下的最优化问题
这种最优化问题比较简单,直接求导为0就可以得到。
二、 等式约束下的最优化问题
即除了目标函数之外,还有一些约束条件。假设目标函数为 f ( x ) f(x) f(x),约束条件为 g i ( x ) g_i(x) gi(x),这里的有 R R R个约束条件
{ M i n i m i z e f ( x ) s . t .   g i ( x ) = 0   i = 1 , 2 , . . . , R \begin{cases} & Minimizef(x)\\ &s.t.\space g_i(x)=0 \space i=1,2,...,R\\ \end{cases} {Minimizef(x)s.t. gi(x)=0 i=1,2,...,R
求这样的最优化问题有两种方法:
一种是使用消元法来解,但是这种方法有的时候很难求解,甚至无解。
另一种方法便是使用拉格朗日乘子法,其求解步骤分为三步:
构造拉格朗日函数
求解变量的偏导方程
代入目标函数
说人话就是像下图一样:把等式约束通过拉格朗日去掉,转换到目标函数中,使其变成第一种优化问题。
在这里插入图片描述
三、 既有等式约束,又有不等式约束的情况
{ M i n i m i z e f ( x ) s . t .   h i ( x ) = 0 ,   i = 1 , 2 , . . . , k c j ( x ) ≤ 0 ,   j = 1 , 2 , . . . , l \begin{cases} & Minimizef(x)\\ &s.t.\space h_i(x)=0 ,\space i=1,2,...,k\\ &c_j(x)\leq0,\space j=1,2,...,l\\ \end{cases} Minimizef(x)s.t. hi(x)=0, i=1,2,...,kcj(x)0, j=1,2,...,l
这个要用KTT的方式来解。
下面结合SVM来看。

Lagrangian: Equality Constraint

例子

根据上图来一个例子:
{ M i n i m i z e   ( x 1 2 + x 2 2 ) s . t .   x 2 − x 1 = − 1 \begin{cases} & Minimize\space (x_1^2+x_2^2)\\ &s.t.\space x_2-x_1=-1\\ \end{cases} {Minimize (x12+x22)s.t. x2x1=1
根据拉格朗日,变成:
L ( λ , x ) = ( x 1 2 + x 2 2 ) + λ ( x 2 − x 1 + 1 ) L(\lambda,x)= (x_1^2+x_2^2)+\lambda(x_2-x_1+1) L(λ,x)=(x12+x22)+λ(x2x1+1)
求最小值可以求偏导并等于0即可。
{ ∂ L ∂ x 1 = 2 x 1 − λ = 0 ∂ L ∂ x 2 = 2 x 2 − λ = 0 ∂ L ∂ λ = x 2 − x 1 + 1 = 0 \begin{cases} & \cfrac{\partial L}{\partial{x_1}}=2x_1-\lambda=0\\ &\cfrac{\partial L}{\partial{x_2}}=2x_2-\lambda=0\\ &\cfrac{\partial L}{\partial{\lambda}}=x_2-x_1+1=0\\ \end{cases} x1L=2x1λ=0x2L=2x2λ=0λL=x2x1+1=0
解上面的方程组就可以得到最优解。
现在来看看,为什么可以把等式约束加上一个系数 λ \lambda λ后,并入目标函数后和原来的函数等价?

等价的原理

从几何上面看:
在这里插入图片描述
最优解 x ∗ x^* x有什么特点?
就是这点上目标函数的梯度和直线的梯度是平行的。
▽ x f ( x ) ∥ ▽ x g ( x ) \triangledown_xf(x)\parallel \triangledown_xg(x) xf(x)xg(x)
两个向量平行,如果要变成相等就是要乘上一个系数:
▽ x f ( x ) = ± λ ▽ x g ( x ) ▽ x f ( x ) ∓ λ ▽ x g ( x ) = 0 ▽ x ( f ( x ) ∓ λ g ( x ) ) = 0 → ▽ x ( f ( x ) + λ g ( x ) ) = 0 \triangledown_xf(x)=\pm \lambda\triangledown_xg(x)\\ \triangledown_xf(x)\mp \lambda\triangledown_xg(x)=0\\ \triangledown_x(f(x)\mp\lambda g(x))=0\to \triangledown_x(f(x)+\lambda g(x))=0 xf(x)=±λxg(x)xf(x)λxg(x)=0x(f(x)λg(x))=0x(f(x)+λg(x))=0
这个实际上就是转换后的目标函数对x的偏导:
∂ f ( x ) + λ g ( x ) ∂ x = 0 \cfrac{\partial{f(x)+\lambda g(x)}}{\partial{x}}=0 xf(x)+λg(x)=0
另外目标函数对 λ \lambda λ的偏导:
∂ f ( x ) + λ g ( x ) ∂ λ = g ( x ) = 0 \cfrac{\partial{f(x)+\lambda g(x)}}{\partial{\lambda}}=g(x)=0 λf(x)+λg(x)=g(x)=0
这个和约束一样。因此从几何上推导出来变形后的目标函数和原来带约束的目标函数是等价的。

Multiple Equalities

在简介里面中的带等式优化的问题中,等式约束条件是有多个的。因此我们把上面只带一个等式约束的情况进行泛化:
{ M i n i m i z e   f ( x ) s . t .   g i ( x ) = 0   i = 1 , 2 , . . . , R \begin{cases} & Minimize\space f(x)\\ &s.t.\space g_i(x)=0 \space i=1,2,...,R\\ \end{cases} {Minimize f(x)s.t. gi(x)=0 i=1,2,...,R
经过拉格朗日处理后:
M i n i m i z e   f ( x ) + ∑ i = 1 R λ i g i ( x ) Minimize\space f(x)+\sum_{i=1}^R\lambda_ig_i(x) Minimize f(x)+i=1Rλigi(x)
然后就是分别求偏导后等于0:

{ ∂ L ∂ x 1 = 0 ∂ L ∂ x 2 = 0 ⋮ ∂ L ∂ λ = 0 \begin{cases} & \cfrac{\partial L}{\partial{x_1}}=0\\ &\cfrac{\partial L}{\partial{x_2}}=0\\ &\quad\vdots\\ &\cfrac{\partial L}{\partial{\lambda}}=0\\ \end{cases} x1L=0x2L=0λL=0
下面来看不等式约束的优化:

Lagrangian:Inequality Constraint

{ M i n i m i z e   f ( x ) s . t .   h ( x ) ≤ 0 \begin{cases} & Minimize \space f(x)\\ &s.t.\space h(x)\leq0 \\ \end{cases} {Minimize f(x)s.t. h(x)0
这里只有小于等于0的情况,因为即使是大于等于0的不等式也可以两边 同时除以-1,不等号反向来转换为小于等于0的情况。
然后看如何把约束条件转入目标函数?下面分两种情况讨论:
1、没有加限制条件的目标函数的最优解刚好也满足约束条件。
第一步:求出没有加限制条件的目标函数的最优解 x ∗ x^* x
第二步:验证 x ∗ x^* x满足以下约束条件:
λ = 0 , h ( x ) ≤ 0 \lambda=0,h(x)\leq0 λ=0,h(x)0
2、没有加限制条件的目标函数的最优解不满足约束条件。
下图的阴影部分代表 x x x满足条件 h ( x ) ≤ 0 h(x)\leq0 h(x)0

在这里插入图片描述
可以看到,最优解应该是绿色的 x ∗ ′ x^{*'} x,刚好在 h ( x ) = 0 h(x)=0 h(x)=0上,且 λ > 0 \lambda>0 λ>0。因为如果 λ = 0 \lambda=0 λ=0就变成第一种情况了。
现在把两种情况进行合并:
{ λ = 0 , h ( x ) ≤ 0 λ > 0 , h ( x ) = 0   → λ h ( x ) = 0 \begin{cases} & \lambda=0,h(x)\leq0\\ &\lambda>0,h(x)=0\ \end{cases}\to \lambda h(x)=0 {λ=0,h(x)0λ>0,h(x)=0 λh(x)=0
最后把不等式约束加入目标函数结果:
{ M i n i m i z e   f ( x ) + λ h ( x ) s . t . λ h ( x ) = 0 , h ( x ) ≤ 0 \begin{cases} & Minimize\space f(x)+\lambda h(x)\\ &s.t.\quad \lambda h(x)=0,h(x)\leq0\\ \end{cases} {Minimize f(x)+λh(x)s.t.λh(x)=0,h(x)0

KTT conditions

现在根据上面的结论,来看看如果优化问题中既含有等式约束又含有不等式约束应该如何解决:
{ M i n i m i z e   f ( x ) s . t .   g i ( x ) = 0 ,   i = 1 , 2 , . . . , R h j ( x ) ≤ 0 ,   j = 1 , 2 , . . . , R ′ \begin{cases} & Minimize\space f(x)\\ &s.t.\space g_i(x)=0 ,\space i=1,2,...,R\\ &h_j(x)\leq0,\space j=1,2,...,R'\\ \end{cases} Minimize f(x)s.t. gi(x)=0, i=1,2,...,Rhj(x)0, j=1,2,...,R
将条件加入目标函数后变成:
{ M i n i m i z e   f ( x ) + ∑ i = 1 R λ i g i ( x ) + ∑ j = 1 R ′ μ j h j ( x ) s . t .   ∀ i , j ,   λ i , μ j ≥ 0 ∀ j , μ j h j ( x ) = 0 ∀ j , h j ( x ) ≤ 0 \begin{cases} & Minimize\space f(x)+\sum_{i=1}^R\lambda_ig_i(x)+\sum_{j=1}^{R'}\mu_jh_j(x)\\ &s.t. \space \forall i,j,\space \lambda_i,\mu_j\ge0\\ &\quad\quad\forall j,\mu_jh_j(x)=0\\ &\quad\quad\forall j,h_j(x)\leq0\\ \end{cases} Minimize f(x)+i=1Rλigi(x)+j=1Rμjhj(x)s.t. i,j, λi,μj0j,μjhj(x)=0j,hj(x)0
上面的三个约束称为 KKT条件。

KKT Condition of SVM

先回顾SVM的硬间隔表达:
{ M i n i m i z e 1 2 ∣ ∣ w ∣ ∣ 2 s . t .     ( w T ⋅ x i + b ) y i − 1 ≥ 0 , i = 1 , 2 , . . , n \begin{cases} & Minimize \cfrac{1}{2}||w||^2 \\ &s.t. \space \space \space (w^T\cdot x_i+b)y_i-1\geq 0, i=1,2,..,n\\ \end{cases} Minimize21w2s.t.   (wTxi+b)yi10,i=1,2,..,n
这里注意,约束条件先可以不等号变向转换为小于等于0的情况
经过拉格朗日套路:
{ M i n i m i z e 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 n λ i [ 1 − y i ( w T ⋅ x i + b ) ] s . t .   ∀ i ,   λ i ≥ 0 ∀ i , λ i [ 1 − y i ( w T ⋅ x i + b ) ] = 0 1 − y i ( w T ⋅ x i + b ) ≤ 0 \begin{cases} & Minimize \cfrac{1}{2}||w||^2 +\sum_{i=1}^n\lambda_i[1-y_i(w^T\cdot x_i+b)]\\ &s.t. \space \forall i,\space \lambda_i\ge0\\ &\quad\quad\forall i,\lambda_i[1-y_i(w^T\cdot x_i+b)]=0\\ &\quad\quad1-y_i(w^T\cdot x_i+b)\leq0\\ \end{cases} Minimize21w2+i=1nλi[1yi(wTxi+b)]s.t. i, λi0i,λi[1yi(wTxi+b)]=01yi(wTxi+b)0
以上就是SVM版本的KKT条件。也是SVM的Primal Problem

Primal-Dual Problem

1、Primal问题有可能很难解决。
2、在Dual问题上可能会发现一些有趣的insight。
我们希望Primal的结果等于Dual问题的结果,但是Primal问题一般是全局解(optimal),Dual问题一般是子目标解(sub-optimal)。
我们把全局解(optimal)和子目标解(sub-optimal)的差距叫gap,理想上gap是0。

Dual Derivation of SVM

先把SVM的目标函数搬下来:
{ L = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 n λ i [ 1 − y i ( w T ⋅ x i + b ) ] s . t .   ∀ i ,   λ i ≥ 0 ∀ i , λ i [ 1 − y i ( w T ⋅ x i + b ) ] = 0 ∀ i , 1 − y i ( w T ⋅ x i + b ) ≤ 0 \begin{cases} & L= \cfrac{1}{2}||w||^2 +\sum_{i=1}^n\lambda_i[1-y_i(w^T\cdot x_i+b)]\\ &s.t. \space \forall i,\space \lambda_i\ge0\\ &\quad\quad\forall i,\lambda_i[1-y_i(w^T\cdot x_i+b)]=0\\ &\quad\quad\forall i,1-y_i(w^T\cdot x_i+b)\leq0\\ \end{cases} L=21w2+i=1nλi[1yi(wTxi+b)]s.t. i, λi0i,λi[1yi(wTxi+b)]=0i,1yi(wTxi+b)0
分别对参数进行求偏导:
∂ L ∂ w = 0 → w + ∑ i = 1 n λ i ( − y i x i ) → w = ∑ i = 1 n λ i x i y i \cfrac{\partial L}{\partial{w}}=0\to w+\sum_{i=1}^n\lambda_i(-y_ix_i)\to w=\sum_{i=1}^n\lambda_ix_iy_i wL=0w+i=1nλi(yixi)w=i=1nλixiyi
∂ L ∂ b = 0 → ∑ i = 1 n λ i ( − y i ) = 0 → ∑ i = 1 n λ i y i = 0 \cfrac{\partial L}{\partial{b}}=0\to \sum_{i=1}^n\lambda_i(-y_i)=0\to \sum_{i=1}^n\lambda_iy_i=0 bL=0i=1nλi(yi)=0i=1nλiyi=0
代入目标函数,先看第一项:
1 2 ∣ ∣ w ∣ ∣ 2 = 1 2 w T w = 1 2 ( ∑ i = 1 n λ i x i y i ) T ( ∑ j = 1 n λ j x j y j ) = 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j x i T ⋅ x j y i y j \cfrac{1}{2}||w||^2 =\cfrac{1}{2}w^Tw=\cfrac{1}{2}(\sum_{i=1}^n\lambda_ix_iy_i)^T(\sum_{j=1}^n\lambda_jx_jy_j)\\ =\cfrac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\lambda_i\lambda_jx_i^T\cdot x_jy_iy_j 21w2=21wTw=21(i=1nλixiyi)T(j=1nλjxjyj)=21i=1nj=1nλiλjxiTxjyiyj
再看第二项:
∑ i = 1 n λ i [ 1 − y i ( w T ⋅ x i + b ) ] = ∑ i = 1 n λ i − ∑ i = 1 n λ i y i ( w T ⋅ x i + b ) = ∑ i = 1 n λ i − ∑ i = 1 n λ i y i w T x i − ∑ i = 1 n λ i y i b \sum_{i=1}^n\lambda_i[1-y_i(w^T\cdot x_i+b)]=\sum_{i=1}^n\lambda_i-\sum_{i=1}^n\lambda_iy_i(w^T\cdot x_i+b)\\ =\sum_{i=1}^n\lambda_i-\sum_{i=1}^n\lambda_iy_iw^Tx_i-\sum_{i=1}^n\lambda_iy_ib i=1nλi[1yi(wTxi+b)]=i=1nλii=1nλiyi(wTxi+b)=i=1nλii=1nλiyiwTxii=1nλiyib
其中: ∑ i = 1 n λ i y i = 0 \sum_{i=1}^n\lambda_iy_i=0 i=1nλiyi=0,并把 w w w代入,所以上式变为:
∑ i = 1 n λ i − ∑ i = 1 n λ i y i ( ∑ j = 1 n λ j x j y j ) T ⋅ x i = ∑ i = 1 n λ i − ∑ i = 1 n ∑ j = 1 n λ i λ j x i T ⋅ x j y i y j \sum_{i=1}^n\lambda_i-\sum_{i=1}^n\lambda_iy_i(\sum_{j=1}^n\lambda_jx_jy_j)^T\cdot x_i\\ =\sum_{i=1}^n\lambda_i-\sum_{i=1}^n\sum_{j=1}^n\lambda_i\lambda_jx_i^T\cdot x_jy_iy_j i=1nλii=1nλiyi(j=1nλjxjyj)Txi=i=1nλii=1nj=1nλiλjxiTxjyiyj
第一项加第二项得到对偶空间上的目标函数:
L = ∑ i = 1 n λ i − 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j x i T ⋅ x j y i y j L=\sum_{i=1}^n\lambda_i-\cfrac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\lambda_i\lambda_jx_i^T\cdot x_jy_iy_j L=i=1nλi21i=1nj=1nλiλjxiTxjyiyj
具体写出来:

{ M i n i m i z e   − 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j x i T ⋅ x j y i y j + ∑ i = 1 n λ i s . t .   ∀ i ,   λ i ≥ 0 ∀ i , ∑ i = 1 n λ i y i = 0 , w = ∑ i = 1 n λ i x i y i ( 这 里 的 两 个 式 子 是 偏 导 等 于 0 的 结 果 ) ∀ i , λ i [ 1 − y i ( w T ⋅ x i + b ) ] = 0 \begin{cases} & Minimize\space -\cfrac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\lambda_i\lambda_jx_i^T\cdot x_jy_iy_j+\sum_{i=1}^n\lambda_i\\ &s.t. \space \forall i,\space \lambda_i\ge0\\ &\quad\quad\forall i,\sum_{i=1}^n\lambda_iy_i=0,w=\sum_{i=1}^n\lambda_ix_iy_i(这里的两个式子是偏导等于0的结果)\\ &\quad\quad\forall i,\lambda_i[1-y_i(w^T\cdot x_i+b)]=0\\ \end{cases} Minimize 21i=1nj=1nλiλjxiTxjyiyj+i=1nλis.t. i, λi0i,i=1nλiyi=0,w=i=1nλixiyi(0)i,λi[1yi(wTxi+b)]=0
可以看到,这里只有 λ \lambda λ一个未知参数。这里最重要的一个地方就是 x i T ⋅ x j x_i^T\cdot x_j xiTxj,核函数也和这个东西有关。
下面大概讲讲核函数咋回事,没有具体的推导,估计后面再补充。

Kernel Trick

核函数为什么work?

这里先贴出之前将低维特征向量映射到高维特征向量会有什么问题:
在这里插入图片描述
就是时间复杂度变大了。
下面来看一个小例子,假设我们有两个二维的特征向量:
x = { x 1 , x 2 } , z = { z 1 , z 2 } x=\{x_1,x_2\},z=\{z_1,z_2\} x={x1,x2},z={z1,z2}
可以看到,如果要计算:
x T ⋅ z = ( x 1 z 1 + x 2 z 2 ) x^T\cdot z=(x_1z_1+x_2z_2) xTz=(x1z1+x2z2)
接下来我们通过函数 ϕ \phi ϕ来进行高维映射,变成:
ϕ ( x ) = { x 1 2 , x 2 2 , 2 x 1 x 2 } , ϕ ( z ) = { z 1 2 , z 2 2 , 2 z 1 z 2 } \phi(x)=\{x_1^2,x_2^2,\sqrt2x_1x_2\},\phi(z)=\{z_1^2,z_2^2,\sqrt2z_1z_2\} ϕ(x)={x12,x22,2 x1x2},ϕ(z)={z12,z22,2 z1z2}
高维映射后做同样的操作:
ϕ ( x ) T ϕ ( z ) = x 1 2 z 1 2 + x 2 2 z 2 2 + 2 x 1 x 2 z 1 z 2 = ( x 1 z 1 + x 2 z 2 ) 2 = ( x T ⋅ z ) 2 \begin{aligned}\phi(x)^T\phi(z)&=x_1^2z_1^2+x_2^2z_2^2+2x_1x_2z_1z_2\\&=(x_1z_1+x_2z_2)^2\\&=(x^T\cdot z)^2\end{aligned} ϕ(x)Tϕ(z)=x12z12+x22z22+2x1x2z1z2=(x1z1+x2z2)2=(xTz)2
由上面的推导操作我们可以看到,虽然维度变成更高维的了,但是某些特定的操作(这里的内积操作)时间复杂度居然没有增加(不是随便哪个操作都不增加),所以,如何选择映射的方式就是核函数了。
刚好这个例子,就是针对上面的操作 x i T ⋅ x j x_i^T\cdot x_j xiTxj的。

Kernel Trick

SVM的 x i T ⋅ x j x_i^T\cdot x_j xiTxj就变成要设计一个 ϕ \phi ϕ高维函数,使得这个 ϕ ( x i ) T ⋅ ϕ ( x j ) \phi(x_i)^T\cdot \phi(x_j) ϕ(xi)Tϕ(xj)内积计算的时间复杂度等同于 x i T ⋅ x j x_i^T\cdot x_j xiTxj,这个 ϕ \phi ϕ就是SVM的Kernel trick。
注意:Kernel trick不仅仅针对SVM,其他的一些算法也可以用,如:K-means。
核函数是有分类的:
我们现在用到的是Linear Kernel,对应的是Linearn SVM。
k ( x , y ) = x T ⋅ y k(x,y)=x^T\cdot y k(x,y)=xTy
还有其他的核函数,多项式核函数,Polygonal Kernel
k ( x , y ) = ( 1 + x T ⋅ y ) d k(x,y)=(1+x^T\cdot y)^d k(x,y)=(1+xTy)d
Gaussian Kernel:
k ( x , y ) = e x p ( − ∣ ∣ x − y ∣ ∣ 2 2 σ 2 ) k(x,y)=exp(\cfrac{-||x-y||^2}{2\sigma^2}) k(x,y)=exp(2σ2xy2)
关于如何设计核函数可以百度:mercer’s theorem。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值