SVM(support vector machine)算法详解中之转化对偶问题

本文总结一下SVM(support vector machine)算法。

学习SVM算法主要有三个难点:

  • 如何推导出基本的优化目标。(其中包括理解函数距离与几何距离)
  • 对于基本优化目标的公式如何转化为对偶问题。
  • 转化为对偶问题后对拉格朗日因子的求解,也就是SMO算法。

因此,本文分为三个部分来讲述SVM算法。

  • SVM【上】之形成优化目标
  • SVM【中】之转化对偶问题
  • SVM【下】之SMO算法求解拉格朗日因子

这是SVM【中】之转化对偶问题,重点理解对偶问题的转化.

问题描述

这节主要是对上节中的优化目标函数进行求解转化。上一节的优化问题为
min ⁡ w , b   1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T x i + b ) ≥ 1 \underset{w,b}{\min}\ \frac{1}{2} ||w||^2\\ s.t.\quad y_i(w^Tx_i+b) \ge 1 w,bmin 21w2s.t.yi(wTxi+b)1
也就是在约束条件 y i ( w T x i + b ) ≥ 1 y_i(w^Tx_i+b) \ge 1 yi(wTxi+b)1下,求使得 min ⁡ w , b   1 2 ∣ ∣ w ∣ ∣ 2 \underset{w,b}{\min}\ \frac{1}{2} ||w||^2 w,bmin 21w2最小的参数 w , b w,b w,b. 注意是求参数 w , b w,b w,b,最小值是多少并不关心。

广义拉格朗日函数

对于求解如下约束的最优化问题即
min ⁡ x   f ( x ) s . t . g ( x ) ≤ 0 \underset{x}{\min}\ f(x)\\ s.t.\quad g(x) \le 0 xmin f(x)s.t.g(x)0
一般采用广义拉格朗日函数来求解,这里简单说明下广义拉格朗日函数。

定义拉格朗日函数为
L ( x , λ ) = f ( x ) + λ g ( x ) ( 其 中 λ ≥ 0 ) L(x,\lambda)=f(x)+\lambda g(x) \quad (其中\lambda \ge 0) L(x,λ)=f(x)+λg(x)(λ0)
对于我们的原最优化问题可以这样转化:
min ⁡ x   f ( x ) s . t .   g ( x ) ≤ 0 ⇔   min ⁡ x max ⁡ λ , λ ≥ 0   L ( x , λ ) \underset{x}{\min}\ f(x)\quad s.t.\ g(x) \le 0\Leftrightarrow\ \underset{x}{\min}\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda) xmin f(x)s.t. g(x)0 xminλ,λ0max L(x,λ)
为什么呢?简单说明一下。

首先再强调一下,原问题目标是 f ( x ) f(x) f(x)的最小值,但它有个 g ( x ) g(x) g(x)这个约束。必须是在这个约束下求最值。

