本文总结一下SVM(support vector machine)算法。
学习SVM算法主要有三个难点:
因此,本文分为三个部分来讲述SVM算法。
这是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 21∣∣w∣∣2s.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 21∣∣w∣∣2最小的参数 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)这个约束。必须是在这个约束下求最值。
那么,
一句话总结一下,对于 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条件的对偶问题,否则是不能完全等价转化的。
我们定义拉格朗日函数
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,α)=21∣∣w∣∣2+i=1∑mαi[1−yi(wTxi+b)](其中αi≥0)
其中,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,bmin21∣∣w∣∣2+i=1∑mαi[1−yi(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 αi≥01−yi(wTxi+b)≤0αi[1−yi(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,bmin21∣∣w∣∣2+∑i=1mαi[1−yi(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=w−i=1∑mαiyixi=0⇒w∗=i=1∑mαiyixi
对 b b b求导:
∇ b = ∑ i = 1 m α i y i = 0 \nabla_b=\sum_{i=1}^{m}\alpha_iy_i=0 ∇b=i=1∑mα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=ys−w∗xs=ys−∑i=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∗=S1∑i=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,bmin21∣∣w∣∣2+∑i=1mαi[1−yi(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=1∑mαi−21i=1∑mj=1∑mα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=1∑mj=1∑mαiαjyiyjxiTxj−i=1∑mαis.t.i=1∑mαiyi=00≤αi
广义拉格朗日函数的理解
简易解说拉格朗日对偶(Lagrange duality)