PRML Chapter 06 Kernel Methods

PRML Chapter 06 Kernel Methods


Introduction


核方法(kernel methods),与基于参数的方法相对,是一类基于实例的方法,后者在训练后仍需要考虑数据点,而前者得到参数后将其直接抛弃。核方法的核心思想是希望找到一个映射函数 ϕ \phi ϕ,能够将低维线性不可分的数据点映射到高维空间,并且在希冀在高维空间中,这些数据点能够满足线性可分的性质。

显然,要找到这一映射函数 ϕ \phi ϕ将数据点映射到高维并且线性可分是极其困难的。考虑K-最近邻算法(K-Nearest-Neighbor, KNN),可以发现基于实例的方法,往往不考虑数据点的具体表示,而更加关心数据点之间的关系,比如其相似程度。因此,核方法利用这一性质,被定义为,

(6.1) k ( x 1 , x 2 ) = ϕ ( x 1 ) ϕ ( x 2 ) k(x_1, x_2) = \phi(x_1)\phi(x_2) \tag{6.1} k(x1,x2)=ϕ(x1)ϕ(x2)(6.1)

从式(6.1)可以看出,在高维空间中,基于实例的方法,往往只是考虑数据点之间的关系,即 k ( x 1 , x 2 ) k(x_1,x_2) k(x1,x2),而不关心数据点的具体高维表示 ϕ ( x 1 ) 、 ϕ ( x 2 ) \phi(x_1)、\phi(x_2) ϕ(x1)ϕ(x2),因此,高维空间中的内积 ϕ ( x 1 ) ϕ ( x 2 ) \phi(x_1)\phi(x_2) ϕ(x1)ϕ(x2)可以通过低维空间的核函数 k ( x 1 , x 2 ) k(x_1,x_2) k(x1,x2)获得。显然核函数满足性质,

(6.2) k ( x 1 , x 2 ) = k ( x 2 , x 1 ) k(x_1,x_2) = k(x_2,x_1) \tag{6.2} k(x1,x2)=k(x2,x1)(6.2)

常用的核函数有,

  • 静止核(stationary kernel):其核函数是数据点的差值的函数,即 k ( x 1 , x 2 ) = k ( x 1 − x 2 ) k(x_1,x_2)=k(x_1-x_2) k(x1,x2)=k(x1x2),很显然核函数对于输入空间的平移具有不变性;
  • 径向基函数(radial basis function):也被称为同质核(homogeneous kernel),它只依赖于参数之间的距离的大小,即 k ( x 1 , x 2 ) = k ( ∣ ∣ x 1 − x 2 ∣ ∣ ) k(x_1,x_2)=k(||x_1-x_2||) k(x1,x2)=k(x1x2)

Dual Representations


通常情况下,核函数的定义会直接影响到模型的效果,因此其选择是较为困难的,但是,我们通常可以对现有的模型计算其对偶表示,从而轻松的获得核函数。考虑一个线性模型,它的参数通过最小化正则化的平方和误差函数来确定,其误差函数为,

(6.3) J ( ω ) = 1 2 ∑ n = 1 N { ( ω T x n ) − t n } 2 + λ 2 ω T ω J(\boldsymbol{\omega}) = \frac{1}{2}\sum_{n=1}^N \{ (\boldsymbol{\omega}^T\boldsymbol{x}_n) - \boldsymbol{t}_n \}^2 + \frac{\lambda}{2}\boldsymbol{\omega}^T\boldsymbol{\omega} \tag{6.3} J(ω)=21n=1N{(ωTxn)tn}2+2λωTω(6.3)

其中 λ ≥ 0 \lambda \geq 0 λ0。如果令 J ( ω ) J(\boldsymbol{\omega}) J(ω)关于 ω \omega ω的梯度等于零,则有,

(6.4) ω = − 1 λ ∑ n = 1 N { ω T ϕ ( x n ) − t n } ϕ ( x n ) = ∑ n = 1 N a n ϕ ( x n ) = Φ T a \begin{aligned} \boldsymbol{\omega} &= -\frac{1}{\lambda}\sum_{n=1}^N \{ \boldsymbol{\omega}^T\boldsymbol{\phi}(\boldsymbol{x}_n)-t_n \}\boldsymbol{\phi}(\boldsymbol{x}_n) \\ &= \sum_{n=1}^N a_n \boldsymbol{\phi}(\boldsymbol{x}_n) = \mathbf{\Phi}^T\boldsymbol{a} \end{aligned} \tag{6.4} ω=λ1n=1N{ωTϕ(xn)tn}ϕ(xn)=n=1Nanϕ(xn)=ΦTa(6.4)

