现在的位置: 首页 > 编程语言 > 正文

核函数

2019年04月01日 编程语言 ⁄ 共 846字 ⁄ 字号 评论关闭

今天在看一篇blog的时候,看到了核函数和神经网络的对比,它提到核函数说是正定核,当时没有理解,后来看了看SVM的核函数的介绍,对核函数有了新的认识。

       首先,我们在优化SVM的时候,使用到的是二次规划的对偶问题优化,我记得我第一次看的时候想了半天为什么要解对偶问题,后来也是请教了一位老师,他给我解释的。如果不引入对偶问题,我们后面如何用核函数!

       那核函数究竟是什么呢?

        如果有一个Input


我们说它有n个特征,这里我们这里管这n个叫做attribute,不叫做feature。但是我们并不想单单使用这些特征,我还想使用诸如这样的特征,那我们就还需要做特征的映射,这里的我们称之为feature,而之后我们在每一个需要是使用x的地方以来做替代,就使用了我们做映射之后的特征。

我们的公式中有使用点积的部分分别代表样本点中的第i个和第j个。如果我们做这个这个映射,就实现了特征映射,即我们用来替换。但是这样做的效率不高,使用一个小的技巧,我们定义一个函数,
来表示我们的attributes做了特征映射之后的features做点积的结果。而如果我们找到一个这样的函数,那么我们就可以直接用attributes来计算我们mapping之后的结果,即我们就可以不用直接进行特征映射,而直接将attribute带入我们的函数就得到了映射之后的features做点积的结果。这样的计算量就小了很多,算法的复杂度也降低了许多。

有了上面的铺垫,我们就只需要找到这样的一个函数就可以了,我们称这样的函数为核函数。当我们找到了一个核函数之后,如果才能判定我们的核函数是正确的,是满足我们要求的就变成我们现在要解决的问题了。

这个时候,我们定义核矩阵K,,我们的判定是通过这矩阵来判定的。通过点积的性质我们知道<x,z>=<z,x>,所以我们有,所以我们的矩阵是对称矩阵,而我们有能证明这个矩阵是半正定的。所以我们要想判定一个函数是不是正确的核函数,只需要证明对应的核矩阵是半正定的即可!


抱歉!评论已关闭.