那么,

  1. 第一种情况是在 L ( x , λ ) L(x,\lambda) L(x,λ)中的 g ( x ) g(x) g(x)不满足约束,即 g ( x ) > 0 g(x) \gt 0 g(x)>0.对于 max ⁡ λ , λ ≥ 0   L ( x , λ ) \underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda) λ,λ0max L(x,λ) 这个式子,注意,这里 x x x当作常量, λ \lambda λ才是变量。它的最大值 max ⁡ λ , λ ≥ 0   L ( x , λ ) = + ∞ \underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)=+\infty λ,λ0max L(x,λ)=+. 然后对于任意 x x x是没有最小值的。反过来也就是说,如果求得了一个最小值,那它必然是满足约束条件 g ( x ) g(x) g(x)的。
  2. 第二种情况是在 L ( x , λ ) L(x,\lambda) L(x,λ)中的 g ( x ) g(x) g(x)满足约束条件,即 g ( x ) ≤ 0 g(x) \le 0 g(x)0. 对于 max ⁡ λ , λ ≥ 0   L ( x , λ ) \underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda) λ,λ0max L(x,λ) 这个式子,依然将 x x x看作常数, max ⁡ λ , λ ≥ 0   L ( x , λ ) = f ( x ) + max ⁡ λ , λ ≥ 0   λ g ( x ) \underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)=f(x)+\underset{\lambda ,\lambda\ge0}{\max}\ \lambda g(x) λ,λ0max L(x,λ)=f(x)+λ,λ0max λg(x).其中因为 λ ≥ 0 , g ( x ) ≤ 0 \lambda \ge 0,g(x) \le 0 λ0,g(x)0,所以 max ⁡ λ , λ ≥ 0   λ g ( x ) = 0 \underset{\lambda ,\lambda\ge0}{\max}\ \lambda g(x)=0 λ,λ0max λg(x)=0.即 max ⁡ λ , λ ≥ 0   L ( x , λ ) = f ( x ) \underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)=f(x) λ,λ0max L(x,λ)=f(x).此时再两边将 x x x看作变量求最小值是相等的,也就是 min ⁡ x max ⁡ λ , λ ≥ 0   L ( x , λ ) = min ⁡ x f ( x ) \underset{x}{\min}\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda)=\underset{x}{\min}f(x) xminλ,λ0max L(x,λ)=xminf(x).

一句话总结一下,对于 min ⁡ x max ⁡ λ , λ ≥ 0   L ( x , λ ) \underset{x}{\min}\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda) xminλ,λ0max L(x,λ)求得的最小值必然就是原问题满足约束的最小值

对偶转化

对于 min ⁡ x max ⁡ λ , λ ≥ 0   L ( x , λ ) \underset{x}{\min}\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda) xminλ,λ0max L(x,λ)问题,可以简单地看作是一个二元函数,先对其中一个自变量求最大值,再对另一个自变量求最小值。我们先不加证明的给出结论(左边是原始问题,右边是对偶问题):
min ⁡ x max ⁡ λ , λ ≥ 0   L ( x , λ ) ≥ max ⁡ λ , λ ≥ 0 min ⁡ x   L ( x , λ ) \underset{x}{\min}\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda) \ge \underset{\lambda ,\lambda\ge0}{\max}\underset{x}{\min}\ L(x,\lambda) xminλ,λ0max L(x,λ)λ,λ0maxxmin L(x,λ)
啰嗦一句,(1) min ⁡ x max ⁡ λ , λ ≥ 0   L ( x , λ ) \underset{x}{\min} \underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda) xminλ,λ0max L(x,λ)是从右向左算,先算最大再算最小。(2)注意min或max下面对应变量才是自变量,其余变量在计算此时的最大或最小时可以看作常量。

下面简单证明一下

令原始问题的最优解为 x 0 , λ 0 x_0,\lambda_0 x0,λ0,即 L ( x 0 , λ 0 ) = min ⁡ x max ⁡ λ , λ ≥ 0   L ( x , λ ) L(x_0,\lambda_0)=\underset{x}{\min}\underset{\lambda ,\lambda\ge0}{\max}\ L(x,\lambda) L(x0,λ0)=xminλ,λ0max L(x,λ).

令对偶问题的最优解为 x 1 , λ 1 x_1,\lambda_1 x1,λ1,即 L ( x 1 , λ 1 ) = max ⁡ λ , λ ≥ 0 min ⁡ x   L ( x , λ ) L(x_1,\lambda_1)=\underset{\lambda ,\lambda\ge0}{\max}\underset{x}{\min}\ L(x,\lambda) L(x1,λ1)=λ,λ0maxxmin L(x,λ).

因为 L ( x 0 , λ 0 ) L(x_0,\lambda_0) L(x0,λ0)是关于 λ \lambda λ的最大值,所以对于任意 λ \lambda λ,都有 L ( x 0 , λ 0 ) ≥ L ( x 0 , λ ) L(x_0,\lambda_0) \ge L(x_0,\lambda) L(x0,λ0)L(x0,λ). 那么 L ( x 0 , λ 0 ) ≥ L ( x 0 , λ 1 ) L(x_0,\lambda_0) \ge L(x_0,\lambda_1) L(x0,λ0)L(x0,λ1).

