【机器学习中的数学】基函数与函数空间

引言

在学习线性回归模型的时候就会遇到基函数,可能我们会遇到多项式基函数、高斯基函数、sigmoid基函数,当然在高等数学和信号系统中还经常会碰到傅里叶基。有时候,不禁要问,这些基函数为什么这么设计?这些基函数的作用是什么?
后来发现基函数是核方法和字典训练的基础,于是乎,我逐渐有了一些例如特征转换和映射、字典元素的概念。不过还是对基函数与函数空间的关系、基函数的深层认识模棱两可。我希望能通过这篇文章,来探究这些东西。

基函数

在数学中,基函数是函数空间一组特殊的基的元素。对于函数空间中的连续函数都可以表示成一系列基函数的线性组合,就像是在向量空间中每个向量都可以表示成基向量的线性组合一样。
在数值分析和近似理论中,基函数也称为混合函数(blending function),因为其在插值(interpolation)的应用

举例:
多项式基:{1,t, t2}是实系数二次多项式集合的基,每一个形如a+bt+ct2的二次多项式都可以写成由基函数1、t、t^2组成的线性组合。另外,{(t-1)(t-2)/2, -t(t-2), t(t-1)/2}是二次多项式的另一组基,称为拉格朗日基(Lagrange basis)。
傅里叶基:余弦函数构成了平方可积函数的(正交)Schauder基。

说说径向基函数

径向基函数有个类似高斯函数的形状,我们可以看到下面的图像,不同的系数,有不同的函数图像:



下面的三组图像是三个径向基函数在不同的权重的线性组合下的曲线形态:




我们知道,线性回归模型可以看做是目标函数加入了高斯噪声模型,其概率模型形式为:

<a href="http://www.codecogs.com/eqnedit.php?latex=p(t|X,\delta2)=\frac{1}{(2\pi){N/2}|K|{1/2}}exp(-\frac{1}{2}tTK^{-1}t)" target="_blank">

p(t|X,\delta^2)=\frac{1}{(2\pi)^{N/2}|K|^{1/2}}exp(-\frac{1}{2}t^TK^{-1}t)
p(t|X,\delta^2)=\frac{1}{(2\pi)^{N/2}|K|^{1/2}}exp(-\frac{1}{2}t^TK^{-1}t)
</a>
对于多维高斯模型的协方差矩阵,可以看做是数据构成的矩阵再加入一个噪声的方阵,当使用基函数的时候,协方差矩阵就变成了核矩阵再加上噪声的方阵。

<a href="http://www.codecogs.com/eqnedit.php?latex=K=\alpha&space;XXT&plus;\delta2I&space;\Rightarrow&space;K=\alpha&space;\Phi&space;\PhiT&space;&plus;&space;\delta2I" target="_blank">

K=\alpha XX^T+\delta^2I \Rightarrow K=\alpha \Phi \Phi^T + \delta^2I
K=\alpha XX^T+\delta^2I \Rightarrow K=\alpha \Phi \Phi^T + \delta^2I
</a>
下面是用多项式基函数和径向基函数分别构成的特征变换矩阵:

<a href="http://www.codecogs.com/eqnedit.php?latex=\Phi&space;=&space;\begin{bmatrix}&space;1&space;&&space;x_1&space;&&space;x_12&space;\&space;1&space;&&space;x_2&space;&&space;x_22&space;\&space;:&space;&&space;:&space;&&space;:&space;\&space;1&space;&&space;x_n&space;&&space;x_n^2&space;\end{bmatrix}" target="_blank">

\Phi = \begin{bmatrix} 1 & x_1 & x_1^2 \ 1 & x_2 & x_2^2 \ : & : & : \ 1 & x_n & x_n^2 \end{bmatrix}
\Phi = \begin{bmatrix} 1 & x_1 & x_1^2 \ 1 & x_2 & x_2^2 \ : & : & : \ 1 & x_n & x_n^2 \end{bmatrix}
</a>

<a href="http://www.codecogs.com/eqnedit.php?latex=\Phi&space;=&space;\begin{bmatrix}&space;exp(-2(x_1-1)2)&space;&&space;...&space;\&space;exp(-2(x_2-1)2)&space;&&space;...&space;\&space;:&space;&&space;:&space;\&space;exp(-2(x_n-1)^2)&space;&&space;...&space;\end{bmatrix}" target="_blank">

\Phi = \begin{bmatrix} exp(-2(x_1-1)^2) & ... \ exp(-2(x_2-1)^2) & ... \ : & : \ exp(-2(x_n-1)^2) & ... \end{bmatrix}
\Phi = \begin{bmatrix} exp(-2(x_1-1)^2) & ... \ exp(-2(x_2-1)^2) & ... \ : & : \ exp(-2(x_n-1)^2) & ... \end{bmatrix}
</a>

由于径向基函数是一种局部基函数(localized basis function),那么距离基函数中心比较远的区域,数据项对方差的贡献将趋于零,只剩下噪声的贡献。因此,对于基函数所在的区域之外的区域进行外插的时候,模型对于它做出的预测会变得相当确定,这不是我们想要的结果,可以用高斯过程这种贝叶斯回归方法来避免,这也就引入了径向基核函数这种无限维的特征转换。
下面的特征变换是由三个不同参数的径向基函数组成的,这里看到协方差矩阵的图像中对角线区域,蓝色部分是由噪声贡献的,而红色区域是由基函数贡献的。


利用这种协方差矩阵,构成的多维高斯分布的抽样结果用图形给出:

径向基函数与插值