其中 Φ \mathbf{\Phi} Φ是设计矩阵,第 n n n行为 ϕ ( x n ) T \boldsymbol{\phi}(\boldsymbol{x}_n)^T ϕ(xn)T。向量 a = ( a 1 , a 2 , . . . , a N ) T \boldsymbol{a}=(a_1,a_2,...,a_N)^T a=(a1,a2,...,aN)T,并且我们定义了

(6.5) a n = − 1 λ { ω T ϕ ( x n ) − t n } a_n = -\frac{1}{\lambda}\{ \boldsymbol{\omega}^T\boldsymbol{\phi}(\boldsymbol{x}_n)-t_n \} \tag{6.5} an=λ1{ωTϕ(xn)tn}(6.5)

使用式(6.4)中 ω = Φ T a \boldsymbol{\omega} = \mathbf{\Phi}^T\boldsymbol{a} ω=ΦTa带入 J ( ω ) J(\boldsymbol{\omega}) J(ω),则有,

(6.6) J ( a ) = 1 2 a T Φ Φ T Φ Φ T a − a T Φ T Φ t + 1 2 t T t + λ 2 a T Φ Φ T a J(\boldsymbol{a}) = \frac{1}{2}\boldsymbol{a}^T\mathbf{\Phi}\mathbf{\Phi}^T\mathbf{\Phi}\mathbf{\Phi}^T\boldsymbol{a}-\boldsymbol{a}^T\mathbf{\Phi}^T\mathbf{\Phi}\textbf{t}+\frac{1}{2}\textbf{t}^T\textbf{t}+\frac{\lambda}{2}\boldsymbol{a}^T\mathbf{\Phi}\mathbf{\Phi}^T\boldsymbol{a}\tag{6.6} J(a)=21aTΦΦTΦΦTaaTΦTΦt+21tTt+2λaTΦΦTa(6.6)

其中, t = ( t 1 , t 2 , . . . , t N ) T \textbf{t}=(t_1,t_2,...,t_N)^T t=(t1,t2,...,tN)T,我们定义Gram矩阵 K = Φ T Φ \boldsymbol{K}=\mathbf{\Phi}^T\mathbf{\Phi} K=ΦTΦ,它是一个 N ∗ N N * N NN 的对称矩阵,元素为,

(6.7) K n n = ϕ ( x n ) T ϕ ( x m ) = k ( x n , x m ) \boldsymbol{K}_{nn} = \boldsymbol{\phi}(\boldsymbol{x}_n)^T\boldsymbol{\phi}(\boldsymbol{x}_m)=k(\boldsymbol{x}_n,\boldsymbol{x}_m) \tag{6.7} Knn=ϕ(xn)Tϕ(xm)=k(xn,xm)(6.7)

使用Gram矩阵,则式(6.6)中的误差函数可以表示为,

(6.8) J ( a ) = 1 2 a K K a − a T K t + 1 2 t T t + λ 2 a T K a J(\boldsymbol{a}) = \frac{1}{2}\boldsymbol{a}\boldsymbol{K}\boldsymbol{K}\boldsymbol{a}-\boldsymbol{a}^T\boldsymbol{K}\textbf{t}+\frac{1}{2}\textbf{t}^T\textbf{t}+\frac{\lambda}{2}\boldsymbol{a}^T\boldsymbol{K}\boldsymbol{a} \tag{6.8} J(a)=21aKKaaTKt+21tTt+2λaTKa(6.8)

使用式(6.4)带入式(6.5)消除掉 ω \boldsymbol{\omega} ω,得到

(6.9) a = ( K + λ I N ) − 1 t \boldsymbol{a} = (\boldsymbol{K}+\lambda \boldsymbol{I}_N)^{-1}\textbf{t} \tag{6.9} a=(K+λIN)1t(6.9)

如果我们将这个带入线性回归模型中,对于新的输入 x \boldsymbol{x} x,我们得到下面的预测,

(6.10) y ( x ) = ω T ϕ ( x ) = a T Φ ϕ ( x ) = k ( x ) T ( K + λ I N ) − 1 t \begin{aligned} y(\boldsymbol{x}) &= \boldsymbol{\omega}^T\boldsymbol{\phi}(\boldsymbol{x})=\boldsymbol{a}^T\mathbf{\Phi}\boldsymbol{\phi}(\boldsymbol{x}) \\ &= \boldsymbol{k}(\boldsymbol{x})^T(\boldsymbol{K}+\lambda \boldsymbol{I}_N)^{-1}\textbf{t} \end{aligned} \tag{6.10} y(x)=ωTϕ(x)=aTΦϕ(x)=k(x)T(K+λIN)1t(6.10)

