Chapter 6:Kernel Methods

一:导论

1:在之前我们介绍的线性参数回归和分类模型或者是神经网络模型中,我们利用训练集(training set)给出参数 w⃗  的点推测或者是后验分布,当我们做预测时,训练集将不再被使用到,我们纯粹是基于参数 w⃗  的点推测或后验分布来做出预测的。同时还有另外一类技术,训练集不仅被用来训练模型参数,同时当我们对新的输入矢量 x⃗  做预测时,训练集也会被使用到,例如使用kernel function的Gaussian process。

2:如果模型是基于fixed nonlinear feature space mapping ϕ⃗ (x⃗ ) ,则kernel function k(x⃗ ,x⃗ )=ϕ⃗ (x⃗ )Tϕ⃗ (x⃗ ) k(x⃗ ,x⃗ )=x⃗ Tx⃗  称为linear kernel。注意kernel function是特征向量的内积,kernel trick或者是kernel substitution恰好是利用了这一性质。同时我们也注意到kernel function 是一个对称函数 k(x⃗ ,x⃗ )=k(x⃗ ,x⃗ ) 。有着各种各样形式的内核函数,比如stationary kernel k(x⃗ ,x⃗ )=k(x⃗ x⃗ ) ,又比如homogeneour kernel 或者是radial basis functions k(x⃗ ,x⃗ )=k(||x⃗ x⃗ ||)

3:正如上面提到的,kernel trick或者是kernel substitution利用了内核函数是特征矢量的内积这一性质。kernel trick其基本思路是如果一个算法中的输入矢量 x⃗  仅仅是以标量积的形式存在,则我们可以用其它的kernel function去替换这一标量积(scalar product)。

二:Constructing Kernels

1:valid kernel的评判标准:内核函数能否可以写成特征矢量标量积的形式 {ϕ⃗ (x⃗ )Tϕ⃗ (x⃗ )} ;或者是判断Gram矩阵K {Knm=k(x⃗ n,x⃗ m)} 对于所有可能的矢量 x⃗ n 是否是正半定矩阵。

2:构造kernel function的三种方法:

(1):选择一个feature space mapping ϕ⃗ (x⃗ ) ,然后令 k(x⃗ ,x⃗ )=ϕ⃗ (x⃗ )Tϕ⃗ (x⃗ )

(2):直接构造一个kernel function,比如 k(x⃗ ,z⃗ )=(x⃗ Tz⃗ )2 ,但必须要确保该kernel function是一个有效内核;

(3):以简单内核为基础,通过下列技术来构造新的内核:假设我们有两个有效内核, k1(x⃗ ,x⃗ )k2(x⃗ ,x⃗ ) ,则

k(x⃗ ,x⃗ )=ck1(x⃗ ,x⃗ )c0k(x⃗ ,x⃗ )=f(x⃗ )k1(x⃗ ,x⃗ )f(x⃗ )f()k(x⃗ ,x⃗ )=q(k1(x⃗ ,x⃗ ))q()coefficientk(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⃗ ))ϕ⃗ (x⃗ )x⃗ RMk3()RMkernelk(x⃗ ,x⃗ )=x⃗ TAx⃗ Ak(x⃗ ,x⃗ )=ka(x⃗ a,x⃗ a)+kb(x⃗ b,x⃗ b)x⃗ =(x⃗ a,x⃗ b)kakbkernelk(x⃗ ,x⃗ )=ka(x⃗ a,x⃗ a)kb(x⃗ b,x⃗ b)

我们希望构造出来的kernel k(x⃗ ,x⃗ ) 对称并且是正半定,同时它应该表达着 x⃗ ,x⃗  的相似性,当然这相似性要视具体的应用而定。

3:经常会用到的一些kernel function:

1): k(x⃗ ,x⃗ )=(x⃗ Tx⃗ +c)M

2):Gaussian kernel: k(x⃗ ,x⃗ )=exp(||x⃗ x⃗ ||2/(2σ2))

因为 ||x⃗ x⃗ ||2=x⃗ Tx⃗ +(x⃗ )Tx⃗ 2x⃗ Tx⃗  ,则如果我们运用kernel substitution技术,用非线性kernel k(x⃗ ,x⃗ ) 替换 x⃗ Tx⃗  ,则我们可以获得一个新的kernel k(x⃗ ,x⃗ )=exp{12σ2(k(x⃗ ,x⃗ )+k(x⃗ ,x⃗ )2k(x⃗ ,x⃗ ))}

3):利用generative model p(x⃗ ) 来定义kernel