径向基函数可以看作是一个高维空间中的曲面拟合(逼近)问题,学习是为了在多维空间中寻找一个能够最佳匹配训练数据的曲面,然后来一批新的数据,用刚才训练的那个曲面来处理(比如分类、回归)。径向基函数的本质思想是反向传播学习算法应用递归技术,这种技术在统计学中被称为随机逼近。径向基函数就是在神经网络的隐单元里提供了提供了一个函数集,该函数集在输入模式(向量)扩展至隐空间时,为其构建了一个任意的“基”。这个函数集中的函数就被称为径向基函数。

径向基函数是一种精确插值器,其方法方法不同于全局和局部多项式插值器,它们都不是精确插值器(不要求表面穿过测量点)。径向基函数还可预测大于最大测量值和小于最小测量值的值。
径向基函数用于根据大量数据点生成平滑表面。这些函数可为平缓变化的表面生成很好的结果。但在表面值在短距离内出现剧烈变化和/或怀疑样本值很可能有测量误差或不确定性时,这些方法不适用。

径向基核函数

我们先看一下为什么说径向基核函数(高斯核函数)是无限维的特征转换吧。
将径向基核函数做泰勒展开形式如下:

<a href="http://www.codecogs.com/eqnedit.php?latex=k(x,x')=exp(-(x-x')2)=exp(-x2)exp(-x'2)exp(2xx')&space;=exp(-x2)exp(-x'2)[\sum_{i=0}{\infty&space;}\frac{(2xx')i}{i!}]&space;=\sum_{i=0}{\infty&space;}[exp(-x2)exp(-x'2)\sqrt{\frac{2i}{i!}}\sqrt{\frac{2i}{i!}}xix'i]&space;=\Phi(x)^T\Phi(x')" target="_blank">

k(x,x')=exp(-(x-x')^2)=exp(-x^2)exp(-x'^2)exp(2xx') =exp(-x^2)exp(-x'^2)[\sum_{i=0}^{\infty }\frac{(2xx')^i}{i!}] =\sum_{i=0}^{\infty }[exp(-x^2)exp(-x'^2)\sqrt{\frac{2^i}{i!}}\sqrt{\frac{2^i}{i!}}x^ix'^i] =\Phi(x)^T\Phi(x')
k(x,x')=exp(-(x-x')^2)=exp(-x^2)exp(-x'^2)exp(2xx') =exp(-x^2)exp(-x'^2)[\sum_{i=0}^{\infty }\frac{(2xx')^i}{i!}] =\sum_{i=0}^{\infty }[exp(-x^2)exp(-x'^2)\sqrt{\frac{2^i}{i!}}\sqrt{\frac{2^i}{i!}}x^ix'^i] =\Phi(x)^T\Phi(x')
</a>
其对应的无限维的特征转换为:

<a href="http://www.codecogs.com/eqnedit.php?latex=\Phi(x)=exp(-x2)(1,\sqrt{\frac{2}{1!}}x,\sqrt{\frac{22}{2!}}x^2,...)" target="_blank">

\Phi(x)=exp(-x^2)(1,\sqrt{\frac{2}{1!}}x,\sqrt{\frac{2^2}{2!}}x^2,...)
\Phi(x)=exp(-x^2)(1,\sqrt{\frac{2}{1!}}x,\sqrt{\frac{2^2}{2!}}x^2,...)
</a>

我们看到了径向基核函数,是xi和xj数据之间欧氏距离的函数。
下面是核矩阵和抽样的图像:




从上图看到,径向基核函数以每个数据点为中心进行建模,在有数据的区域贡献随机变量的方差,而不再像用单一的径向基函数只在函数中心保有对方差的贡献。上图同样说明,相邻的数据有强相关性,而相离的数据没有什么相关性,即红色区域和蓝色区域说明的情况。
这是高斯过程模型的基础,相比贝叶斯线性模型而言,高斯过程不再对模型参数进行建模(通过对参数分布进行采样,再进行不同基函数模型的组合),而是直接对数据进行相应操作。

函数空间浅显解释

空间是数学抽象出来描述具有某些特殊性质和结构的集合。学过线性代数的人都知道线性空间,向量是线性空间的基本元素。空间中还有一个很重要的概念是基。为什么要有基?是为了更好的描述空间。比如说三维空间,这个空间里面的元素的个数是不可数的(也就是和自然数集找不到一一对应的关系),所以一一列出来是不可能的。数学家想出了一个很好的办法,用任意三个不共面向量的线性组合来表示这个空间中的任意一个元素。
有了上面的概念,我们可以理解函数空间就是满足一定性质和结构的函数集合,组成这个空间的元素都是满足一定条件的函数。所以,这个函数空间里面的所有元素都是函数,而且这个空间其实是无穷维的,基有无穷多个。
因为我是通信专业的,现在用傅里叶变换来理解一下函数空间。傅里叶变换就是给出了一组基,要求求出利用每个基线性组合成这一信号(函数)的组合系数,或者说是在这组基下的坐标。傅里叶变换的美妙之处就在于这组基取得实在是太好了。为什么呢?首先他们是正交的,更主要的是它还和自然界的情况有着微妙的联系。自然界中的水波、音波、电磁波等等,如果用数学抽象,显然是三角函数。在振荡电路、模拟通信等等领域中,使用三角函数形式的波形的好处也是非常多的。可以看到,傅里叶变换在一维信号处理领域获得了很大的成功。需要指出的是,傅里叶变换在二维信号处理领域,比如说在图像处理领域的缺点就很多了。直观上,图像的周期现象似乎不是那么明显。而且从一维情况转换到二维情况,复杂度成倍增加。

转载请注明作者Jason Ding及其出处
Github博客主页(http://jasonding1354.github.io/)
GitCafe博客主页(http://jasonding1354.gitcafe.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)
Google搜索jasonding1354进入我的博客主页

推荐阅读更多精彩内容