Chapter 6:Kernel Methods

来源:互联网 发布:mac 搜狗五笔不能用 编辑:程序博客网 时间:2024/06/06 02:50

一:导论

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),在这里anC1Nt⃗ 的第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

0 0