这里我们主要探讨有条件约束情况下的目标函数优化(求极值)
这类问题也称为
条件极值。
本文参考了西瓜书以及B站的讲解视频…
1.拉格朗日函数
首先我们看到一个二元函数的例子:
求函数z=f(x,y)在条件ϕ(x,y)=0限制下的极值?
消元法:
设函数f(x,y),ϕ(x,y)在(x0,y0)附近具有连续偏导数,且ϕx′(x,y),ϕy′(x,y)不同时为0,将y视为由方程ϕ(x,y)确定的x的函数y=ψ(x),于是二元函数的条件极值问题就化为了一元函数z=f(x,ψ(x))的无条件极值问题。
因此在极值点处必须满足一元函数极值存在的必要条件(即导数等于0):
dxdz=0
进一步z对x求导得:
dxdz=fx′(x,y)+fy′(x,y)dxdy(1)
又由ϕ(x,y)=0得(这里使用了隐函数的微分法):
dxdy=−ϕy′(x,y)ϕx′(x,y)(2)
将(2)式代入(1)中,可得:
dxdz=fx′(x,y)−ϕy′(x,y)ϕx′(x,y)fy′(x,y)
根据极值存在必要条件的等式dxdz=0以及题目中的约束可得极值点的坐标必须满足以下方程:
⎩⎨⎧fx′(x,y)−ϕy′(x,y)ϕx′(x,y)fy′(x,y)=0(3)ϕ(x,y)=0(4)
我们将方程(3)(4)联立求解即可得到我们的极值点。
拉格朗日函数的做法:
令F(x,y)=f(x,y)+λϕ(x,y)(这里的F(x,y)就是我们的拉格朗日函数,λ称为拉格朗日乘数)
对上式求偏导,得:
{Fx′(x,y)=fx′(x,y)+λϕx′(x,y)Fy′(x,y)=fy′(x,y)+λϕy′(x,y)
令
Fx′(x,y)=0,Fy′(x,y)=0
此时我们得到无条件极值的极值点要满足的必要条件:
{fx′(x,y)+λϕx′(x,y)=0fy′(x,y)+λϕy′(x,y)=0
上式中消去λ我们可以得到与消元法最后相同的结果,这也证明了为什么要这样构造拉格朗日函数。
推广到n元函数在m个附加条件下的极値问题,拉格朗日函数的一般形式:
F(x1,x2,...,xn)=f(x1,x2,...,xn)+i=1∑mλiϕi(x1,x2,...,xn)
然后对其求偏导解方程就可以得到极值点了。
(了解完拉格朗日函数之后,我们回到SVM的所要解决的问题,即在给定条件下求最小值,这里的条件主要分为了等式约束条件和不等式两种。)
2.等式约束条件
这和我们上面的例子是差不多的,假设我们的目标函数是f(x),约束条件hi(x)=0,即:
minf(x)
s.t.hi(x)=0,i=1,2,3...
这里的x表示的是向量(x1,x2,...,xn)。
解决这类问题主要有以下几个步骤:
1.构造拉格朗日函数:
F(x)=f(x)+∑i=1mλihi(x)
2.对变量求偏导
3.联合等式约束条件和偏导等于0进行求解得到极值点(最优解),再将极值点代入我们的目标函数,得到最小值。
3.不等式约束条件
现在我们来看看SVM所需要优化的问题(也成为原问题):
{min(w,b)21wTws.t.yi(wTxi+b)≥1⟺1−yi(wTxi+b)≤0
(注:min的下标(w,b)表示是找到一个w和b,来最小化目标函数,并且i=1,2,…N)
(1)首先构造拉格朗日函数:
L(w,b,λ)=21wTw+∑i=1Nλi(1−yi(wTxi+b))
(2)接下来我们可以把原问题转为如下形式:
{min(w,b)maxλL(w,b,λ)s.t.λi≥0
原问题中w,b是要满足条件1−yi(wTxi+b)≤0的,那么这么转换后和原问题是否等价,并且我们的优化目标是否也和原优化目标等价?
接下来可以粗略证明一下:
首先我们求解一下maxλL(w,b,λ)到底等于多少?
我们构造的拉格朗日函数中1−yi(wTxi+b)这一项无非两种情况大于0或小于等于0.
1)如果1−yi(wTxi+b)>0,当λ→∞时,∑i=1Nλi(1−yi(wTxi+b))也趋于∞,所以maxλL(w,b,λ)=∞
2)如果1−yi(wTxi+b)≤0,当λ=0时,∑i=1Nλi(1−yi(wTxi+b))取得最小值为0,所以maxλL(w,b,λ)=21wTw。
最后,min(w,b)maxλL(w,b,λ)=min(w,b)(∞,21wTw)=min(w,b)21wTw.
可以看到我们的优化目标是等价的,并且在求min的时候我们自动忽略掉等于∞的那部分(也就是忽舍弃w,b满足1−yi(wTxi+b)>0),所以我们λ,b也就自动满足原问题中的条件,所以现在我们的问题是和原问题等价的,这也是构造拉格朗日函数的巧妙之处。
这么做的好处就是我们把原问题体重带约束转换为了对w,b无约束的问题,这就很方便我们后面求最优解了。
(3)利用对偶关系将我们上面得到的新问题再次转换为如下形式:
{maxλmin(w,b)L(w,b,λ)s.t.λi≥0
因为凸二次规划问题是具有强对偶关系的,所以只可以直接这么转换的(凸二次规划问题就是目标函数是二次,条件是线性的这种情况)。
这么转换的原因是此时w,b无约束,λi有约束(要满足λi≥0),而无约束的情况是很好求极值的,所以我们希望先求min这部分。
接下来我们来求解min(w,b)L(w,b,λ):
因为此时w,b是无约束的,所以我们就可以通过直接对w,b求偏导的方式来求极值。(求导的过程就不写出来了,直接放结果)
{δbδL(w,b,λ)=0⟺∑i=1Nλiyi=0δwδL(w,b,λ)=0⟺w=∑i=1Nλiyixi
此时我们求得的w就是最优解,虽然还没求得b,但是将求得的结果代入L(w,b,λ)$也会把b消掉,代入后的结果就得到了最小值,即:
min(w,b)L(w,b,λ)=−21i=1∑Nj=1∑NλiλjyiyjxiTxj+i=1∑Nλi
(4)将上面求得的最小值代入优化问题中,(3)中的问题就变成如下形式:
⎩⎪⎨⎪⎧maxλ(−21∑i=1N∑j=1NλiλjyiyjxiTxj+∑i=1Nλi)s.t.λi≥0∑i=1Nλiyi=0
前面我们已经求得了w的最优解,现在我们的任务是通过上面的优化问题来求b的最优解,我们先引入一个KKT条件。
(5)KKT条件:
⎩⎪⎨⎪⎧λi(1−yi(wTxi+b))=0λi≥01−yi(wTxi+b)≤0
放一个定理:原问题和对偶问题满足“强对偶关系”的充要条件就是他们满足KKT条件。
而前面我们已经说过了凸二次规划问题具有强对偶关系,所以我们(4)中的问题是满足KKT条件的。
现在我们要用这个条件来求b:
对于任意支持向量(xk,yk),都有1−yk(wTxk+b)=0。(因为支持向量就是到超平面距离最短的那些点,也就是下图中虚线上的点)
将w代入求得求得b=yk1−∑i=1NλiyixiTxk
但是现实中会采用一种更鲁棒的做法:使用所有支持向量来取平均值。
b=∣S∣1∑k∈S(yk1−∑i=1NλiyixiTxk) (S是所有支持向量的下标集合,|S|即集合的大小)

最后我们的超平面模型f(x)=wTx+b就变成以下形式:
f(x)=i=1∑NλiyixiTx+∣S∣1k∈S∑(yk1−i=1∑NλiyixiTxk)