在前文SVM算法(二)线性可分的SVM求解中,详细推导了对线性可分数据的超平面划分原理,同时也抛出了一个问题:若数据非线性,该如何处理?这也是本文需要解决的问题。
在线性模型 w x + b \boldsymbol {wx+b} wx+b中,可对原始线性特征 x \boldsymbol x x进行各类非线性转换 ϕ ( x ) = x i x j , e x i , x i 2 \boldsymbol {\phi(x)}=x_ix_j,e^{x_i},x_i^2 ϕ(x)=xixj,exi,xi2,从而构成非线性特征。在这些非线性特征基础上,同样可以套用类似的线性模型 ϕ ( x ) + b \boldsymbol {\phi(x)+b} ϕ(x)+b,求得模型参数。
在原始的SVM问题中,目标问题也仅为线性约束下的二次规划问题,参数 w w w也仅为线性特征前的系数。 min 1 2 w 2 s . t . y i ( w x i + b ) ≥ 1 \begin{aligned}&\min\frac{1}{2}w^2\\&s.t.\space \space y_i(wx_i+b)\ge1\end{aligned} min21w2s.t. yi(wxi+b)≥1但在通过拉格朗日对偶问题变换,可得到对偶问题 max α min w , b 1 2 w 2 + ∑ i α i ( 1 − y i ( w x i + b ) ) , α ≥ 0 \max_{\alpha}\min_{w,b}\frac{1}{2}w^2+\sum\limits_i\alpha_i(1-y_i(wx_i+b)),\alpha\ge0 αmaxw,bmin21w2+i∑αi(1−yi(wxi+b)),α≥0,从而包含n个线性参数 w i w_i wi(对应于n个线性特征)的求解转变为对N个参数 α \alpha α(对应于N个样本)的求解,其解为 max α − 1 2 ∑ i N ∑ j N α i α j y i y j ( x i x j ) + ∑ i α i \max_{\alpha}-\frac{1}{2}\sum\limits_i^N\sum\limits_j^N\alpha_i\alpha_jy_iy_j(x_ix_j)+\sum\limits_i\alpha_i αmax−21i∑Nj∑Nαiαjyiyj(xixj)+i∑αi注意到在上式中包含两个样本间特征的内积项 x i x j x_ix_j xixj,若在问题求解前经过了非线性特征转换,则该内积项可显式写成 ϕ ( x i ) ϕ ( x j ) \phi(x_i)\phi(x_j) ϕ(xi)ϕ(xj),即: max α − 1 2 ∑ i N ∑ j N α i α j y i y j ( ϕ ( x i ) ϕ ( x j ) ) + ∑ i α i \max_{\alpha}-\frac{1}{2}\sum\limits_i^N\sum\limits_j^N\alpha_i\alpha_jy_iy_j(\phi(x_i)\phi(x_j))+\sum\limits_i\alpha_i αmax−21i∑Nj∑Nαiαjyiyj(ϕ(xi)ϕ(xj))+i∑αi
但这样会带来如下一些问题:
(1)非线性变换 ϕ \phi ϕ是什么?对于具体的问题,我们并无法提前知晓合适的非线性变换是什么样的形式,因此无法做出准确的非线性特征变换。
(2)设置了非线性变换 ϕ \phi ϕ,运算量过大。对于每个样本都需要先进行非线性特征变换(维度可能非常大,甚至无穷),在计算两两样本间的特征内积。
鉴于此,正式引入核技巧。
所谓的核技巧,即两样本在特征变换后的特征内积,可直接通过两样本原始特征内积在某函数(核函数)的变换得到。用数学的形式可表达为: ϕ ( x i ) ∗ ϕ ( x j ) = K ( x i ∗ x j ) \phi(x_i)*\phi(x_j)=K(x_i*x_j) ϕ(xi)∗ϕ(xj)=K(xi∗xj)
假设非线性特征变换为: ϕ ( x ) = ( 1 , x 1 , x 2 , . . x n , x 1 2 , x 2 2 , . . . x n 2 ) \phi(\boldsymbol x)=(1, x_1,x_2,..x_n,x^2_1,x^2_2,...x^2_n) ϕ(x)=(1,x1,x2,..xn,x12,x22,...xn2)所以 ϕ ( x i ) ϕ ( x j ) = 1 + x i 1 x j 1 + . . . + x i n x j n + x i 1 2 x j 1 2 + . . . + x i n 2 x j n 2 = 1 + x i x j + ( x i x j ) 2 = K ( x i x j ) \phi(\boldsymbol x_i)\phi(\boldsymbol x_j)=1+x_{i1}x_{j1}+...+x_{in}x_{jn}+x^2_{i1}x^2_{j1}+...+x^2_{in}x^2_{jn}=1+\boldsymbol{x_ix_j}+(\boldsymbol{x_ix_j})^2=K(\boldsymbol{x_ix_j}) ϕ(xi)ϕ(xj)=1+xi1xj1+...+xinxjn+xi12xj12+...+xin2xjn2=1+xixj+(xixj)2=K(xixj)可见,对于某些非线性特征变换,确实可以找到这样的核函数,无须显式求得具体非线性特征变换空间,从而使得计算更方便。
更一般的,我们可以定义如下的多项式核函数,其可以快速求得各类多项式特征变换后的特征内积值: K ( x i , x j ) = ( ζ + γ x i x j ) d , ζ ≥ 0 , γ > 0 K(\boldsymbol{x_i,x_j})=(\zeta+\gamma\boldsymbol{x_ix_j})^d, \zeta\ge0,\gamma>0 K(xi,xj)=(ζ+γxixj)d,ζ≥0,γ>0
假设核函数为: K ( x i , x j ) = e x p ( − ( x i − x j ) 2 ) = e x p − x i 2 e x p − x j 2 e x p 2 x i x j = e x p − x i 2 e x p − x j 2 ∑ k = 0 + ∞ ( 2 x i x j ) i i ! = ∑ k = 0 + ∞ e x p − x i 2 e x p − x j 2 2 k k ! x i k 2 k k ! x j k = ϕ ( x i ) ϕ ( x j ) \begin{aligned} & K(\boldsymbol{x_i,x_j}) \\ &=exp(-(\boldsymbol{x_i-x_j})^2)\\ &=exp^{-\boldsymbol x_i^2}exp^{-\boldsymbol x_j^2}exp^{2\boldsymbol x_i\boldsymbol x_j}\\&=exp^{-\boldsymbol x_i^2}exp^{-\boldsymbol x_j^2}\sum\limits_{k=0}^{+\infin}\frac{(2\boldsymbol x_i\boldsymbol x_j)^i}{i!}\\&=\sum\limits_{k=0}^{+\infin}exp^{-\boldsymbol x_i^2}exp^{-\boldsymbol x_j^2}\sqrt{\frac{2^k}{k!}}\boldsymbol x_i^k\sqrt{\frac{2^k}{k!}}\boldsymbol x_j^k\\&=\phi(\boldsymbol x_i)\phi(\boldsymbol x_j)\end{aligned} K(xi,xj)=exp(−(xi−xj)2)=exp−xi2exp−xj2exp2xixj=exp−xi2exp−xj2k=0∑+∞i!(2xixj)i=k=0∑+∞exp−xi2exp−xj2k!2kxikk!2kxjk=ϕ(xi)ϕ(xj)其中 ϕ ( x i ) = ( 1 , 2 e x p − x i 2 x i , 2 2 2 ! e x p − x i 2 x i 2 , . . . ) \phi(\boldsymbol x_i)=(1, \sqrt 2exp^{-\boldsymbol x_i^2}x_i,\sqrt{\frac{2^2}{2!}}exp^{-\boldsymbol x_i^2}x_i^2,...) ϕ(xi)=(1,2exp−xi2xi,2!22exp−xi2xi2,...)可见,通过这种指数函数变换可以模拟无限维的非线性特征变换。
更一般的,定义如下的高斯核函数:
K ( x i , x j ) = e x p ( − γ ∣ ∣ x i − x j ∣ ∣ 2 ) K(\boldsymbol{x_i,x_j})=exp(-\gamma||\boldsymbol x_i-\boldsymbol x_j||^2) K(xi,xj)=exp(−γ∣∣xi−xj∣∣2)
参数 γ \gamma γ反映了高斯核中心的丰满度,其值越大,则曲线越瘦高,中心区域越集中(类似于高斯分布中 σ \sigma σ参数的倒数)
即双曲正切核,其核函数为:
K ( x i , x j ) = t a n h ( − γ ( x i ∗ x j ) + ζ ) K(\boldsymbol{x_i,x_j})=tanh(-\gamma (\boldsymbol x_i *\boldsymbol x_j)+\zeta) K(xi,xj)=tanh(−γ(xi∗xj)+ζ)
若不经过任何核函数映射,直接求解原始线性特征内积的方法,叫做线性核,即: K ( x i , x j ) = x i x j K(\boldsymbol{x_i,x_j})=\boldsymbol{x_ix_j} K(xi,xj)=xixj
在SVM对偶问题的求解中,广泛使用核技巧:
(1) α \alpha α的求解中: max α − 1 2 ∑ i N ∑ j N α i α j y i y j ( ϕ ( x i ) ϕ ( x j ) ) + ∑ i α i \max_{\alpha}-\frac{1}{2}\sum\limits_i^N\sum\limits_j^N\alpha_i\alpha_jy_iy_j(\phi(x_i)\phi(x_j))+\sum\limits_i\alpha_i αmax−21i∑Nj∑Nαiαjyiyj(ϕ(xi)ϕ(xj))+i∑αi
(2)参数 b b b的求解中: b ∗ = y j − ∑ i α i ∗ y i ( ϕ ( x i ) ϕ ( x j ) ) b^*=y_j-\sum\limits_i\alpha_i^*y_i(\phi (x_i)\phi (x_j)) b∗=yj−i∑αi∗yi(ϕ(xi)ϕ(xj))
(3)新数据的预测中: s i g n ( ∑ i α i ∗ y i ϕ ( x i ) ϕ ( x ) + y j − ∑ i α i ∗ y i ( ϕ ( x i ) ϕ ( x j ) ) ) sign(\sum\limits_i\alpha_i^*y_i\phi (x_i)\phi (x)+y_j-\sum\limits_i\alpha_i^*y_i(\phi (x_i)\phi (x_j))) sign(i∑αi∗yiϕ(xi)ϕ(x)+yj−i∑αi∗yi(ϕ(xi)ϕ(xj)))在以上诸处的内积处均可引入核技巧,以方便运算。
从以上的推导可见,核技巧是一种强大的特征非线性转换技巧。其无须通过显式求解具体的非线性特征转换函数求得转换后特征的内积,而可以直接在原始特征空间内求解特征内积,在进行核函数变换得到目标值。
能够顺利采用核技巧的根本原因在于出现了样本特征间的内积,这也意味着核技巧是一种通用的特征转换技巧,可用于各类学习模型。