【机器学习基础】核方法

本系列为《模式识别与机器学习》的读书笔记。

一,对偶表示

有这样⼀类模式识别的技术:训练数据点或者它的⼀个⼦集在预测阶段仍然保留并且被使⽤。许多线性参数模型可以被转化为⼀个等价的“对偶表⽰”。对偶表⽰中,预测的基础也是在训练数据点处计算的核函数kernel function)的线性组合。对于基于固定⾮线性特征空间(feature space)映射 ϕ ( x ) \boldsymbol{\phi}(\boldsymbol{x}) ϕ(x) 的模型来说,核函数由下⾯的关系给出。
k ( x , x ′ ) = ϕ ( x ) T ϕ ( x ′ ) (6.1) k(\boldsymbol{x},\boldsymbol{x}^{\prime})=\boldsymbol{\phi}(\boldsymbol{x})^{T}\boldsymbol{\phi}(\boldsymbol{x^{\prime}})\tag{6.1} k(x,x)=ϕ(x)Tϕ(x)(6.1)
通过考虑公式(6.1)中特征空间的恒等映射 ϕ ( x ) = x \boldsymbol{\phi}(\boldsymbol{x})=\boldsymbol{x} ϕ(x)=x ,就得到了核函数的⼀个最简单的例⼦,此时 k ( x , x ′ ) = x T x ′ k\boldsymbol{(x}, \boldsymbol{x}^{\prime}) =\boldsymbol{x}^{T}\boldsymbol{x}^{\prime} k(x,x)=xTx ,把这个称为线性核

许多核函数只是参数的差值的函数,即 k ( x , x ′ ) = k ( x − x ′ ) k(\boldsymbol{x},\boldsymbol{x}^{\prime})=k(\boldsymbol{x}−\boldsymbol{x}^{\prime}) k(x,x)=k(xx) ,这被称为静⽌核stationary kernel),因为核函数对于输⼊空间的平移具有不变性。另⼀种核函数是同质核homogeneous kernel),也被称为径向基函数radial basis function),它只依赖于参数之间的距离(通常是欧⼏⾥得距离)的⼤⼩,即 k ( x , x ′ ) = k ( ∥ x − x ′ ∥ ) k(\boldsymbol{x},\boldsymbol{x}^{\prime})=k(\|\boldsymbol{x}−\boldsymbol{x}^{\prime}\|) k(x,x)=k(xx)

