拉格朗日对偶(Lagrange duality)
对于凸优化问题来说,无约束的优化一般可以使用一阶导数为零求解。而对于有约束条件的凸优化来说,拉格朗日对偶理论是对凸的最优解的研究。
假设f(x),ci(x),hj(x)是定义在Rn上的连续可微函数(),考虑约束最优化问题:
minx∈Rns.t.f(x)ci(x)≤0,i=1,2,…,khj(x)=0,j=1,2,…,k(1)(2)(3)
拉格朗日乘子
引入一个人工构造的拉格朗日函数,广义拉格朗日函数(generalized Lagrange function):
L(x,α,β)=f(x)+∑i=0kαici(x)+∑j=1lβjhj(x)
x=(x(1),x(2),…,x(n))∈Rn,αi,βj是拉格朗日乘子,特别要求αi≥0.
总结:通过拉格朗日的办法重新定义一个无约束问题这个无约束问题等价于原来的约束优化问题,从而将约束问题无约束化。
原问题与对偶问题
-
原问题(The primal problem)
minx[maxα,β:αi≥0L(x,α,β)]callthisθP(x)=minxθP(x)
在上述方程中,函数θP(x)称为原目标,右端无约束极小化问题就原问题。假设原问题的最优值为:p∗=minxθP(x)
-
对偶问题(The dual problem)
把上面式子最大化和最小化切换一下,就可以得到:
maxα,β:αi≥0[minxL(x,α,β)]call this θD(α,β)=maxα,β:αi≥0θD(α,β)
在上述方程中,函数θD(x)称为对偶目标,右边就是有约束极大化问题即对偶问题。假设对偶问题的最优值为:d∗=maxα,β:αi≥0θD(α,β)
原始问题与对偶问题的关系
若原始问题与对偶问题都有最优值,则:
d∗=maxα,β:αi≥0minxL(x,α,β)≤minxmaxα,β:αi≥0L(x,α,β)=p∗(4)(5)
从上面能得出原始问题的最优值不小于对偶问题的最优值。但是我们要通过对偶问题来求解原始问题,就必须使得原始问题的最优值与对偶问题的最优值相等。上面简单来说就是:
设x∗α∗,β∗分别是原始问题和对偶问题的可行解,如果d∗=p∗,那么x∗和α∗,β∗都是原始问题和对偶问题的最优解。
总结:显然原问题与对偶问题是不等价的,我们需要让他满足一些条件来达到等价。而满足d∗=p∗,即需要KKT条件。
KKT条件
对于原始问题和对偶问题,假设函数f(x)和ci(x)是凸函数,hi(x)是仿射函数(即由一阶多项式构成的函数,f(x)=Ax+b, A 是矩阵,x,b 是向量;并且假设不等式约束ci(x)是严格可行的,即存在x,对所有i有ci(x)<0,则x∗和α∗,β∗分别是原始问题和对偶问题的最优解的充分必要条件是x∗和α∗,β∗满足下面的 Karush-Kuhn-Tucker(KKT) 条件:
1.(Lagrangian stationarity) ∇xL(x∗,α∗,β∗)=02.(Complementary slackness) α∗ici(x)=0,i=1,2,…,k and hj(x∗)=0,j=1,2,…,l3.(Primal feasibility) ci(x)≤0,i=1,2,…,k4.(Dual feasibility) α∗i≥0,i=1,2,…,k(6)(7)(8)(9)
关于KKT 条件的理解:第一个条件是由解析函数的知识,对于各个变量的偏导数为0。特别注意当α∗i>0时,由KKT松弛互补条件可知:ci(x∗)=0。(推导SVM中使用)
总结:拉格朗日乘子法就是把原始的约束问题通过拉格朗日函数转化为无约束问题,如果原始问题求解棘手,在满足KKT的条件下用求解对偶问题来代替求解原始问题,使得问题求解更加容易。
从等式优化——>不等式优化——>KKT条件理解拉格朗日乘子法,参考链接如下:
约束优化方法之拉格朗日乘子法与KKT条件
SVM(Support Vector Machine)
支持向量机即 Support Vector Machine,简称 SVM 。其目的就是寻找到一个超平面使样本分成两类,并且间隔(如何推导出间隔点我)最大。
线性可分SVM的推导
我们求得的w就代表着我们需要寻找的超平面的系数。用数学语言表达就是一个凸二次规划问题(convex quadratic programming):
max1∥w∥,s.t.,yi(wTxi+b)≥1,i=1,…,n(10)(11)
通过求解这个问题,我们就可以找到一个间隔最大的分类器 ,如下图所示,中间的红色线条是最优超平面 :

这个问题等价于(为了方便求解,加上平方,还有一个系数,显然这两个问题是等价的,因为我们关心的并不是最优情况下目标函数的具体数值):
min12∥w∥2s.t.,yi(wTxi+b)≥1,i=1,…,n(12)(13)
提炼出线性可分情况下 SVM 的学习算法:
输入:线性可分数据集 {(xi,yi)}Ni=1
1. 构造约束最优化问题:
minw,b12||w||2s.t. yi(w⋅xi+b)≥1, i=1,2,...,N
2. 求解得到w∗,b∗,分类超平面即为w∗⋅x+b∗=0
3. 对于新的观测数据x,根据f(x)=sign(w∗⋅x+b∗)f(x)=sign(w∗⋅x+b∗)判断其类别y即可.
现在回到之前的优化目标,也即原始问题
min12∥w∥2s.t.,yi(wTxi+b)≥1,i=1,…,n(14)(15)
这里就可以使用拉格朗日乘子法了:
L(w,b,α)=12∥w∥2−∑i=1nαi(yi(wTxi+b)−1)
然后每对满足原始问题与对偶问题的解都满足 KKT 条件,即:
∇wL(w∗,b∗,a∗)=w∗−∑i=1Na∗iyixi=0∇bL(w∗,b∗,a∗)=−∑i=1Na∗iyi=0a∗i(yi(w∗⋅x+b∗)−1)=0yi(w∗⋅x+b∗)−1≥0ai≥0, i=1,2,...,N
这里至少存在一个 a∗j>0,使得yj(w⋅xj+b)−1=0,这便是支持向量,然后根据 KKT 条件可得:
∂L(w,b,a)∂w∂L(w,b,a)∂b=0⇒w−∑i=1Naiyixi=0=0⇒−∑i=1Naiyi=0w∗b∗=∑i=1Na∗iyixi=yj−∑i=1Na∗iyi(xi⋅xj)
将以上结果带入L(w,b,a) 会有:

现在的待优化函数 变为:
maxai≥0 −12∑i=1N∑j=1Naiajyiyj(xi⋅xj)+∑i=1Nai s.t. ∑i=1Naiyi=0
只要求解对偶问题得到a∗,然后根据 KKT 条件得到w∗,b∗就可以完美的解得原始问题的最优解了。
+++
线性可分支持向量机学习算法
输入:线性可分数据集 (xi,yi)Ni=1
1. 构造约束最优化问题:
maxai≥0 −12∑i=1N∑j=1Naiajyiyj(xi⋅xj)+∑i=1Nai s.t. ∑i=1Naiyi=0
2. 求解得到a∗=(a∗1,a∗2,…,a∗N)T,求解一般采用SMO算法;
3. 根据之前的KKT 条件,a∗ 求得 w∗,b∗ ,首先选择a∗j>0 的支持向量 (xj,yj);
w∗b∗=∑i=1Na∗iyixi=yj−∑i=1Na∗iyi(xi⋅xj)
4. 求得超平面 w∗⋅x+b∗=0, 对于新的观测数据x根据 f(x)=sign(w∗⋅x+b∗)判断其类别y.
软间隔
给定数据集 (xi,yi)Ni=1,当样本数据大部分为线性可分的,存在少量异常值使得数据线性不可分,或者导致分离超平面被挤压,可以通过一些方法仍然按照线性可分的方式处理,异常值的情况如下图所示:
以上情况意味着某些样本点的函数间隔并不满足大于 1 的要求。为了解决这个问题,为每个样本引入一个松弛变量 ξi≥0 , 使得函数间隔可以小于 1,优化目标改成如下:
minw,b,ξ 12||w||2+C∑i=1Nξis.t. −yi(w⋅xi+b)−ξi+1≤0, i=1,2,...,N −ξi≤0, i=1,2,...,N
这里C>0叫做惩罚参数,与上面优化方法相似,得到的解是
maxa −12∑i=1N∑j=1Naiajyiyj(xi⋅xj)+∑i=1Nais.t. 0≤ai≤C, i=1,2,…,N ∑i=1Naiyi=0, i=1,2,…,N
带有异常值的线性可分 SVM 的算法:
输入:线性可分数据集(xi,yi)Ni=1,数据集中伴有异常值
1. 构造约束最优化问题:
minw,b,ξ 12||w||2+C∑i=1Nξis.t. −yi(w⋅xi+b)−ξi+1≤0, i=1,2,...,N −ξi≤0, i=1,2,...,N
2. 求解得到a∗=(a∗1,a∗2,…,a∗N)T,求解一般采用SMO算法
3. 根据之前的KKT 条件,a∗ 求得 w∗,b∗ ,首先选择0<a∗j<C的分量
w∗=∑i=1Na∗iyixib∗=yj−∑i=1Nyia∗i(xi⋅xj)
4. 求得超平面 w∗⋅x+b∗=0, 对于新的观测数据x根据 f(x)=sign(w∗⋅x+b∗)判断其类别y.
核方法(Kernel Method)
核方法是一种很巧妙的方法,既可以将特征映射到较高的维度,又可以地利用了 SVM 的内积运算避免了维度计算量的爆炸。最后的最优化问题与硬间隔优化问题相似,只要将两个样本的内积改为两个样本的核函数即可 (kernel substitution)
mina 12∑i=1N∑j=1Naiajyiyj(xi⋅xj)−∑i=1Nais.t. 0≤ai≤C, i=1,2,…,N ∑i=1Naiyi=0, i=1,2,…,N
核函数一个正式定义:
设χ为输入空间,ω 为特征空间,如果存在一个χ到ω的映射ϕ(x):χ→ω ,对所有的 x,z∈χ,函数K(x,z)满足 K(x,z)=ϕ(x)⋅ϕ(z) ,则称ϕ(x)为输入空间到特征空间的映射函数,K(x,z)为核函数。
给定核函数K(x,z),即可用求解线性 SVM 的方法来求解非线性问题,核技巧的好处在于不需要显式的定义特征空间与映射函数,只需要选择一个合适的核函数即可。
具体核函数的用法参考核函数