24秋机器学习笔记-lec5

Last updated on October 17, 2024 10:46 PM

SVM 对偶形式 (cont.)

回忆:

p=minw,bmaxαi0L(w,b,α)d=maxαi0minw,bL(w,b,α)\begin{aligned} p^* &= \min_{w,b} \max_{\alpha_i \ge 0} L(w,b, \alpha) \\ d^* &= \max_{\alpha_i\ge 0}\min_{w,b}L(w,b,\alpha) \end{aligned}

证明弱对偶条件:假设 wp,bpw_p,b_ppp^* 的解,αd\alpha_ddd^* 的解。则

p=minw,bmaxαi0L(w,b,α)=maxα0L(wp,bp,α)L(wp,bp,αd)minw,bL(w,b,αd)=d\begin{aligned} p^* = \min_{w,b}\max_{\alpha_i \ge 0}L(w,b,\alpha) &= \max_{\alpha\ge 0} L(w_p,b_p, \alpha) \\ &\ge L(w_p,b_p,\alpha_d)\\ &\ge \min_{w,b}L(w,b,\alpha_d)\\ &= d^* \end{aligned}

而我们知道,若强对偶条件成立,则 pp^*dd^* 的解是一样的,即 (wp,bp,αd)(w_p,b_p, \alpha_d),即上面式子中所有的不等号都是等号。这告诉我们,可以通过解对偶问题 dd^* 来解原问题

maxα0minw,bL(w,b,α)=12w2+i[n]αii[n]αiyi(wTxi+b)\max_{\alpha\ge 0}\min_{w,b}L(w,b,\alpha) = \frac{1}{2} \left\| w^{2} \right\| + \sum_{i \in [n]} \alpha_i - \sum_{i \in [n]} \alpha_i y_i(w^Tx_i +b)

先看里层的。由其凸性,进行求导,要求 Lw=0\displaystyle \frac{\partial L}{\partial w} = 0Lb=0\displaystyle \frac{\partial L}{\partial b} = 0

Lw=wαiyixi=0Lb=αiyi=0\begin{aligned} \frac{\partial L}{\partial w} &= w - \sum \alpha_i y_i x_i = 0 \\ \frac{\partial L}{\partial b} &= -\sum \alpha_i y_i = 0 \end{aligned}

这不就是 KKT 条件吗,原因就在于由于强对偶性,解是一样的,所以自然也需要满足 KKT 条件。

所以

w=i[n]αiyixii[n]αiyi=0w = \sum_{i \in [n]} \alpha_i y_i x_i \\ \sum_{i \in [n]} \alpha_i y_i = 0

将其代入原来的式子,就有

maxα0minw,bL(w,b,α)=12w2+i[n]αii[n]αiyi(wTxi+b)=maxα012(i[n]αiyixiT)(i[n]αiyixi)+i[n]ai    i[n]αiyi(i[n]αiyixiT)Txibi[n]αiyi=maxα0i[n]αi12i[n]j[n]αiαjyiyjxiTxj\begin{aligned} \max_{\alpha\ge 0}\min_{w,b}L(w,b,\alpha) &= \frac{1}{2} \left\| w^{2} \right\| + \sum_{i \in [n]} \alpha_i - \sum_{i \in [n]} \alpha_i y_i(w^Tx_i +b)\\ &=\max_{\alpha\ge 0} \frac{1}{2} \left( \sum_{i \in [n]} \alpha_i y_i x_i^T \right) \left( \sum_{i \in [n]} \alpha_i y_i x_i\right) + \sum_{i \in [n]} a_i \\ & ~ ~ ~ ~ - \sum_{i \in [n]} \alpha_i y_i \left( \sum_{i \in [n]}\alpha_i y_i x_i^T \right) ^T x_i - b \sum_{i \in [n]} \alpha_i y_i\\ &= \max_{\alpha \ge 0} \sum_{i \in [n]} \alpha_i - \frac{1}{2} \sum_{i \in [n]}\sum_{j \in [n]} \alpha_i \alpha_j y_i y_j x_i^T x_j \end{aligned}