考虑⼀个线性模型,它的参数通过最⼩化正则化的平⽅和误差函数来确定,正则化的平⽅和误差函数为
J ( w ) = 1 2 ∑ n = 1 N { w T ϕ ( x n ) − t n } 2 + λ 2 w T w (6.2) J(\boldsymbol{w})=\frac{1}{2}\sum_{n=1}^{N}\{\boldsymbol{w}^{T}\boldsymbol{\phi}(\boldsymbol{x}_n)-t_n\}^{2}+\frac{\lambda}{2}\boldsymbol{w}^{T}\boldsymbol{w}\tag{6.2} J(w)=21n=1N{ wTϕ(xn)tn}2+2λwTw(6.2)
其中 λ ≥ 0 \lambda\ge0 λ0 。如果令 J ( w ) J(\boldsymbol{w}) J(w) 关于 w \boldsymbol{w} w 的梯度等于零,那么看到 w \boldsymbol{w} w 的解是向量 ϕ ( x n ) \boldsymbol{\phi}(\boldsymbol{x}_n) ϕ(xn) 的线性组合的形式,系数是 w \boldsymbol{w} w 的函数,形式为
w = − 1 λ ∑ n = 1 N { w T ϕ ( x n ) − t n } ϕ ( x n ) = ∑ n = 1 N a n ϕ ( x n ) = Φ T a (6.3) \begin{aligned}\boldsymbol{w}&=-\frac{1}{\lambda}\sum_{n=1}^{N}\{\boldsymbol{w}^{T}\boldsymbol{\phi}(\boldsymbol{x}_n)-t_n\}\boldsymbol{\phi}(\boldsymbol{x}_n)\\&=\sum_{n=1}^{N}a_n\boldsymbol{\phi}(\boldsymbol{x}_n)=\boldsymbol{\Phi}^{T}\boldsymbol{a}\end{aligned}\tag{6.3} w=λ1n=1N{ wTϕ(xn)tn}ϕ(xn)=n=1Nanϕ(xn)=ΦTa(6.3)
其中 Φ \boldsymbol{\Phi} Φ 是设计矩阵,第 n n n ⾏为 ϕ ( x n ) T \boldsymbol{\phi}(\boldsymbol{x}_n)^{T} ϕ(xn)T ,向量 a = ( a 1 , … , a N ) T \boldsymbol{a}=(a_1,\dots,a_N)^{T} a=(a1,,aN)T ,并且
a n = − 1 λ { w T ϕ ( x ) − t n } a_n=-\frac{1}{\lambda}\{\boldsymbol{w}^{T}\boldsymbol{\phi}(\boldsymbol{x})-t_n\} an=λ1{ wTϕ(x)tn}
现在不直接对参数向量 w \boldsymbol{w} w 进⾏操作,⽽是使⽤参数向量 a \boldsymbol{a} a 重新整理最⼩平⽅算法,得到⼀个对偶表⽰dual representation)。如果将 w = Φ T a \boldsymbol{w}=\boldsymbol{\Phi}^{T}\boldsymbol{a} w=ΦTa 代⼊ J ( w ) J(\boldsymbol{w}) J(w) ,那么可以得到
J ( a ) = 1 2 a T Φ Φ T Φ Φ T a − a T Φ Φ T t + 1 2 t T t + λ 2 a T Φ Φ T a (6.4) J(\boldsymbol{a})=\frac{1}{2}\boldsymbol{a}^{T}\boldsymbol{\Phi}\boldsymbol{\Phi}^{T}\boldsymbol{\Phi}\boldsymbol{\Phi}^{T}\boldsymbol{a}-\boldsymbol{a}^{T}\boldsymbol{\Phi}\boldsymbol{\Phi}^{T}\mathbf{t}+\frac{1}{2}\mathbf{t}^{T}\mathbf{t}+\frac{\lambda}{2}\boldsymbol{a}^{T}\boldsymbol{\Phi}\boldsymbol{\Phi}^{T}\boldsymbol{a}\tag{6.4} J(a)=21aTΦΦTΦΦTaaTΦΦTt+21tTt+2λaTΦΦTa(6.4)
其中 t = ( t 1 , … , t N ) T \mathbf{t}=(t_1,\dots, t_N)^{T} t=(t1,,tN)T 。现在定义 Gram矩阵 K = Φ Φ T \boldsymbol{K}=\boldsymbol{\Phi}\boldsymbol{\Phi}^{T} K=ΦΦT ,它是⼀个 N × N N \times N N×N 的对称矩阵,元素为
K n m = ϕ ( x n ) T ϕ ( x m ) = k ( x n , x m ) K_{nm}=\boldsymbol{\phi}(\boldsymbol{x}_n)^{T}\boldsymbol{\phi}(\boldsymbol{x}_m)=k(\boldsymbol{x}_n,\boldsymbol{x}_m) Knm=ϕ(xn)Tϕ(xm)=k(xn,xm)
使⽤Gram矩阵, 平⽅和误差函数可以写成
J ( a ) = 1 2 a T K K a − a T K t + 1 2 t T t + λ 2 a T K a (6.5) J(\boldsymbol{a})=\frac{1}{2}\boldsymbol{a}^{T}\boldsymbol{K}\boldsymbol{K}\boldsymbol{a}-\boldsymbol{a}^{T}\boldsymbol{K}\mathbf{t}+\frac{1}{2}\mathbf{t}^{T}\mathbf{t}+\frac{\lambda}{2}\boldsymbol{a}^{T}\boldsymbol{K}\boldsymbol{a}\tag{6.5} J(a)=21aTKKaaTKt+21tTt+2λaTKa(6.5)
有,
a = ( K + λ I N ) − 1 t (6.6) \boldsymbol{a}=(\boldsymbol{K}+\lambda\boldsymbol{I}_{N})^{-1}\mathbf{t}\tag{6.6} a=(K+λIN)1t(6.6)
如果将这个代⼊线性回归模型中,对于新的输⼊ x \boldsymbol{x} x ,得到了下⾯预测
y ( x ) = w T ϕ ( x ) = a T Φ ϕ ( x ) = k ( x ) T ( K + λ I N ) − 1 t (6.7) y(\boldsymbol{x})=\boldsymbol{w}^{T}\boldsymbol{\phi}(\boldsymbol{x})=\boldsymbol{a}^{T}\boldsymbol{\Phi}\boldsymbol{\phi}(\boldsymbol{x})=\boldsymbol{k}(\boldsymbol{x})^{T}(\boldsymbol{K}+\lambda\boldsymbol{I}_N)^{-1}\mathbf{t}\tag{6.7} y(x)=wTϕ(x)=aTΦϕ(x)=k(x)T(K+λIN)1t(6.7)
其中定义了向量 k ( x ) \boldsymbol{k}(\boldsymbol{x}) k(x) ,它的元素为 k n ( x ) = k ( x n , x ) k_n(\boldsymbol{x})=k(\boldsymbol{x}_n,\boldsymbol{x}) kn(x)=k(xn,x) 。因此看到对偶公式使得最⼩平⽅ 问题的解完全通过核函数 k ( x , x ′ ) k(\boldsymbol{x},\boldsymbol{x}^{\prime}) k(x,x) 表⽰。这被称为对偶公式,因为 a \boldsymbol{a} a 的解可以被表⽰为 ϕ ( x ) \boldsymbol{\phi}(\boldsymbol{x}) ϕ(x) 的线性组合,从⽽可以使⽤参数向量 w \boldsymbol{w} w 恢复出原始的公式。

