一:导论
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⃗ ′) ,则
我们希望构造出来的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⃗ )TF−1g⃗ (θ⃗ ,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是不可解的,因此我们可以采取样品平均近似,表达式为 F≈1N∑Nn=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)T,y⃗ =(y1,...,yN),IN为N∗N的单位矩阵 。从Gaussian processes的定义我们知道 p(y⃗ )=N(y⃗ |0,K) ,决定Gram矩阵K的kernel function应该要表达这样一条性质:对于相似点的 x⃗ n和x⃗ m ,它们对应的值 yn和ym 应该要比非相似点对更加强烈的关联,当然相似的定义视具体实际情况而定。
则边际分布:
我们最终想要得到的预测分布:
k⃗ 由一些列元素 k(x⃗ n,x⃗ N+1) 组成,并且 m(x⃗ N+1) 可以表达成 ∑Nn=1ank(x⃗ n,x⃗ N+1) ,在这里 an 是 C−1Nt⃗ 的第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⃗ |θ⃗ ) 一般来说是nonconvex函数,因此它可能有着多个最大值;
贝叶斯方法:我们能够定义一个关于 θ 的先验分布,然后用基于梯度的算法最大化其后验分布的log,获得一组 θ⃗ MAP ;在全贝叶斯处理中,我们需要对 θ⃗ 进行边际化处理,但这一般没有解析解,因此我们需要做近似处理。
3):Automatic relevance determination(ARD):
我们之前给出的kernel function为
在这里参数 θ1 对应着所有的输入变量;
现在运用ARD方法,我们能够对每个输入变量分别定义一个参数,则上述的kernel function显示如下:
此方法的好处是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))1−t 。
假设我们有一个训练集,其输入为 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