发布网友 发布时间:2022-04-21 02:22
共3个回答
热心网友 时间:2022-06-17 07:55
先给个定义:核函数K(kernel function)就是指K(x, y) = <f(x), f(y)>,其中x和y是n维的输入值,f(•) 是从n维到m维的映射(通常而言,m>>n)。<x, y>是x和y的内积(inner proct),严格来说应该叫欧式空间的标准内积,也就是很多人常说的点积。kernel其实就是帮我们省去在高维空间里进行繁琐计算的“简便运算法”。甚至,它能解决无限维空间无法计算的问题!因为有时f(•)会把n维空间映射到无限维空间去,对此我们常常束手无策,除非是用kernel,尤其是RBF kernel(K(x,y) = exp(-||x-y||^2) )。在有kernel之前,做machine learning的典型的流程应该是:data --> features --> learning algorithm,但kernel给我们提供了一个alternative,那就是,我们不必定义从data到feature的映射函数,而是可以直接kernel(data) --> learning algorithm,也可以是data --> features --> kernel(features) --> learning algorithm。所以虽然我们看到kernel常被应用在SVM(SVM中的kernel应该是后一种用法,后文再说),但其实要用到内积的learning algorithm都可以使用kernel。“用到内积的learning algorithm”其实并不少见,不信你可以想一想最普通不过的linear classifier/regressor有没有一个步骤是计算特征向量(feature vectors)。简单说就是一些函数,这些函数在某些领域具有特定的功能,而且性能比较好,就称为核(函数)了,svm中有核(函数),卷积网络中的filter有时也称为核。初学SVM时常常可能对kernel有一个误读,那就是误以为是kernel使得低维空间的点投射到高位空间后实现了线性可分。其实不然。这是把kernel和feature space transformation混为了一谈。(这个错误其实很蠢,只要你把SVM从头到尾认真推导一遍就不会犯我这个错。)还是简单回顾一下吧。SVM就是 y = w'•φ(x) + b,其中φ(x)是特征向量(feature vectors),并且是φ(x)使得数据从低维投射到高位空间后实现了线性可分。而kernel是在解对偶问题的最优化问题时,能够使φ(x)更方便地计算出来,特别是φ(x)维数很高的时候。
热心网友 时间:2022-06-17 07:55
解释的是将低维空间中线性不可分的数据变换到高维空间找到一个线性可分的分类的过程,并不能与kernel trick等价,更不能与kernel等价。Kernel Trick只是解决这个变换到高维后如何避开维数影响进行有效率的计算的问题,本身并不是投射到高维的手段,Kernel Function(核函数)只是一个关于特征向量的函数,本质是变换后的空间中的内积,这个函数的构造和引入的初衷只是为了提高SVM在高维的计算效率。另外,总是滥用空间想象能力和类比能力试图理解classification和regression并不是一个很好的习惯。
热心网友 时间:2022-06-17 07:56
这个其实是一个数学上的叫法。数学上把比如乘起来这样的积分里面的g(x,y)叫成一个核函数。这东西最早是出现在积分方程里面的。然后因为你看到这个积分自然可以联系到所谓的希尔伯特空间(内积就是这样一个形式,L2空间里面内积就是这样一个积分,只不过这个希尔伯特空间里面的内积加了一个核函数,离散的时候你可以理解成加了一个正定矩阵),所以后面g(x,y)就和可能是你指的SVM里面的那个核函数联系在一起了,一般SVM里面写成K(x,y)(顺便SVM用的是RKHS,就是是再生核的希尔伯特空间,换言之内积可以把函数给换出来,我不知道这么说是不是有点不太明白)。实在弄不懂你看点泛函分析就明白了。其实这些东西在数学上都是相通的,就是说白了核心就是Mercer定理(学过泛函的肯定不会陌生)。你要是学过泛函的话去看看泛函书上面的这个定理,或者看这个:Mercer's theorem。当然SVM还加上了一大票的二次优化的内容就是了。