原始问题
首先,我们从支持向量机的原始优化问题开始。对于线性可分支持向量机,我们要解决如下优化问题:
原始问题 (Primal problem):
min
w
,
b
1
2
∥
w
∥
2
\min_{w, b} \frac{1}{2}\|w\|^2
w,bmin21∥w∥2
约束条件 (Constraints):
y
i
(
w
T
x
i
+
b
)
−
1
≥
0
,
i
=
1
,
…
,
n
y_i(w^T x_i + b) - 1 \ge 0, \quad i = 1, \dots, n
yi(wTxi+b)−1≥0,i=1,…,n
其中w
是权重向量,b
是偏置,x_i
是输入样本,y_i
是样本的类别标签(+1或-1),n
是样本数。
对偶问题
为了使用拉格朗日对偶性,我们首先引入拉格朗日乘子α_i
(对每个约束条件一个)以及广义拉格朗日函数:
广义拉格朗日函数 (Lagrangian):
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
n
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
]
L(w, b, \alpha) = \frac{1}{2}\|w\|^2 - \sum_{i=1}^n \alpha_i [y_i(w^T x_i + b) - 1]
L(w,b,α)=21∥w∥2−i=1∑nαi[yi(wTxi+b)−1]
其中α
是一个非负的拉格朗日乘子向量。
接下来,我们计算关于w
和b
的拉格朗日函数的梯度,令它们为零。这样我们就可以消去w
和b
,将原始问题转化为对偶问题。
求解关于w
和b
的梯度:
∂
L
∂
w
=
w
−
∑
i
=
1
n
α
i
y
i
x
i
=
0
\frac{\partial L}{\partial w} = w - \sum_{i=1}^n \alpha_i y_i x_i = 0
∂w∂L=w−i=1∑nαiyixi=0
得到:
w
=
∑
i
=
1
n
α
i
y
i
x
i
w = \sum_{i=1}^n \alpha_i y_i x_i
w=i=1∑nαiyixi
∂
L
∂
b
=
−
∑
i
=
1
n
α
i
y
i
=
0
\frac{\partial L}{\partial b} = -\sum_{i=1}^n \alpha_i y_i = 0
∂b∂L=−i=1∑nαiyi=0
从而得出:
∑
i
=
1
n
α
i
y
i
=
0
\sum_{i=1}^n \alpha_i y_i = 0
i=1∑nαiyi=0
将以上结果代回拉格朗日函数,我们得到对偶问题:
对偶问题 (Dual problem):
max
α
∑
i
=
1
n
α
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
(
x
i
T
x
j
)
\max_{\alpha} \sum_{i=1}^n \alpha_i - \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j (x_i^T x_j)
αmaxi=1∑nαi−21i=1∑nj=1∑nαiαjyiyj(xiTxj)
约束条件:
α
i
≥
0
,
i
=
1
,
…
,
n
\alpha_i \ge 0, \quad i = 1, \dots, n
αi≥0,i=1,…,n
以及
∑
i
=
1
n
α
i
y
i
=
0
\sum_{i=1}^n \alpha_i y_i = 0
i=1∑nαiyi=0
通过求解这个对偶问题,我们可以找到最优的拉格朗日乘子α_i
,然后通过原始问题和对偶问题的关系,找到最优的w
和b
。这就是将原始支持向量机问题通过拉格朗日对偶性转化为对偶问题的过程。
广义拉格朗日函数
广义拉格朗日函数(Generalized Lagrangian)是一种用于处理具有约束条件的优化问题的方法。它通过将原始优化问题的目标函数与约束条件结合在一起,创建一个新的函数,使得在一定条件下,原始问题与其对偶问题具有相同的解。
广义拉格朗日函数的形式如下:
L ( w , b , α ) = f ( w , b ) − ∑ i = 1 n α i g i ( w , b ) L(w, b, \alpha) = f(w, b) - \sum_{i=1}^n \alpha_i g_i(w, b) L(w,b,α)=f(w,b)−i=1∑nαigi(w,b)
其中,f(w, b)
是原始目标函数,g_i(w, b)
是第i
个约束条件,α_i
是拉格朗日乘子,它是一个非负实数。这里的减号表示约束条件是不等式约束,并且是大于等于0的形式。如果约束条件是等式约束,那么我们需要使用加号。
通过将约束条件以这种方式融入目标函数,我们可以将约束优化问题转化为无约束优化问题。当拉格朗日函数关于w
和b
的梯度为零时,约束条件被满足,从而我们能找到满足约束条件的最优解。
为什么能够将约束条件加在目标函数后面?这是因为拉格朗日乘子α_i
的引入。对于满足约束条件的解,g_i(w, b) >= 0
,此时α_i >= 0
,使得拉格朗日函数的值不受约束条件的影响。而对于不满足约束条件的解,我们可以通过调整α_i
的值,使得拉格朗日函数的值变得非常大,从而在优化过程中避免这些不满足约束条件的解。
在使用拉格朗日对偶性时,我们需要确保原始问题和对偶问题之间的一些性质,如强对偶性。强对偶性保证了原始问题和对偶问题具有相同的最优值。在某些条件下,例如凸优化问题(如支持向量机),这些性质自然满足,使得拉格朗日对偶性成为一种有效的求解方法。
手算示例
我们将通过一个简单的例子手动计算线性可分支持向量机的对偶问题。考虑以下两个类别的二维数据集:
类别1(正类):
x1 = (1, 1), y1 = +1
x2 = (2, 2), y2 = +1
类别2(负类):
x3 = (3, 3), y3 = -1
x4 = (4, 4), y4 = -1
对于线性可分支持向量机,我们要求解以下对偶问题:
max α ∑ i = 1 4 α i − 1 2 ∑ i = 1 4 ∑ j = 1 4 α i α j y i y j ( x i T x j ) \max_{\alpha} \sum_{i=1}^4 \alpha_i - \frac{1}{2} \sum_{i=1}^4 \sum_{j=1}^4 \alpha_i \alpha_j y_i y_j (x_i^T x_j) αmaxi=1∑4αi−21i=1∑4j=1∑4αiαjyiyj(xiTxj)
约束条件:
α i ≥ 0 , i = 1 , … , 4 \alpha_i \ge 0, \quad i = 1, \dots, 4 αi≥0,i=1,…,4
以及
∑ i = 1 4 α i y i = 0 \sum_{i=1}^4 \alpha_i y_i = 0 i=1∑4αiyi=0
计算内积(kernel):
K(x1, x1) = 2, K(x1, x2) = 4, K(x1, x3) = 6, K(x1, x4) = 8
K(x2, x2) = 8, K(x2, x3) = 12, K(x2, x4) = 16
K(x3, x3) = 18, K(x3, x4) = 24
K(x4, x4) = 32
我们的对偶问题可以表示为:
max α ( α 1 + α 2 − α 3 − α 4 ) − 1 2 ( 2 α 1 2 + 4 α 1 α 2 + 8 α 1 α 3 + 8 α 1 α 4 + 8 α 2 2 + 16 α 2 α 3 + 16 α 2 α 4 + 18 α 3 2 + 24 α 3 α 4 + 32 α 4 2 ) \max_{\alpha} (\alpha_1 + \alpha_2 - \alpha_3 - \alpha_4) - \frac{1}{2}(2\alpha_1^2 + 4\alpha_1\alpha_2 + 8\alpha_1\alpha_3 + 8\alpha_1\alpha_4 + 8\alpha_2^2 + 16\alpha_2\alpha_3 + 16\alpha_2\alpha_4 + 18\alpha_3^2 + 24\alpha_3\alpha_4 + 32\alpha_4^2) αmax(α1+α2−α3−α4)−21(2α12+4α1α2+8α1α3+8α1α4+8α22+16α2α3+16α2α4+18α32+24α3α4+32α42)
约束条件为:
α1 + α2 - α3 - α4 = 0
α1, α2, α3, α4 ≥ 0
我们可以使用拉格朗日乘子法、梯度下降法、序列最小优化(SMO)等方法求解这个优化问题。在这个简单的例子中,我们可以观察到,对于训练数据点x1
和x3
,决策边界在它们中间,即x = (2, 2)
。由于x2
和x4
在决策边界的同侧,它们不会是支持向量。
因此,我们可以猜测:α2 = α4 = 0,而α1和α3是非零值。根据约束条件,α1 - α3根据约束条件,我们有:
α 1 − α 3 = 0 \alpha_1 - \alpha_3 = 0 α1−α3=0
由于我们猜测了α2 = α4 = 0
,那么α1
和α3
应该相等。我们可以令α1 = α3 = k
,其中k > 0
。那么,我们的对偶问题可以简化为:
max k 2 k − 1 2 ( 2 k 2 + 8 k 2 ) \max_{k} 2k - \frac{1}{2}(2k^2 + 8k^2) kmax2k−21(2k2+8k2)
对k
求导,并令导数等于零以找到最大值:
d d k ( 2 k − 10 k 2 ) = 2 − 20 k = 0 \frac{d}{dk} (2k - 10k^2) = 2 - 20k = 0 dkd(2k−10k2)=2−20k=0
解得k = 1/10
。因此,我们有α1 = α3 = 1/10
。由于我们假设α2 = α4 = 0
,我们现在得到了所有的拉格朗日乘子。
现在,我们可以计算权重向量w
:
w = ∑ i = 1 4 α i y i x i = 1 10 ( 1 , 1 ) + 0 ( 2 , 2 ) − 1 10 ( 3 , 3 ) − 0 ( 4 , 4 ) = ( − 1 5 , − 1 5 ) w = \sum_{i=1}^4 \alpha_i y_i x_i = \frac{1}{10}(1, 1) + 0(2, 2) - \frac{1}{10}(3, 3) - 0(4, 4) = (-\frac{1}{5}, -\frac{1}{5}) w=i=1∑4αiyixi=101(1,1)+0(2,2)−101(3,3)−0(4,4)=(−51,−51)
要计算截距b
,我们可以使用任何支持向量,例如x1
:
b = y 1 − w T x 1 = 1 − ( − 1 5 ) ( 1 + 1 ) = 3 5 b = y1 - w^T x1 = 1 - (-\frac{1}{5})(1 + 1) = \frac{3}{5} b=y1−wTx1=1−(−51)(1+1)=53
因此,我们的最终分类器是:
f ( x ) = s i g n ( w T x + b ) = s i g n ( − 1 5 x 1 − 1 5 x 2 + 3 5 ) f(x) = sign(w^T x + b) = sign(-\frac{1}{5}x_1 - \frac{1}{5}x_2 + \frac{3}{5}) f(x)=sign(wTx+b)=sign(−51x1−51x2+53)
在这个简单的例子中,我们手动计算了线性可分支持向量机的对偶问题。实际上,在更复杂的情况下,通常会使用更高效的优化算法,如序列最小优化(SMO)或梯度下降。