方法1:我们可以构造简单kernel k(x⃗ ,x⃗ )=p(x⃗ ,x⃗ ) ,这个kernel表示如果一对 x⃗ ,x⃗  对应着较高的概率,则它们是相似的。我们能够在此比较简单kernel的基础上扩展一个新的内核 k(x⃗ ,x⃗ )=ip(x⃗ |i)p(x⃗ |i)p(i) ,其中p(i)为正的权重因子,如果采取无限和的极限,则 k(x⃗ ,x⃗ )=p(x⃗ |z⃗ )p(x⃗ |z⃗ )p(z⃗ )dz⃗  ,其中 z⃗  称为latent variable。

方法二:我们可以利用gengerative model p(x⃗ ) 构造Fisher kernel。假设我们有一个parametric generative model p(x⃗ |θ⃗ ) ,则 k(x⃗ ,x⃗ )=g⃗ (θ⃗ ,x⃗ )TF1g⃗ (θ⃗ ,x⃗ ) ,其中 g⃗ (θ⃗ ,x⃗ )=θ⃗ lnp(x⃗ |θ⃗ ) ,F为Fisher information matrix,表达式为 Ex⃗ [g⃗ (θ⃗ ,x⃗ )g⃗ (θ⃗ ,x⃗ )T]=g⃗ (θ⃗ ,x⃗ )g⃗ (θ⃗ ,x⃗ )Tp(x⃗ |θ⃗ )dx⃗ 

但是通常Fisher information matrix是不可解的,因此我们可以采取样品平均近似,表达式为 F1NNn=1g⃗ (θ⃗ ,x⃗ n)g⃗ (θ⃗ ,x⃗ n)T ;或者我们可以略去Fisher information matrix,获得Fisher kernel k(x⃗ ,x⃗ )=g⃗ (θ⃗ ,x⃗ )Tg⃗ (θ⃗ ,x⃗ )

4): k(x⃗ ,x⃗ )=tanh(ax⃗ Tx⃗ +b) ,虽然它的Gram matrix不是正半定的,但是此kernel经常被使用。

三:Gaussian Processes

1:求解回归或者是分类问题的两种思路:

第一种思路:basis function Model:我们令 p(t|x⃗ ,w⃗ )=N(t|y(x⃗ ,w⃗ ),β1)=N(t|w⃗ Tϕ⃗ (x⃗ ),β1) 或者是 p(Ck|x⃗ ,w⃗ )=σ(a)=σ(w⃗ Tϕ⃗ (x⃗ )) ,通过训练集(training set)训练模型,我们给出 w⃗  的后验分布,然后再给出预测分布;

第二种思路:Gaussian Processes:我们不定义basis function,我们直接给函数 y(x⃗ ) 或者是 a(x⃗ ) 定义一个概率分布,使得一些列数据点 x⃗ 1,...,x⃗ N 对应的 y(x⃗ ) 或者是 a(x⃗ ) 值的联合分布 p(y(x⃗ 1),...,p(x⃗ N)) 或者是 p(a(x⃗ 1),...,a(x⃗ N)) 为高斯分布,其均值为0,方差为Gram矩阵K( Knm=k(x⃗ n,x⃗ m) ), k(x⃗ n,x⃗ m) 为kernel function,所以在Gaussian Processes这一方法中,合适的kernel function的选取显得尤为重要。

2:Gaussian processes for regression:

1):Calculating the prediction distribution:

假设 p(tn|yn)=N(tn|yn,β1) β 为超参数并且表示的是具有高斯分布噪音的precision,因为每个观察数据点的噪音是相互独立的,则 p(t⃗ |y⃗ )=N(t⃗ |y⃗ ,β1IN) ,其中 t⃗ =(t1,...,tN)Ty⃗ =(y1,...,yN)INNN 。从Gaussian processes的定义我们知道 p(y⃗ )=N(y⃗ |0,K) ,决定Gram矩阵K的kernel function应该要表达这样一条性质:对于相似点的 x⃗ nx⃗ m ,它们对应的值 ynym 应该要比非相似点对更加强烈的关联,当然相似的定义视具体实际情况而定。

则边际分布:

p(t⃗ )=p(t⃗ |y⃗ )p(y⃗ )dy⃗ =N(t⃗ |0,C)C(x⃗ n,x⃗ m)=k(x⃗ n,x⃗ m)+β1δnm
对于regression问题,一个广泛使用的kernel function是 k(x⃗ n,x⃗ m)=θ0exp{θ12||x⃗ nx⃗ m||2}+θ2+θ3x⃗ Tnx⃗ m

我们最终想要得到的预测分布:

p(tN+1|x⃗ N+1,t⃗ N)=N(tN+1|m(x⃗ N+1),σ2(x⃗ N+1))m(x⃗ N+1)=k⃗ TC1Nt⃗ σ2(x⃗ N+1)=ck⃗ TC1Nk⃗ 