因为 L ( x 1 , λ 1 ) L(x_1,\lambda_1) L(x1,λ1)是关于 x x x的最小值,所以对于任意 x x x,都有 L ( x 1 , λ 1 ) ≤ L ( x , λ 1 ) L(x_1,\lambda_1) \le L(x,\lambda_1) L(x1,λ1)L(x,λ1). 那么 L ( x 1 , λ 1 ) ≤ L ( x 0 , λ 1 ) L(x_1,\lambda_1) \le L(x_0,\lambda_1) L(x1,λ1)L(x0,λ1).

所以, L ( x 0 , λ 0 ) ≥ L ( x 0 , λ 1 ) ≥ L ( x 1 , λ 1 ) L(x_0,\lambda_0) \ge L(x_0,\lambda_1) \ge L(x_1,\lambda_1) L(x0,λ0)L(x0,λ1)L(x1,λ1).因此原始问题最值 ≥ \ge 对偶问题最值。

可是,这里是 ≥ \ge 啊!又不是 = = =.这又不完全等价转化。

这里,不加证明地说明,只要满足KKT条件,那就可以完全转化,原始问题 = = =对偶问题.那KKT条件是什么呢?KKT条件就是之前的约束都满足。即
g ( x ) ≤ 0 λ g ( x ) = 0 λ ≥ 0 g(x) \le 0\\\lambda g(x)=0\\ \lambda \ge 0 g(x)0λg(x)=0λ0
所谓转化为对偶问题,也即是转化为满足KKT条件的对偶问题,否则是不能完全等价转化的。

回到SVM原始目标的转化上来

我们定义拉格朗日函数
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i [ 1 − y i ( w T x i + b ) ] ( 其 中 α i ≥ 0 ) L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^{m}\alpha_i[1-y_i(w^Tx_i+b)] \quad (其中\alpha_i \ge 0) L(w,b,α)=21w2+i=1mαi[1yi(wTxi+b)](αi0)
其中,m是样本数量,这里就有m个约束,当然也就有m个拉格朗日因子。现在SVM原始目标转化为
min ⁡ w , b max ⁡ α , α ≥ 0   L ( w , b , α ) \underset{w,b}{\min}\underset{\alpha ,\alpha\ge0}{\max}\ L(w,b,\alpha) w,bminα,α0max L(w,b,α)
再转化为满足KKT条件的对偶问题(这里就直接写等号了)
min ⁡ w , b max ⁡ α , α ≥ 0 L ( w , b , α ) = max ⁡ α , α ≥ 0 min ⁡ w , b L ( w , b , α ) = max ⁡ α , α ≥ 0 min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i [ 1 − y i ( w T x i + b ) ] \underset{w,b}{\min}\underset{\alpha ,\alpha\ge0}{\max} L(w,b,\alpha)= \underset{\alpha ,\alpha\ge0}{\max} \underset{w,b}{\min} L(w,b,\alpha)= \underset{\alpha ,\alpha\ge0}{\max} \underset{w,b}{\min} \frac{1}{2}||w||^2+\sum_{i=1}^{m}\alpha_i[1-y_i(w^Tx_i+b)] w,bminα,α0maxL(w,b,α)=α,α0maxw,bminL(w,b,α)=α,α0maxw,bmin21w2+i=1mαi[1yi(wTxi+b)]
KKT条件:
α i ≥ 0 1 − y i ( w T x i + b ) ≤ 0 α i [ 1 − y i ( w T x i + b ) ] = 0 \alpha_i \ge 0\\ 1-y_i(w^Tx_i+b) \le 0\\ \alpha_i[1-y_i(w^Tx_i+b)] = 0 αi01yi(wTxi+b)0αi[1yi(wTxi+b)]=0
对于 min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i [ 1 − y i ( w T x i + b ) ] \underset{w,b}{\min} \frac{1}{2}||w||^2+\sum_{i=1}^{m}\alpha_i[1-y_i(w^Tx_i+b)] w,bmin21w2+i=1mαi[1yi(wTxi+b)].这里将 α i \alpha_i αi看作常量,可以通过求导令导数为0来算出极值点。(这也是为什么要转化为对偶问题,因为这里可以通过求导算极值点)。