subject to {αi0,i[n]aiyi=0,i[n]\displaystyle \begin{cases} \alpha_i\ge 0, & \forall i\in [n] \\ \sum a_i y_i = 0, & \forall i \in [n] \end{cases},优化问题变为优化 nnαi\alpha_i,原来的原始形式则是优化 d+1d+1 个变量。

假设α\alpha^* 解出来了,考虑解 w,bw^*,b^*

首先显然

w=i[n]αiyixiw^* = \sum_{i\in [n]}\alpha_i y_i x_i

然后,对于支持向量 (xk,yk)(x_k,y_k),有 yk(wTxk+b)=1y_k(w^{*T}x_k + b^*)=1,所以 b=ykwTxkb^* = y_k - w^{*T}x_k,这也告诉我们 1yk=yk\displaystyle \frac{1}{y_k} = y_k

然后对于 active 的约束,αi>0\alpha_i^*>0

其实,只需要支持向量就够了。

w=(xi,yi) is a S.V.αiyixiw^* = \sum_{(x_i,y_i)\text{ is a S.V.}}\alpha_i^*y_i x_i

SMO 算法(sequential minimum optimization)

刚才我们是假设求解出来了对偶问题,现在考虑如何求解。

  1. 主要思路:迭代地更新 αi\alpha_i,而固定其他的 αj\alpha_j

  2. 但是 αiyi=0\sum \alpha_i y_i = 0,所以若固定了其他的 n1n-1αj\alpha_jαi\alpha_i 就已经可以被确定了,所以不能简单地这样去做。

    改进:每次挑两个 αi\alpha_iαj\alpha_j,而固定其他的 n2n-2 个。注意到 αiyi+αjyj=ki,jαkyk=Constant\displaystyle \alpha_i y_i + \alpha_j y_j= -\sum_{k \ne i,j} \alpha_k y_k = \text{Constant}。于是可以用 αi\alpha_i 表示 αj\alpha_j

  3. 解这个一维的二次规划(另外 n2n-2 个被固定了,选的一个可以表示另一个),这自然是好解的,甚至有闭式解。

  4. 重复上述步骤,每次取 αi,αj\alpha_i,\alpha_j,迭代到你想结束为止。

核技巧(Kernel Trick)

考虑对 xix_i 做变换 φ(xi)\varphi(x_i)(可以是变换到高维空间)

然后便可以将 φ(xi)Tφ(xj)T\varphi(x_i)^T \varphi(x_j)^T 表示为 k(xi,xj)k(x_i,x_j),这表示了 xix_ixjx_j相似度。其实,原来的 xiTxjx_i^T x_j 也算一种核(线性核)

假设 xx 为一维,但线性不可分。而用一个核函数 φ(x)=(x,x2)\varphi(x) = (x,x^{2}),其就可以线性可分了:

svm_kernel

所以这就为我们提供了方便:把本来非线性可分原始数据用核函数进行升维,变为线性可分后用 SVM 求解,求解到的超平面还可以映射回原空间(当然就变得非线性了)

现在,考虑 x=(x1,x2)TR2x = (x_1,x_2)^T \in \mathbb{R}^2,定义 φ(x)=(1,x1,x2,x12,x22,x1x2)R6\varphi(x) = (1, x_1, x_2, x_1^{2},x_2^{2},x_1x_2) \in \mathbb{R}^6,计算的时候有两种方法:

  1. 可以直接算所有的 φ(xi)Tφ(xj)R6\varphi(x_i)^T \varphi(x_j) \in \mathbb{R}^6,相当于先映射到高维空间后做计算,但这样计算的复杂度也会相应高;
  2. 在低维空间用 k(xi,xj)k(x_i,x_j) 直接把他们的相似度算出来(kernel trick),就不需要先把他们映射到高维空间了。

E. g. 考虑 x=(x1,x2)T,z=(z1,z2)Tx = (x_1,x_2)^T,z=(z_1,z_2)^T,定义核函数 k(x,z)=(xTz+1)2k(x,z) = (x^Tz+1)^2。展开:

k(x,z)=(xTz+1)2=(x1z1+x2z2+1)2=x12z12+x22z22+1+2x1z1+2x2z2+2x1z1x2z2=(1,2x1,2x2,x12,x22,2x1x2)T(1,2z1,2z2,z12,z22,2z1z2)\begin{aligned} k(x,z) &= (x^Tz+1)^{2}\\ &= (x_1 z_1 + x_2 z_2 + 1)^2 \\ &= x_1^{2}z_1^{2}+x_2^{2}z_2^{2}+1+2x_1z_1+2x_2z_2+2x_1z_1x_2z_2\\ &= (1, \sqrt{2}x_1,\sqrt{2}x_2,x_1^{2},x_2^{2},\sqrt{2}x_1x_2)^T \cdot (1,\sqrt{2} z_1, \sqrt{2} z_2, z_1^{2},z_2^{2},\sqrt{2} z_1z_2) \end{aligned}

那其实便可看出来 φ(x)=(1,2x1,2x2,x12,x22,2x1x2)T\varphi(x) = (1, \sqrt{2}x_1,\sqrt{2}x_2,x_1^{2},x_2^{2},\sqrt{2}x_1x_2)^T,若用了 kernel trick 显然就能达到更低的时间复杂度。

核函数合法性的判断:k(,)k(\cdot ,\cdot ) 合法仅当 φ\exists \varphi 使得 k(x,z)=φ(x)Tφ(z)Tk(x,z) = \varphi(x)^T \varphi(z)^T。显然一个输出负数的核函数绝对是不合法的。接下来介绍 Mercer Theoremk(,)k(\cdot ,\cdot ) 合法当且仅当:

  1. 对称性k(x,z)=k(z,x),x,zk(x,z) = k(z,x), \forall x,z
  2. 核矩阵(kernel matrix, gram matrix)半正定

    K:=[k(x1,x1)k(x1,x2)k(x1,xn)k(xn,x1)k(xn,x2)k(xn,xn)]Rn×nK := \begin{bmatrix} k(x_1,x_1) & k(x_1,x_2) & \cdots & k(x_1,x_n) \\ \vdots & \vdots & & \vdots \\ k(x_n,x_1) & k(x_n,x_2) & \cdots & k(x_n,x_n) \\\end{bmatrix}\in \mathbb{R}^{n\times n}

这里不打算证明,给出一个 intuition:KK 对称且半正定所以肯定可以对角化,且所有特征值 0\ge 0。则 K=kλkμkμkTK= \sum_k \lambda_k \mu_k \mu_k^TKij=kλkμkjμkiK_{ij} = \sum_k \lambda_k \mu_{kj} \mu_{ki},所以这样其实已经将 φ\varphi 给出。(不考)

常见的核函数:

  • 线性核:k(x,z)=xTzk(x,z) = x^T z
  • 多项式核:k(x,z)=(xTz+1)pk(x,z) = (x^Tz + 1)^pRdRO(min(pd,dp))\mathbb{R}^d \to \mathbb{R}^{O(\min(p^d,d^p))}
  • 高斯核(RBF Kernel,radial basis function):

    k(x,z)=exp(xz22σ2)k(x,z) = \exp\left( - \frac{\left\| x-z \right\|^{2}}{2\sigma^2} \right)

高斯核相当于把 xx 映射到无穷维空间然后做内积?考虑泰勒展开:

f(x)=f(0)+f(0)x+f(0)2!x2+f(x) = f(0)+f'(0)x+\frac{f''(0)}{2!}x^{2}+ \cdots

k(x,z)k(x,z) 写出来:

k(x,z)=exp(x22σ2)exp(z22σ2)exp(1σ2xTz)\begin{aligned} k(x,z)&= \exp\left( -\frac{\left\| x \right\|^2}{2\sigma^{2}} \right) \exp\left( -\frac{\left\| z \right\|^2}{2\sigma^{2}} \right) \exp\left(\frac{1}{\sigma^{2}}x^Tz\right) \\ \end{aligned}

将最后一项进行泰勒展开:

exp(1σ2xTz)=1+1σ2xTz+12!(xTz)2(σ2)2+13!(xTz)3(σ2)3+\begin{aligned} &\exp\left(\frac{1}{\sigma^{2}}x^Tz\right) \\ =& 1+ \frac{1}{\sigma^{2}} x^Tz + \frac{1}{2!} \frac{(x^Tz)^{2}}{(\sigma^{2})^{2}} + \frac{1}{3!}\frac{(x^Tz)^3}{(\sigma^{2})^3}+ \cdots \end{aligned}

后面是一堆多项式核的叠加!根据前面的定理,合法的核函数相加后仍然合法。

事实上,σ\sigma 是很重要的超参数。更大的 σ2\sigma^{2} 会使得高阶项迅速趋于 00,有效的维度就会降低;小的 σ2\sigma^{2} 有可能让任意的数据均可分,带来过拟合的风险,对 outlier 不健壮。

松弛变量(slack variables)

现在问题的关键在于如何处理离群点(outliers)。

之前,我们都是硬约束,即要求 i,yi(wTxi+b)1\forall i, y_i(w^Tx_i+b)\ge 1。现在考虑软约束,引入松弛变量(slack variables)ξi\xi_i

现在约束变成 i[n],yi(wTxi+b)1ξi\forall i \in [n], y_i(w^T x_i +b)\ge 1-\xi_i,其中 ξi0\xi_i\ge 0(允许超过 wTx+b=±1w^Tx+b=\pm 1 一定距离 ξi\xi_i

但同时,肯定不能让 ξi\xi_i 任意优化。我们肯定希望 ξi\xi_i 尽可能小。优化问题变成:

minw,b,ξ12w2+Ci[n]ξi\min_{w,b,\xi} \frac{1}{2} \left\| w \right\|^{2} + C \cdot \sum_{i \in [n]} \xi_i

s. t. yi(wTxi)1ξi,ξi0,i[n]y_i(w^Tx_i) \ge 1 - \xi_i, \xi_i\ge 0,\forall i \in [n]。其中 CC 为调控 ξ\xi 力度的参数。事实上这才是 SVM 实战中最常用的形式

注意到 ξimax(0,1yi(wTxi+b))\xi_i\ge \max(0, 1-y_i(w^T x_i+b)),所以问题可以进一步化简:

minw,b12w2+Ci[n]max(0,1yi(wTxi+b))\min_{w,b} \frac{1}{2} \left\| w \right\|^{2}+C\cdot \sum_{i \in [n]}\max(0, 1-y_i(w^T x_i+b))

这里是直接用 ξ\xi 的下界去进行替换。而且注意到 max(0,1yi(wTxi+b))\max(0, 1-y_i(w^Tx_i+b)) 其实为合页损失(hinge loss)。定义 zi:=yif(xi)z_i:= y_i f(x_i)

svm_slack_var

zi>1z_i>1 的情况相当于点不产生贡献,zi<1z_i <1 的情况就对应着 ξi>0\xi_i>0 的情况,产生正比于 ξi\xi_i 的 loss。而这个时候 w2\left\| w \right\|^2 就可以理解为正则化项了(倒反天罡)。


24秋机器学习笔记-lec5
https://blog.imyangty.com/note-ml2024fall/lec5/
Author
YangTY
Posted on
October 16, 2024
Licensed under