机器学习里的 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 product)。

光看这一段还是不明白kernel是什么,用来干什么的…对吧?不要急。一个好的知识分享者是不会把一篇空洞的定义扔下就不管的,TA会告诉你这个概念的intuition,然后给你举个小小的栗子,最后告诉你几个应用场景。Andrew Ng的Machine Learning为什么会成为一门现象级的MOOC?原因之一就是因为他除了是个学术上的大神,也同样是个极有质素的知识分享者。所以我要学习他。

好了,intuitively(这也模仿得太生硬了吧…),要计算<f(x), f(y)>,我们要先分别计算f(x)和f(y),然后再求它们的内积。上面的定义里也说了,经过映射后的x和y,维数大大增加,计算内积的成本可能会非常之大,而且在高位空间费力牛劲儿地计算内积,内积又是一个scalar,相当于说又把我们的计算从高维空间拉回到一维空间!所以我们特别想要一个“简便运算法”,帮助我们不需要奔向高维空间就能在家门口计算得到想要的内积。这时候该轮到我们的猪脚——kernel登场了,它能帮我们做到这一点。

举个小小栗子。
令 x = (x1, x2, x3, x4); y = (y1, y2, y3, y4);
令 f(x) = (x1x1, x1x2, x1x3, x1x4, x2x1, x2x2, x2x3, x2x4, x3x1, x3x2, x3x3, x3x4, x4x1, x4x2, x4x3, x4x4); f(y)亦然;
令核函数 K(x, y) = (<x, y>)^2.
接下来,让我们带几个简单的数字进去看看是个什么效果:x = (1, 2, 3, 4); y = (5, 6, 7, 8). 那么:
f(x) = ( 1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16) ;
f(y) = (25, 30, 35, 40, 30, 36, 42, 48, 35, 42, 49, 56, 40, 48, 56, 64) ;
<f(x), f(y)> = 25+60+105+160+60+144+252+384+105+252+441+672+160+384+672+1024
= 4900.
好累,对不对?可谁让f(·)把四维空间的数据映射到十六维空间里呢?
如果我们用核函数呢?
K(x, y) = (5+12+21+32)^2 = 70^2 = 4900.
就是这样!

所以现在你看出来了吧,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)。

那么kernel在SVM究竟扮演着什么角色?
初学SVM时常常可能对kernel有一个误读,那就是误以为是kernel使得低维空间的点投射到高位空间后实现了线性可分。其实不然。这是把kernel和feature space transformation混为了一谈。(这个错误其实很蠢,只要你把SVM从头到尾认真推导一遍就不会犯我这个错。)
还是简单回顾一下吧。SVM就是 y = w’·φ(x) + b,其中φ(x)是特征向量(feature vectors),并且是φ(x)使得数据从低维投射到高位空间后实现了线性可分。而kernel是在解对偶问题的最优化问题时,能够使φ(x)更方便地计算出来,特别是φ(x)维数很高的时候。

------------------------------正文完,附上几个链接--------------------------------
kernel的种类繁多,如果想详细了解,可以看看这个帖子 Kernel Functions for Machine Learning Applications
Caltech的机器学习: Learning From Data
台湾大学林轩田《机器学习基石》:Coursera - Free Online Courses From Top Universities

PS:本来草稿里存的话是想告诉题主,这样的问题好好去翻教材,或者看Caltech的Abu-Mostafa教授的公开课Learning from Data,或者看台湾大学林轩田的《机器学习基石》,(前者是后者的导师,而且师徒俩讲课都很萌),弄懂kernel这个概念是不成问题的。
但当时没有就这样草率地发出来。原因倒不是怕被扣友善度,而是接连地追问了我自己到底弄明白kernel了没有。所以谢谢题主问这个问题,你又驱使我把这个概念完整地思考一遍,并记录下来。

