公式输入请参考:
在线Latex公式
前言
一般情况下,最优化问题分为三类
一、 无约束条件下的最优化问题
这种最优化问题比较简单,直接求导为0就可以得到。
二、 等式约束下的最优化问题
即除了目标函数之外,还有一些约束条件。假设目标函数为
f(x),约束条件为
gi(x),这里的有
R个约束条件
{Minimizef(x)s.t. gi(x)=0 i=1,2,...,R
求这样的最优化问题有两种方法:
一种是使用消元法来解,但是这种方法有的时候很难求解,甚至无解。
另一种方法便是使用拉格朗日乘子法,其求解步骤分为三步:
构造拉格朗日函数
求解变量的偏导方程
代入目标函数
说人话就是像下图一样:把等式约束通过拉格朗日去掉,转换到目标函数中,使其变成第一种优化问题。
三、 既有等式约束,又有不等式约束的情况
⎩⎪⎨⎪⎧Minimizef(x)s.t. hi(x)=0, i=1,2,...,kcj(x)≤0, j=1,2,...,l
这个要用KTT的方式来解。
下面结合SVM来看。
Lagrangian:Equality Constraint
例子
根据上图来一个例子:
{Minimize (x12+x22)s.t. x2−x1=−1
根据拉格朗日,变成:
L(λ,x)=(x12+x22)+λ(x2−x1+1)
求最小值可以求偏导并等于0即可。
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∂x1∂L=2x1−λ=0∂x2∂L=2x2−λ=0∂λ∂L=x2−x1+1=0
解上面的方程组就可以得到最优解。
现在来看看,为什么可以把等式约束加上一个系数
λ后,并入目标函数?
从几何上面看:
最优解
x∗有什么特点?就是这点上目标函数的梯度和直线的梯度是平行的。
▽xf(x)∥▽xg(x)
两个向量平行,如果要变成相等就是要乘上一个系数:
▽xf(x)=±λ▽xg(x)▽xf(x)∓λ▽xg(x)=0▽x(f(x)∓λg(x))=0→▽x(f(x)+λg(x))=0
这个实际上就是转换后的目标函数对x的偏导:
∂x∂f(x)+λg(x)=0
另外目标函数对
λ的偏导:
∂λ∂f(x)+λg(x)=g(x)=0
这个和约束一样。因此从几何上推导出来变形后的目标函数和原来带约束的目标函数是等价的。
Multiple Equalities
在简介里面中的带等式优化的问题中,等式约束条件是有多个的。因此我们把上面只带一个等式约束的情况进行已给泛化:
{Minimize f(x)s.t. gi(x)=0 i=1,2,...,R
经过拉格朗日处理后:
Minimize f(x)+i=1∑Rλigi(x)
然后就是分别求偏导后等于0:
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧∂x1∂L=0∂x2∂L=0⋮∂λ∂L=0
下面来看不等式约束的优化:
Lagrangian:Inequality Constraint
{Minimize f(x)s.t. h(x)≤0
这里只有小于等于0的情况,因为即使是大于等于0的不等式也可以两边 同时除以-1,不等号反向来转换为小于等于0的情况。
然后看如何把约束条件转入目标函数?下面分两种情况讨论:
1、没有加限制条件的目标函数的最优解刚好也满足约束条件。
第一步:求出没有加限制条件的目标函数的最优解
x∗;
第二步:验证
x∗满足约束条件。
这个时候:
λ=0,h(x)≤0
2、没有加限制条件的目标函数的最优解不满足约束条件。
可以看到,最优解应该是绿色的
x∗′,刚好在
h(x)=0上,且
λ>0。因此如果
λ=0就变成第一种情况了。
现在把两种情况进行合并:
{λ=0,h(x)≤0λ>0,h(x)=0 →λh(x)=0
最后把不等式约束加入目标函数结果:
{Minimize f(x)+λh(x)s.t.λh(x)=0,h(x)≤0
KTT conditions
现在根据上面的结论,来看看如果优化问题中既含有等式约束又含有不等式约束应该如何解决:
⎩⎪⎨⎪⎧Minimize f(x)s.t. gi(x)=0, i=1,2,...,Rhj(x)≤0, j=1,2,...,R′
将条件加入目标函数后变成:
⎩⎪⎪⎪⎨⎪⎪⎪⎧Minimize f(x)+∑i=1Rλigi(x)+∑j=1R′μjhj(x)s.t. ∀i,j, λi,μj≥0∀j,μjhj(x)=0∀j,hj(x)≤0
上面的三个约束称为 KKT条件。
KKT Condition of SVM
先回顾SVM的硬间隔表达:
⎩⎨⎧Minimize21∣∣w∣∣2s.t. (wT⋅xi+b)yi−1≥0,i=1,2,..,n
这里注意,约束条件先可以不等号变向转换为小于等于0的情况
经过拉格朗日套路:
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧Minimize21∣∣w∣∣2+∑i=1nλi[1−yi(wT⋅xi+b)]s.t. ∀i, λi≥0∀i,λi[1−yi(wT⋅xi+b)]=01−yi(wT⋅xi+b)≤0
以上就是SVM版本的KKT条件。
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=21∣∣w∣∣2+∑i=1nλi[1−yi(wT⋅xi+b)]s.t. ∀i, λi≥0∀i,λi[1−yi(wT⋅xi+b)]=01−yi(wT⋅xi+b)≤0
分别对参数进行求偏导:
∂w∂L=0→w+i=1∑nλi(−yixi)→w=i=1∑nλixiyi
∂w∂L=0→i=1∑nλi(−yi)=0→i=1∑nλiyi=0
代入目标函数,先看第一项:
21∣∣w∣∣2=21wTw=21(i=1∑nλixiyi)T(j=1∑nλjxjyj)=21i=1∑nj=1∑nλiλjxiT⋅xjyiyj
再看第二项:
i=1∑nλi[1−yi(wT⋅xi+b)]=i=1∑nλi−i=1∑nλiyi(wT⋅xi+b)=i=1∑nλi−i=1∑nλiyiwTxi−i=1∑nλiyib
其中:
∑i=1nλiyi=0,并把w代入,所以上式变为:
i=1∑nλi−i=1∑nλiyi(i=1∑nλixiyi)T⋅xi=i=1∑nλi−i=1∑nj=1∑nλiλjxiT⋅xjyiyj
第一项加第二项得到对偶空间上的目标函数:
L=i=1∑nλi−21i=1∑nj=1∑nλiλjxiT⋅xjyiyj
具体写出来:
扫描二维码关注公众号,回复:
10985612 查看本文章
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧Minimize −21∑i=1n∑j=1nλiλjxiT⋅xjyiyj+∑i=1nλis.t. ∀i, λi≥0∀i,∑i=1nλiyi=0,w=∑i=1nλixiyi∀i,λi[1−yi(wT⋅xi+b)]=0
可以看到,这里只有
λ一个未知参数。这里最重要的一个地方就是
xiT⋅xj,核函数也和这个东西有关。
下面大概讲讲核函数咋回事,没有具体的推导,估计后面再补充。
Kernel Trick
核函数为什么work?
这里先贴出之前将低维特征向量映射到高维特征向量会有什么问题:
就是时间复杂度变大了。
下面来看一个小例子,假设我们有两个二维的特征向量:
x={x1,x2},z={z1,z2}
可以看到,如果要计算:
xT⋅z=(x1z1+x2z2)
接下来我们通过函数
ϕ来进行高维映射,变成:
ϕ(x)={x12,x22,2
x1x2},ϕ(z)={z12,z22,2
z1z2}
高维映射后做同样的操作:
ϕ(x)Tϕ(z)=x12z12+x22z22+2x1x2z1z2=(x1z1+x2z2)2=(xT⋅z)2
由上面的推导操作我们可以看到,虽然维度变成更高维的了,但是某些特定的操作时间复杂度居然没有增加(不是随便哪个操作都不增加),所以,如何选择映射的方式就是核函数了。
刚好这个例子,就是针对上面的操作
xiT⋅xj的。
Kernel Trick
SVM的
xiT⋅xj就变成要设计一个
ϕ高维函数,使得这个
ϕ(xi)T⋅ϕ(xj)内积计算的时间复杂度等同于
xiT⋅xj,这个
ϕ就是SVM的Kernel trick。
注意:Kernel trick不仅仅针对SVM,其他的一些算法也可以用,如:K-means。
核函数是有分类的:
我们现在用到的是Linear Kernel,对应的是Linearn SVM。
k(x,y)=xT⋅y
还有其他的核函数,多项式核函数,Polygonal Kernel
k(x,y)=(1+xT⋅y)d
Gaussian Kernel:
k(x,y)=exp(2σ2−∣∣x−y∣∣2)
关于如何设计核函数可以百度:mercer’s theorem。