机器学习有很多关于核函数的说法,什么是核函数
核函数就是内积。
故事应该从一个简单的二维世界讲起。从前有一个世界X,X里面有很多很多的数据点,这些数据点属于两个帮派,正类和负类。正类点居住在y轴右边,负类点居住在y轴左边,他们以y轴为分界线,泾渭分明,互不侵犯。
突然有一天,不知道是X纪年的几年几月几日,负类开始大举进攻正类领地的第四象限。正类很快失去了很多领地,又被迫签订了和平条约,从此X世界的居民们发现了一个问题,他们不能再用y轴作为国界了!
还好,在负类点中有一位聪明的数学家,他发现两国的地盘可以用一条直线分开,把平面上每一点坐标放进直线方程ax+by+c里,如果大于零,这就是正类的领地,小于零是负类的领地,中间这条线后来被命名为分类面,于是X世界里第一个线性分类器诞生了。有了数学的帮助,X世界太平了很多年。
然而好景不长,贪得无厌的负类君主再一次发起了远征,这一次他们占领了第一象限之外的大量领土,吞并了整个第四象限。然而由于进军过于激进,导致战线过长,负类远征的脚步也不得不停滞于此,开始休养生息。但是国界怎么办呢?
聪明的数学家苦思冥想,发现这么一个事实:之前两国的分类面是直线时,分类面可以用分类面两侧的两个点(两点中垂线是分类面)表示。如果叫这两个点(x+,y+),(x-,y-)的话,那么正类领地的所有点和(x+,y+)的内积都大于它们和(x-,y-)的内积;反之对负类领地也成立。数学家还发现,对于任意一群世界X中的点,(x+,y+)和(x-,y-)都能表示成它们的线性组合,对于一个新来的点,它和这两个点的内积就可以表示成所有点和所有其它点的内积的加权和。所以给定一些两个国家的点之后,我们可以计算两两点之间的内积,并把分类面表达成这些内积的线性加权和。后来人们把这些点的内积放在了一个矩阵里,并叫它核矩阵,核矩阵定义了世界的分类。在这个核矩阵里,矩阵里每个点的值是两个X世界点的线性内积,它定义的分类面在原来的X世界里是一条直线,所以这个核矩阵后来被成为线性核矩阵,而以两个点生成矩阵中每个点的映射被成为线性核函数。
这个发现可不得了。等数学家发现这一点之后,负类的领地已经进一步扩张了,现在正类的领地已经只剩下第一象限里一个抛物线的内部了。但有了新的核理论,这个国界问题难不倒数学家,他定义了一个映射,把X世界的点映射到
的四维世界,把这个世界的内积定义为新的核函数,在两个类的领地分别取了几个点作为基础之后,一个抛物线的分类面就被定义了出来。这是X世界里第一个被成功推导并得到公认的非线性分类面,而这里用到的核函数是上述映射的内积,也就是点坐标的多项式表示,所以这个核函数(矩阵)又被称为多项式核函数(矩阵)。
历史总是一遍遍重演,但这一次正类将历史推动到了前所未有的境地。X纪年若干年后的某一天,负类境内的第三象限突然因为正类策反发生哗变,同时正类也大举进攻第一象限的负类领地,希望收复失地。经过若干年的战争,最后两类将领地用第一、三象限的两条双曲线隔开,负类保有包括原点在内的第二、四象限和坐标轴附近的区域;正类则占领了第一、三象限的大部分。
现在的问题是,这么一来国界要怎么划分呢?
这回一个来自正类世界的懒惰的数学家想到了一个基于核方法的解决方案:我们不如跳过映射和内积的步骤,直接定义一个核函数吧!这种异想天开的方法被负类数学界嗤之以鼻,但在正类却大获成功。很快正类的数学家们发现两点之间距离的平方的指数的倒数(其实没这么复杂,就是正比于两点距离所定义的高斯概率)是一个不错的核函数,这样在分类面附近两类中分别选一些点,就可以定义任意的非线性分类面了。为了纪念这个伟大的正类数学家,后世用这位数学家生平最喜欢的三种食物:拉面、牛肉和和薯条命名了这个核函数,称之为RBF核(误)。
这个发现为推动后来两类数学界的统一做出了巨大的贡献,而发明RBF核的数学家也因为一句“数学家是有分类的,但数学是无分类的”的名言获得了菲尔茨和平奖(误)。
至于内积?后来有负类的数学家研究了一下RBF核是否对应一个向量映射,结果是如果想把RBF核表达成一个向量内积,我们需要一个映射将向量映射到一个无穷维的线性空间去。发现了这一点的数学家又发展了Mercer定理和重建核希尔伯特空间(Reproducing Kernel Hilbert Space)理论,但这就是另外一个故事了。
=======================
故事都是扯淡的,但数学道理大概是这么个回事儿,看看就好莫认真…