k⃗  由一些列元素 k(x⃗ n,x⃗ N+1) 组成,并且 m(x⃗ N+1) Nn=1ank(x⃗ n,x⃗ N+1) ,在这里 an C1Nt⃗  的第n个元素。

Gaussian processes的计算包括了计算一个N*N矩阵的逆,所需的时间为 O(N3) ,以及矢量与矩阵的相乘,所需时间为 O(N2) ;而在basis function的模型中,所需的时间分别为 O(M3)O(M2) ,一般来说训练集中数据点的个数要多于basis function的个数,使用Gaussian processes求解效率更低一点,但是Gaussian processes的一个优点是 we can consider kernel function that only can be expressed in terms of an infinite number of basis functions。

2):Learning the hyperparameters:

正如我们上面看到的,Gaussian processes的预测分布部分地依赖于kernel function的选择,我们一般会选择带有参数的kernel function,然后从训练集中推出这些参数的值或者是后验分布,我们称这些参数为hyperparameters,推断出参数相关信息有极大似然法和贝叶斯方法这两种方法:

极大似然法:我们用基于梯度的最优化算法,比如conjugate gradients最大化似然函数 p(t⃗ |θ⃗ ) 的对数,其中 θ 代表着Gaussian processes的hyperparameters,其中:

lnp(t⃗ |θ⃗ )=12ln|CN|12t⃗ TC1Nt⃗ N2ln(2π)lnp(t⃗ |θ⃗ )θi=12Tr(C1NCNθi)+12t⃗ TC1NCNθiC1Nt⃗ 

但必须要说的是 lnp(t⃗ |θ⃗ ) 一般来说是nonconvex函数,因此它可能有着多个最大值;

贝叶斯方法:我们能够定义一个关于 θ 的先验分布,然后用基于梯度的算法最大化其后验分布的log,获得一组 θ⃗ MAP ;在全贝叶斯处理中,我们需要对 θ⃗  进行边际化处理,但这一般没有解析解,因此我们需要做近似处理。

3):Automatic relevance determination(ARD):

我们之前给出的kernel function为

k(x⃗ n,x⃗ m)=θ0exp{θ12||x⃗ nx⃗ m||2}+θ2+θ3x⃗ Tnx⃗ m

在这里参数 θ1 对应着所有的输入变量;

现在运用ARD方法,我们能够对每个输入变量分别定义一个参数,则上述的kernel function显示如下:

k(x⃗ n,x⃗ m)=θ0exp{12i=1Dηi(xnixmi)2}+θ2+θ3i=1Dxnixmi

此方法的好处是the optimization of these parameters by maximum likelihood allows the relative importance of different inputs to be inferred from the data。

3:Gaussian processes for classification

1):Calculating the predictive distribution:

在之前的分类问题中,我们使用公式 p(t=1|x⃗ )=σ(a) ,当我们用Gaussian processes处理分类问题时,我们能够对 a(x⃗ ) 使用Gaussian processes,然后使用logistic sigmoid把 a(x⃗ ) 转变成y{ σ(a) },这样我们就获得了一个关于函数 y(x⃗ ) 的non-Gaussian stochastic process。对于两类问题,我们知道 p(t|a)=σ(a)t(1σ(a))1t

假设我们有一个训练集,其输入为 x⃗ 1,...,x⃗ N ,对应的目标变量 t⃗ N=(t1,...,tN)T ,并且我们也有一个test point x⃗ N+1 ,对应的目标值为 tN+1 。由于我们对 a(x⃗ ) 定义了一个gaussian processes,因此 p(a⃗ N+1)=N(a⃗ N+1|0,CN+1) ,其中 C(x⃗ n,x⃗ m)=k(x⃗ n,x⃗ m)+υδnm υ 的值会预先确定好,在这里要说的是这里的kernel function由一组参数 θ 控制。

预测分布为 p(tN+1=1|t⃗ N)=p(tN+1=1|aN+1)p(aN+1|t⃗ N)daN+1 ,这个没有解析解,因此我们可以对 p(aN+1|t⃗ N) 采取拉普拉斯近似,近似的结果为 p(aN+1|t⃗ N)=N(aN+1|E[aN+1|t⃗ N],var[aN+1|t⃗ N]) ,这样我们能够使用结果(4.153)计算预测分布 p(tN+1=1|t⃗ N) 。拉普拉斯近似的具体计算过程见课本。

2):Learning the hyperparameters:

正如我们上面说的,kernel function是由一组参数控制的,因此我们能够通过最大化似然函数 p(t⃗ N|θ⃗ ) 来获得参数值, p(t⃗ N|θ⃗ )=p(t⃗ N|a⃗ N)p(a⃗ N|θ⃗ )da⃗ N

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值