w w w求导:
∇ w = w − ∑ i = 1 m α i y i x i = 0 ⇒ w ∗ = ∑ i = 1 m α i y i x i \nabla_w=w-\sum_{i=1}^{m}\alpha_iy_ix_i=0 \Rightarrow w^*=\sum_{i=1}^{m}\alpha_iy_ix_i w=wi=1mαiyixi=0w=i=1mαiyixi
b b b求导:
∇ b = ∑ i = 1 m α i y i = 0 \nabla_b=\sum_{i=1}^{m}\alpha_iy_i=0 b=i=1mαiyi=0
这里先将 α i \alpha_i αi看作常量,假设我们已经求得了最终的 α i \alpha_i αi,那么求得的 w ∗ w^* w就可以算出来了,因为 α i , y i , x i \alpha_i,y_i,x_i αi,yi,xi都已知。如何求 b b b呢?注意到第三个KKT条件,当 α i > 0 \alpha_i \gt 0 αi>0时,(对应这个 x i x_i xi就是所谓的支持向量)那么 y s ( w T x s + b ) = 1 y_s(w^Tx_s+b)=1 ys(wTxs+b)=1.这里w已求出,只有b未知,所以 b s = y s − w ∗ x s = y s − ∑ i = 1 S α i y i x i T x s b_s=y_s-w^*x_s=y_s-\sum_{i=1}^{S}\alpha_iy_ix_i^Tx_s bs=yswxs=ysi=1SαiyixiTxs.理论上,任意一个支持向量 x s x_s xs都应该算出一样的b.但是这里一般求所以支持向量算出的 b s b_s bs的平均值来表示最终的 b ∗ b^* b.即 b ∗ = 1 S ∑ i = 1 S b s b^*=\frac{1}{S}\sum_{i=1}^{S}b_s b=S1i=1Sbs.(S表示共S个支持向量)。至于为什么呢?简单地说就是主要是求得的 α \alpha α并不是准确值,这得参考下一节用SMO来求解 α \alpha α的过程。

我们将求得的 w ∗ w^* w带入 max ⁡ α , α ≥ 0 min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i [ 1 − y i ( w T x i + b ) ] \underset{\alpha ,\alpha\ge0}{\max} \underset{w,b}{\min} \frac{1}{2}||w||^2+\sum_{i=1}^{m}\alpha_i[1-y_i(w^Tx_i+b)] α,α0maxw,bmin21w2+i=1mαi[1yi(wTxi+b)]中得到
max ⁡ α , α ≥ 0 ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j \underset{\alpha ,\alpha\ge0}{\max} \sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j α,α0maxi=1mαi21i=1mj=1mαiαjyiyjxiTxj
转化为求最小,再将上面的约束加上,得到最终的优化问题(这个优化问题是由SMO算法来解决)
min ⁡ α , α ≥ 0 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j − ∑ i = 1 m α i s . t . ∑ i = 1 m α i y i = 0 0 ≤ α i \underset{\alpha ,\alpha\ge0}{\min} \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j- \sum_{i=1}^{m}\alpha_i\\ s.t. \quad \sum_{i=1}^{m}\alpha_iy_i=0\\ 0 \le \alpha_i α,α0min21i=1mj=1mαiαjyiyjxiTxji=1mαis.t.i=1mαiyi=00αi

参考

广义拉格朗日函数的理解

简易解说拉格朗日对偶(Lagrange duality)

你可能感兴趣的:(机器学习,SVM,对偶问题)