机器学习实践指南里的kernel是指什么

机器学习里的kernel是指什么_百度知道
机器学习里的kernel是指什么
我有更好的答案
Kernel 操作系统内核 操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。 下面列出了它的一些核心功能:事件的调度和同步。进程间的通信(消息传递)。存储器管理。进程管理。 输入输出例程的管理。Carnegie-Mellon大学开发的Mach操作系统采用客户机/服务器体系结构,它包含一个实现最少功能的、而且相对而言较小的微内核。它管理设备驱动程序、消息、线程和虚拟存储器。其他功能被模块化,通过使用进程间通信机制与操作系统内核通信。远程过程调用(RPC)用于与其他系统上运行的进程进行通信。 在DOS操作系统,操作系统内核被认为是界于基本输入输出系统(BIOS)和应用软件之间的那部分。应用命令通过操...
其他类似问题
为您推荐:
机器学习的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
基于Kernel的机器学习在建模与分类问题的应用研究
下载积分:3000
内容提示:基于Kernel的机器学习在建模与分类问题的应用研究
文档格式:PDF|
浏览次数:47|
上传日期: 09:20:23|
文档星级:
该用户还上传了这些文档
基于Kernel的机器学习在建模与分类问题的应用研究
官方公共微信在机器学习相关的论文或者书籍里面经常见到kernel这个词。请问kernel的含义及本质到底是什么呢?
我是初学者对这方面了解不深,但是我还是希望大家看那个最高票答案(多图的那个)的时候保持冷静和警惕,因为这个答案有一定误导性。我推荐 和其他几位答主的解释,非常到位。最高票答案图很漂亮,语言也很漂亮,很直观,也很popular,但解释的是将低维空间中线性不可分的数据变换到高维空间找到一个线性可分的分类的过程, 并不能与kernel trick等价,更不能与kernel等价。Kernel Trick只是解决这个变换到高维后如何避开维数影响进行有效率的计算的问题,本身并不是投射到高维的手段,Kernel Function(核函数)只是一个关于特征向量的函数,本质是变换后的空间中的内积,这个函数的构造和引入的初衷只是为了提高SVM在高维的计算效率。比如我们把特征向量空间从变换维,变换后的特征向量记为其中上标代表维数,下标表示第几个sample。那么利用Dual Lagrange找到分类函数的系数(向量)所需要优化的目标函数就是(这里已经转成二次规划需要的形式了)其中是需要求解的Lagrange multipliers向量,矩阵第n行第m个元素为,所以我们可以看到这里会频繁计算这个变换后的向量之间的内积,而如果我们需要变换到维数很大的空间的话,这样的计算会变得很麻烦。那么我们不妨把这样的计算往变换前的特征向量靠,变换后的空间的内积运算可以写作,那我们就规定我们的核函数为,至于这个核函数具体是什么值怎么算就取决于我们想作什么样的变换,总之最后是要变换到关于的内积形式,比如需要的变换是,那么我们就可以自己动笔代入一下公式求得核函数是,计算的时候代入核函数求内积,就比直接用变换后的空间向量点乘硬求快多了。复杂度从下降到了.这样思路其实我们在初中就接触过,比如有个代入求值题求的值,直接代进去算6个项加起来会显得很蠢,但是整理成再代入求值就方便的多了。以上思路是已经确认空间变换方法的情况下使用这种“化简”在计算中偷懒的技巧,但实际上也有为了用现成的性质较好的核函数而硬凑变换空间的应用情况,而且并不少见。比如ls-svm工具箱提供的就是可以选择参数的核函数(次数和系数),所以实际选择了核函数的形式也就是选择了变换空间的方法。Gaussian Kernel则是一种把原空间投影到无穷维空间的变换中用于计算的核函数。但是,不能因此说Kernel Trick是完成低维变换到高维的过程,Kernel Trick只是为这种变换之后的计算服务的一个小技巧,真正的变换在定义并将其作为特征空间的时候就已经完成了,硬算内积不通过kernel不是不可以只是不方便。不能因为应用中经常把核函数类型作为变换类型就本末倒置说kernel是变换的过程。另外,总是滥用空间想象能力和类比能力试图理解classification和regression并不是一个很好的习惯,话至此。
抛个砖。&br&&br&machine learning里有kernel的内容至少有以下几个:1. kernel density estimation, 2. kernel smoothing, 3.kernel method, 4.RKHS.&br&&br&1. kernel density estimation 与 kernel smoothing指的是同一个kernel,这里的kernel function &img src=&///equation?tex=K%28x%2Cy%29& alt=&K(x,y)& eeimg=&1&&指的是定义在&img src=&///equation?tex=R%5Ed+%5Ctimes+R%5Ed& alt=&R^d \times R^d& eeimg=&1&& 上,取值于&img src=&///equation?tex=R_%7B%2B%7D& alt=&R_{+}& eeimg=&1&&的二元函数,用来反映&img src=&///equation?tex=x& alt=&x& eeimg=&1&&和&img src=&///equation?tex=y& alt=&y& eeimg=&1&&之间的距离。&br&最常用的例子可能是Gaussian kernel &img src=&///equation?tex=K%28x%2Cy%29+%3D+%5Cexp%5CBigl+%28-%5Cfrac%7B%28x-y%29%5E2%7D%7B2%5Csigma%5E2%7D%5CBigr%29& alt=&K(x,y) = \exp\Bigl (-\frac{(x-y)^2}{2\sigma^2}\Bigr)& eeimg=&1&&.&br&可以参考wiki 的
&a href=&///?target=http%3A//en.wikipedia.org/wiki/Kernel_smoother& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kernel smoother&i class=&icon-external&&&/i&&/a& 和 &a href=&///?target=http%3A//en.wikipedia.org/wiki/Kernel_density_estimation& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kernel density estimation&i class=&icon-external&&&/i&&/a&&br&&br&2. kernel method (kernel trick) 指的kernel function &img src=&///equation?tex=K%28x%2Cy%29& alt=&K(x,y)& eeimg=&1&& 也是定义在&img src=&///equation?tex=R%5Ed+%5Ctimes+R%5Ed& alt=&R^d \times R^d& eeimg=&1&& 上的二元函数,但取值在&img src=&///equation?tex=R& alt=&R& eeimg=&1&&上,它可以看成 &img src=&///equation?tex=x& alt=&x& eeimg=&1&&和&img src=&///equation?tex=y& alt=&y& eeimg=&1&&的“内积”. 事实上,&img src=&///equation?tex=K%28x%2Cy%29& alt=&K(x,y)& eeimg=&1&&的定义要求存在某个Hilbert space &img src=&///equation?tex=%5Cmathcal%7BV%7D& alt=&\mathcal{V}& eeimg=&1&&和函数&img src=&///equation?tex=%5Cpsi%3AR%5Ed%5Crightarrow+%5Cmathcal%7BV%7D& alt=&\psi:R^d\rightarrow \mathcal{V}& eeimg=&1&& 使得 &img src=&///equation?tex=K%28x%2Cy%29+%3D+%5Clangle+%5Cpsi%28x%29%2C%5Cpsi%28y%29%5Crangle& alt=&K(x,y) = \langle \psi(x),\psi(y)\rangle& eeimg=&1&&,这里的内积是Hilbert space &img src=&///equation?tex=%5Cmathcal%7BV%7D& alt=&\mathcal{V}& eeimg=&1&&上的内积. 这样定义的kernel function满足对称性和正定性。&br&另外Mercer 定理说,任何满足对称性和正定性的二元函数&img src=&///equation?tex=K%28x%2Cy%29& alt=&K(x,y)& eeimg=&1&&都能找到Hilbert space &img src=&///equation?tex=%5Cmathcal%7BV%7D& alt=&\mathcal{V}& eeimg=&1&&和函数&img src=&///equation?tex=%5Cpsi%3AR%5Ed%5Crightarrow+%5Cmathcal%7BV%7D& alt=&\psi:R^d\rightarrow \mathcal{V}& eeimg=&1&& 使得 &img src=&///equation?tex=K%28x%2Cy%29+%3D+%5Clangle+%5Cpsi%28x%29%2C%5Cpsi%28y%29%5Crangle& alt=&K(x,y) = \langle \psi(x),\psi(y)\rangle& eeimg=&1&&. 这样一来,我们无需知道&img src=&///equation?tex=%5Cmathcal%7BV%7D& alt=&\mathcal{V}& eeimg=&1&&和&img src=&///equation?tex=%5Cpsi& alt=&\psi& eeimg=&1&&,只需定义一个kernel function,就能得到新的“内积”,这个“内积”是某个Hilbert space &img src=&///equation?tex=%5Cmathcal%7BV%7D& alt=&\mathcal{V}& eeimg=&1&&上的欧氏内积。以Kernel SVM为例,在低维空间里的点可能无法用线性hyperplane分开,但可能投影到某个高维空间之后,这些点是Linear separable的,所以往往kernel svm会比linear svm有更大的灵活性。&br&可以参考wiki 的 &a href=&///?target=http%3A//en.wikipedia.org/wiki/Kernel_method& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kernel method&i class=&icon-external&&&/i&&/a&&br&&br&3.Reproducing Kernel Hilbert Space 里的reproducing kernel 指的是一个二元函数&img src=&///equation?tex=K%28%5Ccdot%2C%5Ccdot%29%5Ccolon+%5Cmathcal%7BX%7D%5Ctimes+%5Cmathcal%7BX%7D+%5Crightarrow+R+& alt=&K(\cdot,\cdot)\colon \mathcal{X}\times \mathcal{X} \rightarrow R & eeimg=&1&&满足&img src=&///equation?tex=K%28x%2Cy%29+%3D+%5Clangle+K_x%2CK_y%5Crangle+_%7B%5Cmathcal%7BH%7D%7D& alt=&K(x,y) = \langle K_x,K_y\rangle _{\mathcal{H}}& eeimg=&1&&,&img src=&///equation?tex=K_x%2CK_y%5Cin+%5Cmathcal%7BH%7D& alt=&K_x,K_y\in \mathcal{H}& eeimg=&1&&,其中&img src=&///equation?tex=%5Cmathcal%7BH%7D& alt=&\mathcal{H}& eeimg=&1&&是一个由&img src=&///equation?tex=%5Cmathcal%7BX%7D& alt=&\mathcal{X}& eeimg=&1&&上函数构成的Hilbert space,且对于任何&img src=&///equation?tex=x%5Cin%5Cmathcal%7BX%7D& alt=&x\in\mathcal{X}& eeimg=&1&&,存在唯一的&img src=&///equation?tex=K_x%5Cin%5Cmathcal%7BH%7D& alt=&K_x\in\mathcal{H}& eeimg=&1&&使得 &br&&img src=&///equation?tex=%5Cforall+f%5Cin+%5Cmathcal%7BH%7D%2C+f%28x%29+%3D+%5Clangle+f%2C+K_x%5Crangle+_%7B%5Cmathcal%7BH%7D%7D& alt=&\forall f\in \mathcal{H}, f(x) = \langle f, K_x\rangle _{\mathcal{H}}& eeimg=&1&& (reproducing property).&br&这个公式的意思是,RKHS里的任何一个元素&img src=&///equation?tex=f& alt=&f& eeimg=&1&&,它在&img src=&///equation?tex=%5Cmathcal%7BX%7D& alt=&\mathcal{X}& eeimg=&1&&上的取值可以通过在&img src=&///equation?tex=%5Cmathcal%7BH%7D& alt=&\mathcal{H}& eeimg=&1&&上做内积得到。另外RKHS还要求取值泛函(evaluation functional)是连续的,即&br&&img src=&///equation?tex=%5Cforall+x%5Cin+%5Cmathcal%7BX%7D%2C+L_x%5Ccolon+%5Cmathcal%7BH%7D+%5Crightarrow+R+& alt=&\forall x\in \mathcal{X}, L_x\colon \mathcal{H} \rightarrow R & eeimg=&1&&&img src=&///equation?tex=L_x%28f%29+%3D+f%28x%29& alt=&L_x(f) = f(x)& eeimg=&1&&是&img src=&///equation?tex=%5Cmathcal%7BH%7D& alt=&\mathcal{H}& eeimg=&1&&上的连续泛函。&br&Moore-Aronszajn定理说&img src=&///equation?tex=K%28%5Ccdot%2C%5Ccdot%29%5Ccolon+%5Cmathcal%7BX%7D%5Ctimes+%5Cmathcal%7BX%7D+%5Crightarrow+R+& alt=&K(\cdot,\cdot)\colon \mathcal{X}\times \mathcal{X} \rightarrow R & eeimg=&1&&是一个reproducing kernel当且仅当它是对称和正定的。&br&&br&另外值得一提的是,reproducing kernel 可以用来做kernel method里的kernel, 只要让 &img src=&///equation?tex=%5Cpsi%28x%29+%3D+K_x& alt=&\psi(x) = K_x& eeimg=&1&&即可。反之,有了kernel method 的feature mapping&img src=&///equation?tex=%5Cpsi& alt=&\psi& eeimg=&1&&,也可以定义一个RKHS, 见&a href=&///?target=http%3A//en.wikipedia.org/wiki/Reproducing_kernel_Hilbert_space& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Reproducing kernel Hilbert space&i class=&icon-external&&&/i&&/a&-Feature Maps一节。
抛个砖。machine learning里有kernel的内容至少有以下几个:1. kernel density estimation, 2. kernel smoothing, 3.kernel method, 4.RKHS.1. kernel density estimation 与 kernel smoothing指的是同一个kernel,这里的kernel function K(x,y)指的是定义…
先给个定义:核函数K(kernel function)就是指K(x, y) = &f(x), f(y)&,其中x和y是n维的输入值,f(·) 是从n维到m维的映射(通常而言,m&&n)。&x, y&是x和y的内积(inner product),严格来说应该叫欧式空间的标准内积,也就是很多人常说的点积(dot product)。&br&&br&光看这一段还是不明白kernel是什么,用来干什么的...对吧?不要急。一个好的知识分享者是不会把一篇空洞的定义扔下就不管的,TA会告诉你这个概念的intuition,然后给你举个小小的栗子,最后告诉你几个应用场景。Andrew Ng的Machine Learning为什么会成为一门现象级的MOOC?原因之一就是因为他除了是个学术上的大神,也同样是个极有质素的知识分享者。所以我要学习他。&br&&br&好了,intuitively(这也模仿得太生硬了吧...),要计算&f(x), f(y)&,我们要先分别计算f(x)和f(y),然后再求它们的内积。上面的定义里也说了,经过映射后的x和y,维数大大增加,计算内积的成本可能会非常之大,而且在高位空间费力牛劲儿地计算内积,内积又是一个scalar,相当于说又把我们的计算从高维空间拉回到一维空间!所以我们特别想要一个“简便运算法”,帮助我们不需要奔向高维空间就能在家门口计算得到想要的内积。这时候该轮到我们的猪脚——kernel登场了,它能帮我们做到这一点。&br&&br&举个小小栗子。&br&令 x = (x1, x2, x3, x4); y = (y1, y2, y3, y4);&br&令 f(x) = (x1x1, x1x2, x1x3, x1x4, x2x1, x2x2, x2x3, x2x4, x3x1, x3x2, x3x3, x3x4, x4x1, x4x2, x4x3, x4x4); f(y)亦然;&br&令核函数 K(x, y) = (&x, y&)^2.&br&接下来,让我们带几个简单的数字进去看看是个什么效果:x = (1, 2, 3, 4); y = (5, 6, 7, 8). 那么:&br&f(x) = ( 1,
8, 12, 16) ;&br&f(y) = (25, 30, 35, 40, 30, 36, 42, 48, 35, 42, 49, 56, 40, 48, 56, 64) ;&br&&f(x), f(y)& = 25+60+105+160+60+144+252+384+105+252+441+672+160+384+672+1024&br&
= 4900.&br&好累,对不对?可谁让f(·)把四维空间的数据映射到十六维空间里呢?&br&如果我们用核函数呢?&br&K(x, y) = (5+12+21+32)^2 = 70^2 = 4900.&br&就是这样!&br&&br&所以现在你看出来了吧,kernel其实就是帮我们省去在高维空间里进行繁琐计算的“简便运算法”。甚至,它能解决&b&无限维空间&/b&无法计算的问题!因为有时f(·)会把n维空间映射到无限维空间去,对此我们常常束手无策,除非是用kernel,尤其是RBF kernel(K(x,y) = exp(-||x-y||^2) )。&br&&br&在有kernel之前,做machine learning的典型的流程应该是:data --& features --& learning algorithm,但kernel给我们提供了一个alternative,那就是,我们不必定义从data到feature的映射函数,而是可以直接kernel(data) --& learning algorithm,也可以是data --& features --& kernel(features) --& learning algorithm。&br&所以虽然我们看到kernel常被应用在SVM(SVM中的kernel应该是后一种用法,后文再说),但其实要用到内积的learning algorithm都可以使用kernel。“用到内积的learning algorithm”其实并不少见,不信你可以想一想最普通不过的linear classifier/regressor有没有一个步骤是计算特征向量(feature vectors)的内积呢?&br&&br&&br&----------------------------------------FAQ---------------------------------------&br&&a data-hash=&2fc302b88c01dd0d6d2fe4ab& href=&///people/2fc302b88c01dd0d6d2fe4ab& class=&member_mention& data-editable=&true& data-title=&@Yang Zhuoran& data-tip=&p$b$2fc302b88c01dd0d6d2fe4ab&&@Yang Zhuoran&/a& 给出了kernel在machine learning中的几个用处,并给出了专业解释,比如用kernel来描述距离/相似性,比如kernel在SVM中的作用,等等。其实,理解了kernel的本质,这几个问题都可以理解。&br&&br&&b&kernel在SVM究竟扮演着什么角色?&/b&&br&SVM的原理不多说了,只想提一下我初学SVM时对kernel有一个误读,那就是,我曾误以为是kernel使得低维空间的点投射到高位空间后实现了线性可分。其实不然。我理解错了的原因就是&b&把kernel和feature space transformation&/b&&b&混为了一谈&/b&。(这个错误其实很蠢,只要你把SVM从头到尾认真推导一遍就不会犯我这个错。)&br&还是简单回顾一下吧。SVM就是 y = w'·φ(x) + b,其中φ(x)是特征向量(feature vectors),并且是φ(x)使得数据从低维投射到高位空间后实现了线性可分。而kernel是在解对偶问题的最优化问题时,能够使φ(x)更方便地计算出来,特别是φ(x)维数很高的时候。&br&&br&&b&kernel为什么能用来描述距离/相似性?&/b&&br&这就要说到“内积”的概念了。内积&x, y&计算的不就是向量x投影到向量y的&b&投影长度&/b&嘛,那不就是等于说向量x和向量y有多大的overlap嘛~&br&&br&&br&&br&------------------------------正文完,附上几个链接--------------------------------&br&kernel的种类繁多,如果想详细了解,可以看看这个帖子 &a href=&///?target=http%3A///2010/03/kernel-functions-for-machine-learning-applications/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kernel Functions for Machine Learning Applications&i class=&icon-external&&&/i&&/a&&br&Caltech的机器学习: &a href=&///?target=http%3A//work.caltech.edu/telecourse.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Learning From Data&i class=&icon-external&&&/i&&/a&&br&台湾大学林轩田《机器学习基石》:&a href=&///?target=https%3A//www.coursera.org/course/ntumlone& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Coursera - Free Online Courses From Top Universities&i class=&icon-external&&&/i&&/a&&br&&br&PS:本来草稿里存的话是想告诉题主,这样的问题好好去翻教材,或者看Caltech的Abu-Mostafa教授的公开课Learning from Data,或者看台湾大学林轩田的《机器学习基石》,(前者是后者的导师,而且师徒俩讲课都很萌),弄懂kernel这个概念是不成问题的。&br&但当时没有就这样草率地发出来。原因倒不是怕被扣友善度,而是接连地追问了我自己到底弄明白kernel了没有。所以谢谢题主问这个问题,你又驱使我把这个概念完整地思考一遍,并记录下来。
先给个定义:核函数K(kernel function)就是指K(x, y) = &f(x), f(y)&,其中x和y是n维的输入值,f(·) 是从n维到m维的映射(通常而言,m&&n)。&x, y&是x和y的内积(inner product),严格来说应该叫欧式空间的标准内积,也就是很多人常说的点积(dot prod…
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 指数族分布 机器学习 的文章

 

随机推荐