最近,自己整理了一下笔记,可参考: 专家坐堂:机器学习中对核函数的理解 ,望各位批评和指正
72 个回答
关于这点的误解实在太多。
核函数和映射没有关系。 核函数只是用来计算映射到高维空间之后的内积的一种简便方法。
一般英文文献对Kernel有两种提法,一是Kernel Function,二是Kernel Trick。从Trick一词中就可以看出,这只是一种运算技巧而已,不涉及什么高深莫测的东西。
具体巧在哪里呢?我们如果想进行原本就线性不可分的数据集进行分割,那么选项一是容忍错误分类,即引入Soft Margin;选项二是我们可以对Input Space做Feature Expansion,把数据集映射到高维中去,形成了Feature Space。我们 几乎可以认为 (引用Caltech的课堂用语“ We are safe but not certain ”)原本在低维中线性不可分的数据集在足够高的维度中存在线性可分的超平面。
围绕选项二,那么我们所做的就是要在Feature Space套用原本在线性可分情况下的Input Space中使用过的优化方法,来找到那个Maximaizing Margin的超平面。原理机制一模一样,是二次规划,唯一不同是代入数据的不同,我们需要代入 \phi(x_i) 而不是 x_i 。这时(在假设我们已知了如何选取mapping之后)才有了核函数的概念。
具体Trick的意义,就是简化计算二次规划中间的一步内积计算。也即中间步骤有一步必须求得 \phi(x_i)'\phi(x_j) ,而我们可以定义核函数 K(x_i,x_j)=\phi(x_i)'\phi(x_j) ,使得我们在不需要显式计算每一个 \phi(x_i) 、甚至不需要知道 \phi(\cdot ) 长什么样的情况下,直接求出 \phi(x_i)'\phi(x_j) 的值来。
也就是说,核函数、内积、相似度这三个词是等价的。因为inner product其实就是一种similarity的度量。核函数和映射是无关的。
但为什么这么多的认知中核函数是一种映射呢。一来这两件事一般先后进行,所以常常被混为一谈。二来就像前面所述,核函数让人们不需要知道 \phi(\cdot ) 长什么样,不需要知道怎么选取映射,就能够算出内积。因此这常常被认作是一种implicit mapping。这是由Mercer Theorem保证的,即只要核函数满足一定条件,那么映射空间一定存在。