之前看SVM核函数相关的问题,总是会碰到再生核希尔伯特空间(Reproducing Kernel Hilbert Space, RKHS)不过一直没有太仔细了解过到底是指的什么,前几天研究了一下。
希尔伯特空间
先来说一下什么是希尔伯特空间。
这个概念听起来高大上,其实是个非常简单的概念。
先说什么是线性空间
线性空间
线性空间即定义了数乘和加法的空间。这个就是具有线性结构的空间。
有了线性空间的概念之后,因为有数乘和加法,所以空间中可以找到一组基底(Basis)能够通过线性组合得到空间中所有的点。
度量空间和赋范空间
距离的定义必须满足如下三个条件:
1.
2.
3.
定义了距离的空间叫度量空间。
定义了距离的线性空间叫线性度量空间
接下来再定义范数
1.
2.
3.
所以范数这个概念,可以看成从零点到
所以:由范数可以定义距离,即
因为距离的定义,不满足范数的第二条条件
因为
但
举一个例子:
这个满足距离定义,但是不满足范数定义。所以范数是比距离更具体的一个东西
而定义了范数的空间,叫赋范空间和度量空间。另外完备的赋范空间叫巴拿赫空间。
而定义了范数的线性空间,叫赋范线性空间
希尔伯特空间
定义了范数之后,还没有定义角度。那就再来定义角度,所以可以定义内积
1. 对称性
2. 对第一变元的线性性质,即
3. 正定性
另外还要再说一下函数空间的内积。
一个函数可以看成一个无穷维的向量。
将一个函数按照
如果采样的间隔变得无穷的小,则这个函数就可以表示为一个无穷维的向量。
所以一个函数空间的内积可以定义为:
由内积可以导出范数,但是范数不可以导出内积。因为可以定义
另外函数空间的概念,还可以从另外一个角度来思考,例如:
1. 泰勒级数展开,可以看成将一个函数用
2. 傅立叶级数展开,即将一个函数用三角函数的形式进行无穷维的展开
一个
引入无穷维的空间(一般指函数空间),具有线性结构同时定义了内积,同时还具有完备性的空间就叫希尔伯特空间
比如上面讲的傅立叶变换就是一个希尔伯特空间。
核函数
在一般的欧氏空间中,我们可以定义一个
当一个矩阵可以进行特征值分解的时候,其特征向量构成了这个
然后将其推广到
先说定义一个函数空间中无穷维的矩阵
如何其满足:
1. 正定性,即对于任意的函数
2. 对称性,即
则这个二元函数可以称为核函数
可以证明一个核函数的特征函数之间是正交的
所以
同时原来的核函数也可以分解成为核函数之间相乘的结果:
再生核希尔伯特空间
下面就进入到正题之中。
RKHS是由核函数构成的空间。
其基底为:
所以其中任意函数都可以由基底表示
所以其内积为:
再来看核函数
化成向量坐标表示形式:
所以计算内积:
上面这个性质就叫做 再生性(reproducing property),所以这个空间才叫做再生核希尔伯特空间。
这个性质是非常好的,因为这样看,原本函数之间计算内积需要算无穷维的积分的,但是现在只需要算核函数就好了。
所以定义一个点的映射一个点
得到两个特征空间上的内积为:
这就是kernel trick
SVM的kernel形式推导
这个相当于另一种SVM的推导形式了,即先将点映射成为kernel的形式,然后再进行那个最优化的一番推导。
然后也能推出最后跟用svm正常推导,最后把内积替换成为那个形式一样的结果。
详情见参考文献[2][3]都有推导。
参考资料
- 函数空间这个是上交的一个公开课:数学之旅的其中一讲。整个系列讲的都非常的不错,通过通俗的方式讲解了数学中许多高深的概念。
- A Story of Basis and Kernel - Part II: Reproducing Kernel Hilbert Space这个是一个中国人写的英文博客,但是它的的英文水平非常之高,读起来通俗易懂。这一篇的前一篇是讲函数空间的,也非常好,建议看一下。
- 支持向量机:Kernel II这篇讲支持向量机的,讲的也不错。