机器学习里的 kernel 是指什么?相关推荐

  1. 机器学习里的kernel是指什么?

    先给个定义:核函数K(kernel function)就是指K(x, y) = ,其中x和y是n维的输入值,f(·) 是从n维到m维的映射(通常而言,m>>n).是x和y的内积(inner ...

  2. 【机器学习基础】一文搞懂机器学习里的L1与L2正则化

    文章来源于SAMshare,作者flora 特征锦囊:今天一起搞懂机器学习里的L1与L2正则化 今天我们来讲讲一个理论知识,也是老生常谈的内容,在模型开发相关岗位中出场率较高的,那就是L1与L2正则化 ...

  3. halcon机器视觉算法原理与编程实战_快速弄懂机器学习里的集成算法:原理、框架与实战...

    作者:  博观厚积 简书专栏:https://www.jianshu.com/u/2f376f777ef1 1. 关于集成学习算法 集成学习算法,通俗地讲就是:三个臭皮匠,顶个诸葛亮,这在很多地方都有 ...

  4. 怎样搞定机器学习里的数学?斯坦福高手教你具体问题具体分析

    夏乙 栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI 做机器学习需要多少数学基础?这是很多初学者最关心的问题,答案也众说纷纭. 有人说,概率论线性代数要预先精通:有人说,微积分要懂一点:也 ...

  5. 清华大学计算机科学与技术系朱军教授:机器学习里的贝叶斯基本理论、模型和算法...

    雷锋网[AI科技评论]按:3月3日,中国人工智能学会AIDL第二期[人工智能前沿讲习班]在北京中科院自动化所举行,本期讲习班的主题为[机器学习前沿].周志华教授担任学术主任,前来授课的嘉宾均为中国机器 ...

  6. 清华大学计算机科学与技术系朱军教授:机器学习里的贝叶斯基本理论、模型和算法

    [转] http://www.leiphone.com/news/201703/djm3u9LLqylr3C8N.html 雷锋网[AI科技评论]按:3月3日,中国人工智能学会AIDL第二期[人工智能 ...

  7. 机器学习里的贝叶斯基本理论、模型和算法

    本文转自中国人工智能学会通讯第3期,已获授权,特此感谢! 欢迎人工智能领域技术投稿.约稿.给文章纠错,请发送邮件至heyc@csdn.net 3月3日,中国人工智能学会AIDL第二期[人工智能前沿讲习 ...

  8. 机器学习里的bias的一些处理方法和思考

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:砍手豪 链接:https://zhuanlan.zhihu. ...

  9. 机器学习里的欧氏距离

    "远在天边,近在眼前",距离是一个需要定义的概念,对距离进行量化需要一个合适的坐标参考体系.在诗句里,距离可以很浪漫,"世界上最遥远的距离,不是生与死的距离,不是天各一方 ...

最新文章

  1. 轨迹系列1——一种基于路网图层的GPS轨迹优化方案
  2. DB2数据库V8.2版本远程连接方法
  3. TensorFlow CIFAR-10数据集
  4. PCL:描述三维离散点的ROPS特征(Code)
  5. ofbiz修改mysql_如何将OFBIZG的默认数据库更改mysql的方法(只求参考 )
  6. 美团推出极简版 为用户提供“米面粮油”等生活用品采购服务
  7. 定义一个扁平的按钮样式
  8. python读取dat文件写入表格_python DDT读取excel测试数据
  9. 在VS中查看Halcon变量
  10. 通过vb代码将多个excel合并成一个
  11. ThinkPad T450 笔记本电脑 Fn + F8 组合键失效后开启无线网络的办法
  12. 获取汉字拼音首字母和五笔首字母
  13. Selenium3自动化学习(三)
  14. jy-12-SPRINGMYBATIS02——云笔记05-刘苍松
  15. WPS word表格中的神秘的底色
  16. Chatbots 中对话式交互系统的分析与应用
  17. 安装虚拟机 vmware
  18. 在文件夹及其子文件夹内,批量提取相同后缀名的文件
  19. cross-entropy for one-stage detecor
  20. js判断数组的方法(JavaScript判断数组的方法,7种),实操详细

热门文章

  1. m2eclipse使用
  2. Windows服务器安全策略
  3. HTML中使用JS实现文档编辑器
  4. 最佳答案 html5中不使用这些属性,[东北师范大学]《《HTML5开发基础与应用》2019年11月考试期末作业考核(100分)...
  5. 分享几个能用的editplus 注册码
  6. python中where函数_Python pandas.DataFrame.where函数方法的使用
  7. 无U盘升级win10专业版
  8. qbzt day5 下午
  9. 见到他你会爱上他的“接口管理与测试平台-小幺鸡”
  10. SpringBoot+Vue实现第三方百度登录(二)