其中,我们定义了向量 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)。可以看到最小化误差函数的解,其对偶形式如式(6.10)所示,其优缺点分别为,

  • 优点:可以完全通过核函数 k ( x , x ′ ) k(x,x') k(x,x)来表示,因此,我们可以直接针对核函数进行计算,避免了显式的引入特征向量函数 k ( x , x ′ ) k(x, x') k(x,x),这使得我们可以隐式的使用高维特征空间,甚至无限维特征空间;
  • 缺点:对偶公式(6.10)中,我们需要通过对一个N * N的矩阵求逆来确定参数向量 a \boldsymbol{a} a,而在原始空间中仅需计算M * M的矩阵求逆来确定 ω \omega ω。计算量较大,是一个明显的缺点。

Constructing Kernels


要使用核替换,我们需要能够构造合法的核函数,一般而言,会分为以下三种方法,

  • 间接构造法:通过选择基函数 ϕ ( x ) \phi(x) ϕ(x),利用核函数的定义式构造核函数,例如,对于一维空间的核函数,有

    (6.11) k ( x , x ′ ) = ϕ ( x ) T ϕ ( x ′ ) = ∑ i = 1 M ϕ i ( x ) ϕ i ( x ′ ) k(x,x') = \phi(x)^T\phi(x')=\sum_{i=1}^M \phi_i(x)\phi_i(x') \tag{6.11} k(x,x)=ϕ(x)Tϕ(x)=i=1Mϕi(x)ϕi(x)(6.11)

    该方法的主要优点是直观简单,可以直接通过基函数进行构建,然而其困难之处也在于基函数的选择,一旦选择的基函数不够好,即使在训练集上取得了不错的效果,也会出现泛化性能较差的问题。

  • 直接构造法:该方法通过直接构造核函数本身,而不是基函数,进而避免了间接构造法的缺陷。然而,该方法存在的主要问题是,需要保证核函数的合法性,即核函数对应与某个特征空间的标量积。

    mercer定理:核函数 k ( x , x ′ ) k(x, x') k(x,x)是合法的的充分条件是Gram矩阵(由元素 k ( x n , x m ) k(x_n,x_m) k(xn,xm))在所有集合 x n x_n xn的选择下都是半正定的。

    此外,合法的核函数通过以下变换得到的结果仍然是合法的核函数,
    (6.12) 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 ′ ) = e x p ( 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 b ( x b , x b ′ ) \begin{aligned} k(x,x') &= ck_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(\phi(x), \phi(x')) \\ k(x, x') &= x^TAx' \\ 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_b(x_b,x_b') \end{aligned} \tag{6.12} k(x,x)k(x,x)k(x,x)k(x,x)k(x,x)k(x,x)k(x,x)k(x,x)k(x,x)k(x,x)=ck1(x,x)=f(x)k1(x,x)f(x)=q(k1(x,x))=exp(k1(x,x))=k1(x,x)+k2(x,x)=k1(x,x)k2(x,x)=k3(ϕ(x),ϕ(x))=xTAx=ka(xa,xa)+kb(xb,xb)=ka(xa,xa)kb(xb,xb)(6.12)

  • 概率生成法:其将基函数表示一种概率模型,因此核函数的定义可以表示为,

    (6.13) k ( x , x ′ ) = p ( x ) p ( x ′ ) k ( x , x ′ ) = ∑ i p ( x i ∣ i ) p ( x i ′ ∣ i ) p ( i ) k ( x , x ′ ) = ∫ p ( x ∣ z ) p ( x ′ ∣ z ) p ( z ) d z \begin{aligned} k(x,x') &= p(x)p(x') \\ k(x,x') &= \sum_i p(x_i|i)p(x_i'|i)p(i) \\ k(x,x') &= \int p(x|z)p(x'|z)p(z) dz \end{aligned} \tag{6.13} k(x,x)k(x,x)k(x,x)=p(x)p(x)=ip(xii)p(xii)p(i)=p(xz)p(xz)p(z)dz(6.13)

    概率生成法的主要优势是其能够自然地处理缺失的数据,并且在隐马尔科夫模型下,可以处理长度变化的序列。

Radial Basis Function Networks


径向基函数(Radial basis function),是一种广泛使用的基函数,其主要关注数据点与中心 μ j \mu_j μj之间的径向距离,即 ϕ j ( x ) = h ( ∣ ∣ x − μ j ∣ ∣ ) \phi_j(x)=h(||x-\mu_j||) ϕj(x)=h(xμj)。显然,径向基函数是局部的,当 x x x距离中心点 μ j \mu_j μj较远的地方, ϕ j ( x ) \phi_j(x) ϕj(x)的取值较小。

径向基函数神经网络(Radial basis function networks,RBFN),是前向神经网络的一种,其能够以任意精度逼近任意连续函数。RBFN的网络结构与多层前向神经网络类似,是一种三层的前向神经网络,
在这里插入图片描述

  • 输入层:由输入空间的数据点构成;
  • 隐藏层:隐藏层视所描述问题的需要而定,隐含单元的激活函数是径向基函数,它是一种“中心径向对称且衰减”的非线性函数,所谓“中心径向对称且衰减”,是因为径向基函数是一种基于距离的基函数,且距离中心越远值越小;
  • 输出层:它对隐藏层的输出进行加权,加权系数即为神经网络的训练部分。

综上,我们可以直接写出径向基函数的函数表达式,

(6.14) f ( x ) = ∑ j = 1 J w j ϕ ( x ) = ∑ j = 1 J ω j h ( ∣ ∣ x − μ j ∣ ∣ ) f(\boldsymbol{x}) = \sum_{j=1}^J w_j \phi(x) = \sum_{j=1}^J \omega_j h(||x-\mu_j||) \tag{6.14} f(x)=j=1Jwjϕ(x)=j=1Jωjh(xμj)(6.14)

考虑输入变量 x \boldsymbol{x} x具有噪音,且该噪音由参数 ξ \boldsymbol{\xi} ξ控制,服从 ν ( ξ ) \nu(\boldsymbol{\xi}) ν(ξ),那么误差函数变为,

(6.15) E = 1 2 ∑ n = 1 N ∫ { f ( x n + ξ ) − t n } 2 ν ( ξ ) d ξ E = \frac{1}{2}\sum_{n=1}^N \int \{ f(\boldsymbol{x}_n + \boldsymbol{\xi}) - t_n \}^2 \nu(\boldsymbol{\xi})d\boldsymbol{\xi} \tag{6.15} E=21n=1N{f(xn+ξ)tn}2ν(ξ)dξ(6.15)

使用变分法,可以得到 y ( x ) y(\boldsymbol{x}) y(x)的最优化形式,

(6.16) f ( x ) = ∑ n = 1 N t n h ( μ − x n ) f(\boldsymbol{x}) = \sum_{n=1}^N t_n h(\boldsymbol{\mu}-\boldsymbol{x}_n) \tag{6.16} f(x)=n=1Ntnh(μxn)(6.16)

其中,

(6.17) h ( μ − x n ) = ν ( μ − x n ) ∑ n = 1 N ν ( μ − x n ) h(\boldsymbol{\mu}-\boldsymbol{x}_n) = \frac{\nu(\boldsymbol{\mu}-\boldsymbol{x}_n)}{\sum_{n=1}^N \nu(\boldsymbol{\mu}-\boldsymbol{x}_n)} \tag{6.17} h(μxn)=n=1Nν(μxn)ν(μxn)(6.17)

显然,上式是归一化的,且这一归一化是很有用的,它避免了输入空间中存在所有的基函数都取较小值的区域,这会直接导致预测值过小,从而使得预测值完全由参数 ω \boldsymbol{\omega} ω控制。

与BP神经网络的区别在于其训练方式,RBF神经网络也采用2-stage的训练方式,

1、非监督学习阶段:从样本空间中,选择中心点集合 μ \boldsymbol{\mu} μ,例如聚类算法可以在该阶段使用;
2、监督学习阶段,训练式(6.14)中参数 ω \boldsymbol{\omega} ω,该阶段可以使用误差反向传播算法。

Gaussian Process


可以看到,在之前的模型中,我们都会预先选定一个函数,并通过利用数据集进行训练从而确定函数的参数,进而得到可以使用的函数,这是典型的基于参数的模型。但是,如果预先选定的函数并不能够满足拟合数据集的要求,那么结果将会是极其糟糕的。

在介绍高斯过程之前,我们可以先回忆一下参数模型中的频率学派和贝叶斯学派。对于参数模型中的参数空间,频率学派通过数据集寻找参数的最优点估计,而贝叶斯学派则利用整个参数空间做加权,从而更好的避免过拟合产生的影响。

与之类似地,我们可以针对函数空间,同样考虑频率学派和贝叶斯学派的区别。如果我们预先指定一个函数,即寻找一个函数空间的点估计作为模型,那么这可以看作是一种类似于频率学思想的方法,基于参数模型的方法即属于此类方法。如果我们利用整个函数空间的所有函数做加权,那么这可以看作是一种类似于贝叶斯思想的方法,高斯过程即属于此类方法。

综上,高斯过程的核心思想即是认为预测函数服从一个分布(高斯分布),而通过训练来不断调整约束,获得这一分布。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值