在对偶公式中,通过对⼀个 N × N N \times N N×N 的矩阵求逆来确定参数向量 a \boldsymbol{a} a ,⽽在原始参数空间公式中, 我们要对⼀个 M × M M \times M M×M 的矩阵求逆来确定 w \boldsymbol{w} w 。对偶公式的优点是,它可以完全通过核函数 k ( x , x ′ ) k(\boldsymbol{x},\boldsymbol{x}^{\prime}) k(x,x) 来表⽰。于是可以直接针对核函数进⾏计算,避免了显式地引⼊特征向量 ϕ ( x ) \boldsymbol{\phi}(\boldsymbol{x}) ϕ(x) ,这使得可以隐式地使⽤⾼维特征空间,甚⾄⽆限维特征空间。

二,构造核

为了利⽤核替换,需要能够构造合法的核函数。⼀种⽅法是选择⼀个特征空间映射 ϕ ( x ) \boldsymbol{\phi}(\boldsymbol{x}) ϕ(x) ,然后使⽤这个映射寻找对应的核。⼀维空间的核函数被定义为
k ( x , x ′ ) = ϕ ( x ) T ϕ ( x ′ = ∑ i = 1 M ϕ i ( x ) ϕ i ( x ′ ) (6.8) k(x,x^{\prime})=\boldsymbol{\phi}(x)^{T}\boldsymbol{\phi}(x^{\prime}=\sum_{i=1}^{M}\phi_{i}(x)\phi_i(x^{\prime})\tag{6.8} k(x,x)=ϕ(x)Tϕx=i=1Mϕi(x)ϕi(x)(6.8)
其中 ϕ i ( x ) \phi_i(x) ϕi(x) 是基函数。

如图6.1~6.3,从对应的基函数集合构建核函数的例⼦。在每⼀图中,下部分给出了由公式(6.8)定义的核函数 k ( x , x ′ ) k(x,x^{\prime}) k(x,x) ,它是 x x x 的函数, x ′ x^{\prime} x 的值⽤红⾊叉号表⽰,⽽上部分给出了对应的基函数,分别是多项式基函数(图6.1)、⾼斯基函数(图6.2)、logistic sigmoid基函数(图6.3)。
多项式基函数
⾼斯基函数
logistic sigmoid基函数
另⼀种⽅法是直接构造核函数。在这种情况下,必须确保核函数是合法的,即它对应于某个(可能是⽆穷维)特征空间的标量积。考虑下⾯的核函数

k ( x , z ) = ( x T z ) 2 (6.9) k(\boldsymbol{x},\boldsymbol{z})=(\boldsymbol{x}^{T}\boldsymbol{z})^{2}\tag{6.9} k(x,z)=(xTz)2(6.9)

如果取⼆维输⼊空间 x = ( x 1 , x 2 ) \boldsymbol{x}=(x_1,x_2) x=(x1,x2) 的特殊情况,那么展开这⼀项,于是得到对应的⾮线性特征映射

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

更⼀般地, 需要找到⼀种更简单的⽅法检验⼀个函数是否是⼀个合法的核函数,⽽不需要显⽰地构造函数 ϕ ( x ) \boldsymbol{\phi}(\boldsymbol{x}) ϕ(x) 。 核函数 k ( x , x ′ ) k(\boldsymbol{x},\boldsymbol{x}^{\prime}) k(x,x) 是⼀个合法的核函数的充分必要条件Gram矩阵(元素由 k ( x n , x m ) k(\boldsymbol{x}_n,\boldsymbol{x}_m) k(xn,xm) 给出)在所有的集合 x n {\boldsymbol{x}_n} xn 的选择下都是半正定的Shawe-Taylor and Cristianini, 2004)。

构造新的核函数的⼀个强⼤的⽅法是使⽤简单的核函数作为基本的模块来构造。给定合法的核 k 1 ( x , x ′ ) k_1(\boldsymbol{x},\boldsymbol{x}^{\prime}) k1(x,x) k 2 ( x , x ′ ) k_2(\boldsymbol{x},\boldsymbol{x}^{\prime}) k2(x,x) ,下⾯的新核也是合法的
k ( x , x ′ ) = c k 1 ( x , x ′ ) k ( x , x ′ ) = f ( x ) k 1 ( x , x ′ ) f ( x ′ ) k ( x , x ′ ) = q ( k 1 ( x , x ′ ) ) k ( x , x ′ ) = exp ⁡ ( k 1 ( x , x ′ ) ) k ( x , x ′ ) = k 1 ( x , x ′ ) + k 2 ( x , x ′ ) k ( x , x ′ ) = k 1 ( x , x ′ ) k 2 ( x , x ′ ) k ( x , x ′ ) = k 3 ( ϕ ( x ) , ϕ ( x ′ ) ) k ( x , x ′ ) = x T A x ′ k ( x , x ′ ) = k a ( x a , x a ′ ) + k b ( x b , x b ′ ) k ( x , x ′ ) = k a ( x a , x a ′ ) k n ( x n , x n ′ ) (*) k(\boldsymbol{x},\boldsymbol{x}^{\prime})=ck_1(\boldsymbol{x},\boldsymbol{x}^{\prime})\\ k(\boldsymbol{x},\boldsymbol{x}^{\prime})=f(\boldsymbol{x})k_1(\boldsymbol{x},\boldsymbol{x}^{\prime})f(\boldsymbol{x}^{\prime})\\ k(\boldsymbol{x},\boldsymbol{x}^{\prime})=q(k_1(\boldsymbol{x},\boldsymbol{x}^{\prime}))\\ k(\boldsymbol{x},\boldsymbol{x}^{\prime})=\exp(k_1(\boldsymbol{x},\boldsymbol{x}^{\prime}))\\ k(\boldsymbol{x},\boldsymbol{x}^{\prime})=k_1(\boldsymbol{x},\boldsymbol{x}^{\prime})+k_2(\boldsymbol{x},\boldsymbol{x}^{\prime})\\ k(\boldsymbol{x},\boldsymbol{x}^{\prime})=k_1(\boldsymbol{x},\boldsymbol{x}^{\prime})k_2(\boldsymbol{x},\boldsymbol{x}^{\prime})\\ k(\boldsymbol{x},\boldsymbol{x}^{\prime})=k_3(\boldsymbol{\phi}(\boldsymbol{x}),\boldsymbol{\phi}(\boldsymbol{x}^{\prime}))\\ k(\boldsymbol{x},\boldsymbol{x}^{\prime})=\boldsymbol{x}^{T}\boldsymbol{A}\boldsymbol{x}^{\prime}\\ k(\boldsymbol{x},\boldsymbol{x}^{\prime})=k_a(\boldsymbol{x}_a,\boldsymbol{x}_a^{\prime})+k_b(\boldsymbol{x}_b,\boldsymbol{x}_b^{\prime})\\ k(\boldsymbol{x},\boldsymbol{x}^{\prime})=k_a(\boldsymbol{x}_a,\boldsymbol{x}_a^{\prime})k_n(\boldsymbol{x}_n,\boldsymbol{x}_n^{\prime})\tag{*}\\ k(x,x)=ck1(x,x)k(x,x)=f(x)k1(x,x)f(x)k(x,x)=q(k1(x,x))k(x,x)=exp(k1(x,x))k(x,x)=k1(x,x)+k2(x,x)k(x,x)=k1(x,x)k2(x,x)k(x,x)=k3(ϕ(x),ϕ(x))k(x,x)=xTAxk(x,x)=ka(xa,xa)+kb(xb,xb)k(x,x)=ka(xa,xa)kn(xn,xn)(*)

其中 c > 0 c>0 c>0 是⼀个常数, f ( ⋅ ) f(·) f()</

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值