在SVM算法中,我们提到了对偶问题,对偶问题的这套理论不仅适用于SVM的优化问题,而且对于所有带约束的优化问题都是适用的,是优化理论中的一个重要部分,一般来说,对于任意一个带约束的优化问题都可以写成这样的形式:
minf0(x)s.t.fi(x)≤0,i=1,2,...,mhi(x)=0,i=1,2,...,p
形式统一能够简化推导过程中不必要的复杂性,其它的形式都可以归约到这样的标准形式。
假如 fi(i=0,1,2,...,m) 全都是凸函数(线性组合的函数值小于等于函数值的线性组合),并且 hi(i=1,2,...,p) 全都是仿射函数(就是形如 Ax+b 的形式),那么这个问题就叫做凸优化问题。凸优化问题有许多优良的性质,例如它的极值是唯一的。不过,这里我们并没有假定需要处理的优化问题是凸优化问题。
虽然约束条件能够帮助我们减小搜索空间,但是如果约束条件本身就比较复杂的话,其实也是一个很让人头痛的问题,为此我们希望把带约束的优化问题转化为无约束的优化问题。为此,我们定义 Lagrange 函数如下:
L(x,λ,v)=f0(x)+∑mi=1λifi(x)+∑pi=1vihi(x)
它通过一些系数把约束条件和目标函数结合在了一起, Lagrange 函数本身并没有什么用,现在我们让它针对 λ,v 最大化,令
z(x)=maxλ≥0,vL(x,λ,v)
这里的 λ≥0 理解为向量 λ 的每个元素都非负即可。这个函数 z(x) 对于满足原始问题约束条件的那些 x 来说,其值等于
这样一来,原始的带约束的优化问题其实等价于如下的无约束优化问题:
minxz(x)
因为如果原始问题有最优值,那么肯定是在满足约束条件的某个 x∗ 取得,而对于所有满足约束条件的 x ,
到这里,我们成功把带约束问题转化为了无约束问题,不过这其实只是一个形式上的重写,并没有什么本质上的改变。我们只是把原来的问题用 Lagrange 函数写做了如下形式:
minxmaxλ≥0,vL(x,λ,v)
这个问题(或者是原始带约束形式的问题)称作原始问题(primal problem)。如果把 min 和 max 的顺序交换一下,则变为:
maxλ≥0,vminxL(x,λ,v)
我们称这个问题为原始问题的对偶问题(dual problem),原始问题和它的对偶问题并不相等。我们可以以矩阵为例,原始问题表示为:先对矩阵每一行求最大值,再对这些最大值求最小值;而对偶问题则表示为:先对矩阵每一列求最小值,再对这些最小值求最大值。很明显,后一个值要小于前一个值。这种说法只是一种类比,下面我们来看严格的数学描述。
和 z(x) 类似,我们也用一个记号来表示内层的这个函数,记为:
g(λ,v)=minxL(x,λ,v)
并称之为 Lagrange 对偶函数,它有一个很好的性质就是它是原始问题的一个下界。换句话说,如果原始问题的最小值记为 p∗ ,那么对于所有的 λ≥0 和 v ,有:
因为对于极值点(实际上包括所有满足约束条件的点) x∗ ,注意到 λ≥0 ,于是
∑mi=1λifi(x∗)+∑pi=1vihi(x∗)≤0
因此
L(x∗,λ,v)=f0(x∗)+∑mi=1λifi(x∗)+∑pi=1vihi(x∗)≤f0(x∗)
于是
g(λ,v)=minxL(x,λ,v)≤L(x∗,λ,v)≤f0(x∗)=p∗
这样就确定了 g 的下界性质,于是
d∗≤p∗
这个性质叫做弱对偶(weak duality),对于所有的优化问题都成立。其中 p∗−d∗ 称为对偶间隔(duality gap)。需要注意的是,无论原始问题是什么形式,对偶问题总是一个凸优化(convex optimization)问题,它的极值是唯一的(如果存在的话),并且有现成的软件包可以对凸优化问题进行求解(虽然求解一般的凸优化问题实际上是很慢的并且只能求解规模较小的问题)。这样一来,对于那些难以求解的原始问题(甚至可以是NP问题),我们可以通过找出它的对偶问题,通过优化这个对偶问题来得到原始问题的一个下界估计。或者说我们甚至都不用去优化这个对偶问题,而是通过某些方法(例如随机)选取一些 λ≥0 和 v 带到
既然有弱对偶,显然就有强对偶(strong duality),所谓强对偶,就是指
p∗=d∗
这里我们就来提一下强对偶成立的条件,不过,这个问题如果要讲清楚,估计写一本书都不够,所以,这里我们就简要地介绍一下 Slater 条件和 KKT 条件。
Slater 条件是指存在严格满足约束条件的点 x ,这里的“严格”是指
如果原始问题是凸的(convex)并且满足 Slater 条件的话,那么强对偶成立。这里需要注意的是上述条件只是强对偶成立的充分而不必要条件。
回想一下SVM中的原始问题,那是一个凸优化问题,而 Slater 条件实际上在这里就等价于存在这样的一个超平面能将数据分隔开来,而当数据不可分时,则我们讨论的问题没有意义(通过把数据映射到特征空间中来解决不可分的问题暂时不在讨论的范围之内)。
让我们重新回到关于对偶的问题,来看看强对偶成立时的一些性质,假设 x∗ 和 λ∗,v∗ 分别是原始问题和对偶问题的极值点,相应的极值为 p∗ 和 d∗ ,首先由于 p∗=d∗ ,我们可以得到:
f0(x∗)=g(λ∗,v∗)=minx(f0(x)+∑i=1mλ∗ifi(x)+∑i=1pv∗ihi(x))≤f0(x∗)+∑i=1mλ∗ifi(x∗)+∑i=1pv∗ihi(x∗)≤f0(x∗)
由于两头是相等的,所以这一系列的式子里的不等号全部都可以换成等号。
由第一个不等式可以得到 x∗ 是 L(x,λ∗,v∗) 的一个极值点,由此可以知道 L(x,λ∗,v∗) 在 x∗ 处的梯度为 0 ,即
由第二个不等式可以得到
∑mi=1λ∗ifi(x∗)=0,i=1,2,...,m
这个条件叫做互补松弛条件(complementary slackness),再将其它一些显而易见的条件写到一起,就是传说中的 KKT(Karush−Kuhn−Tucker) 条件:
(1) fi(x∗)≤0
(2) hi(x∗)=0
(3) λ∗i≥0
(4) ∑mi=1λ∗ifi(x∗)=0
(5) ∇f0(x∗)+∑mi=1λ∗i∇fi(x∗)+∑pi=1v∗i∇hi(x∗)=0
任何满足强对偶(不一定要求是通过 Slater 条件得到,也不一定要求是凸优化问题)的问题都满足 KKT 条件,换句话说,这是强对偶的一个必要条件。不过,当原始问题是凸优化问题的时候, KKT 就升级为充要条件。
现在作简要说明:首先原始问题是凸优化问题的话, g(λ,v)=minxL(x,λ,v) 对每一组固定的 λ,v 来说也是一个凸优化问题,由 KKT 条件的最后一个式子,知道 x∗ 是 minxL(x,λ∗,v∗) 的一个极值点(如果不是凸优化问题,则不一定能推出来),亦即
g(λ∗,v∗)=minxL(x,λ∗,v∗)=L(x∗,λ∗,v∗)=f0(x∗)+∑i=1mλ∗ifi(x∗)+∑i=1pv∗ihi(x∗)=f0(x∗)
最后一个式子是根据 KKT 条件的第二和第四个条件得到。由于 g 和