https://www.toutiao.com/a6653427986718523917/

数据点转换到高维空间后,原始特征无关紧要。仅仅计算测试数据与支持向量的点积,支持向量由SVM优化算法选择的特殊数据点。在此,作一个类比如下:一个人看过湖泊,河流,溪流,浅滩等,但从未见过大海。你怎么向这个人解释大海是什么?也许可以通过将海水中的水量与人们已经知道的水体中的水量相关联来解释。

简单与复杂的辩证:从线性模型到非线性模型

简单性是一个古老朴素的哲学观念。认识论和自然科学,对于世界的认识经历了由简单到复杂的过程。

复杂的事物与现象,背后存在简单的规律或过程;

现实世界中,纯粹线性的模型是几乎不存在的,正如你在初中学习匀速运动一样,但在实际中,匀速运动的情况几乎很难找到,即使是定速,也会因外界的扰动而发生改变。在机器学习实践中,也是如此,很多情况下需要非线性模型。

然而要构建复杂的非线性模型,往往是从简单的线性模型出发的。

线性模型很棒,因为它们易于理解且易于优化。 缺点是因为他们只能学习非常简单的决策边界。 神经网络可以学习更复杂的决策边界,但会丢失许多线性模型的漂亮凸性。

使线性模型表现为非线性的一种方法是转换输入。 例如,通过添加特征对作为附加输入。 在这样的表示上学习线性模型是凸的,但在除了非常低维空间之外的所有情况下都是计算上很难实现的。 你可能会问:不明确地扩展特征空间,是否可以在保留原始数据的同时,隐藏地处理特征扩张?

令人惊讶的是,答案是肯定的,这就是核方法

这是一个在当前空间下不可分的情况,我们的目标不是直接在当前维度寻找一个曲线来非线性划分类别,变换空间直接线性可分,这是哲学上简单性原则的应用:

这个线性平面,返回到原来空间就是一个形状类似椭圆的决策边界。这样就把问题解决了,从而找到了原空间的非线性分类边界。这个原空间的复杂,实质上是由高维空间的简单演绎过来的。

通过核方法,可以很好的处理线性不可分问题。简单性的哲学思想实质上就是,我们坚持寻找线性可分的转换问题,即变换数据,让它们线性可分,而变换数据的方法就是由低维到多维特征的一个特征空间变换。

从有限到无限的哲学思想

哲学中的有限和无限是对立统一的,①无限由有限构成、无限不能脱离有限而独立存在 。② 有限包含着无限 ,有限体现着无限。有限在一定条件下可以转变为无限,而反之亦成立。

高斯核函数可以把低维空间转化为无限维空间,同时又在实现了在低维计算高维点积。

第一、把有限空间映射到无限空间

核方法是一种将数据空间放入更高维向量空间的方式,这样数据空间与高维空间中超平面的交点决定了数据空间中更复杂、弯曲的决策边界。

举一个例子,通过将坐标为(x,y)的每个点发送到坐标为

的五维点,将二维数据空间变换为到五维空间。

如果我们想获得更多的灵活性,我们可以选择更高维度的核,例如通过将点 (x,y) 发送到九维空间中的点:

更有甚者,可以超越更高维向量空间,然后变换到无限维向量空间。你可以看到上面的九维核是如何成为五维核的扩展,只是在最后添加了四个维度。如果我们继续以这种方式处理更多维度,我们将获得越来越高的维度内核。如果我们要继续这样做,我们最终会有无限多的维度。

请注意,我们只能抽象的执行此操作。计算机只能处理有限的事物,因此无法在无限维向量空间中存储和处理计算。

第二、从无限返回有限

我们需要把事情转化回有限的世界,不光是因为我们想看看什么,更主要的是在现实中只有通过有限形式的计算才能完成表示无限维度的计算,避免维度灾难。

我们将通过将每个点发送到无限向量来定义无限多项式核

我们可以通过忘记除前五项之外的所有内容来恢复原始的五维内核。

实际上,原始的五维空间包含在这个无限维空间中。原始的五维核是我们通过将无穷多项式核投影到这个五维空间中得到的。

两个矢量(高斯斑点)的密度函数和相加的结果如下图所示。

将原始数据空间中的核定义到这个无限维空间,最常见的选择是高斯函数。我们将每个数据点发送到以某点为核的高斯函数。请记住,我们将每一个这些函数都视为向量(高斯核函数的泰勒级数展开),因此这个内核可以完成所有内核的工作:

它将原始数据空间中的每个点放入更高(实际上是无限)的维向量空间。

为了带回计算世界,我们需要选择一个位于这个无限维向量空间中的有限维向量空间,并将无限维空间投影到有限维子空间中。我们将通过选择数据空间中的点(有限)来选择有限维空间,然后采用以这些点为中心的高斯斑点所跨越的向量空间。这相当于由无限多项式核的前五个坐标定义的向量空间。

投影:实现无限维空间返回到有限维

对于有限维向量,定义投影的最常用方法是使用点积:这是我们通过将两个向量的相应坐标相乘,然后将它们全部加在一起得到的数字。

例如,三维向量的点积(1,2,3)和(2,5,4)的1·2+2·5+3·4=15

我们通过两个函数相乘来对函数执行类似的操作,实现数据集点的对应特征值相乘。由于我们不能将所有这些无数个数字加在一起,所以,我们采用积分。如果我们将两个高斯函数相乘并积分,则该数字等于中心点之间距离的高斯函数。注:这个在后面的数学思想部分会加以证明)。

换句话说,高斯核将无限维空间中的点积转换为数据空间中点之间距离的高斯函数。

因此如果数据空间中的两个点在附近,则在核空间表示它们的矢量之间的角度会很小。如果点相距很远,则相应的矢量将接近"垂直"。

从有限维到无限维空间的思想,帮助我们更好的理解高维空间的线性可分思想;而从无限维返回到有限维,又让我们更好的理解其几何意义、更好的实现计算。

泰勒级数:实现维度的无限延展和有限维度的计算

泰勒级数(Taylor series)用无限项连加式——级数来表示一个函数,这些相加的项由函数在某一点的导数求得。

高斯核函数会用到以下泰勒级数

先看一个维度下的泰勒级数展开,同时给出映射函数φ,熟悉了这个后,我们比较容易产生转换到高维度的想法。

从上面的泰勒级数展开式,我们得到高维空间的每一个元素为:

这个高斯核实现了:将无限维空间中的点积转换为数据空间中点之间距离的高斯函数而这个距离的高斯函数正比例于两个高斯函数相乘并积分的结果。与上文中哲学思想所讲完美契合。我们不需要、也不可能直接在在无限空间中来计算点积。非常精妙的是有高斯函数的泰勒级数帮我们这现了由高维空间返回到低维空间的计算。

下面图示是将2维特征投影到3维空间上,也就是泰勒级数取到2阶就好。

指数衰减函数:揭示分类的精妙

用支持向量计算的高斯核是输入特征空间中的指数衰减函数,其最大值在支持向量处获得并且在支持向量周围的所有方向上均匀衰减,导致超球面轮廓。如下图所示。

具有高斯核的SVM分类器简单地是在数据点和每个支持向量之间计算的核函数的加权线性组合。支持向量在数据点分类中的作用通过α(支持向量的全局预测有用性)和K(x,y)(支持向量在特定数据点的预测中的局部影响)来调和的。

为了定义一个N维高斯核,我们首先选择数据空间中的N个点。然后,我们可以通过计算与每个所选数据点的距离,并采用距离的高斯函数来计算数据空间中任何点的内核坐标。

数据点转换到高维空间后,原始特征无关紧要。仅仅计算测试数据与支持向量核的高斯函数值,支持向量是由SVM优化算法选择的特殊数据点。在此,进行一个松散类比如下:一个人看过湖泊,河流,溪流,浅滩等,但从未见过大海。你怎么向这个人解释大海是什么?也许可以通过将海水中的水量与人们已经知道的水体中的水量相关联来解释。

为了更好地理解这个内核是如何工作的,让我们弄清楚超平面与数据空间的交叉点是什么样的。

平面由以下形式的等式定义

其中(x1,...,xN)是在更高维的内核空间中点的坐标,并且是定义超平面的参数。所以这里的x是高维空间的f(x)。如下图所示。如果我们使用的是高斯内核,那么,由于点积,这些值(x1,...,xN)会测量到我们所选N个点的距离。

因此,决策边界是到这些N个点距离的高斯函数满足该等式的点集。

这仍然似乎很难理解,所以让我们看一下每个值(a1,...,aN)为1或-1 的示例。然后在带有标签ai=1的每个数据点附近,该值xi将非常接近1,而其他值xj将很小,因此总和:

将为正。同样,在一个点附近ai=-1,总和将是负数。因此,如果b=0,则决策边界将正点与负点分开。事实上,它将开辟出一个让人想起定义内核的高斯球的区域。下图中左侧显示了一个示例,其中颜色指示系数是正还是负。结果看起来像最近邻算法的平滑版本。

如果我们调整参数(a1,...,aN),这会改变围绕点的高斯球的大小,从而将决策边界移向或远离它们,如图的右侧所示。如果一个系数从正切换为负,则决策边界将从一个点的一侧移动到另一侧。

如果我们有一个标记数据集,那么在内核空间中训练线性分类算法(如或)对应于移动此决策边界,以最大化有多少数据点位于正确的一侧。

因此,这为我们选择决策边界提供了更大的灵活性,但最终结果将非常依赖于我们选择的N个向量。如果我们选择太多的点,那么我们将可能过拟合,类似于最近邻算法往往导致过度拟合的风险。我们真正想要的是在整个集合中均匀分布的少量点,理想情况是每个点都接近同一类中的大多数点。

透彻理解高斯核函数背后的哲学思想与数学思想相关推荐

  1. 一维数据高斯滤波器_透彻理解高斯混合模型

    高斯混合模型GMM是一个非常基础并且应用很广的模型.对于它的透彻理解非常重要. 本文从高斯分布开始逐步透彻讲解高斯混合模型 高斯分布 高斯分布有两个参数: μ = mean(数据的中心) σ2 =va ...

  2. 透彻理解深度学习背后的各种思想和思维

    https://www.toutiao.com/a6656397865755083271/ 2019-02-10 23:52:20 深度神经网络在2012年兴起,当时深度学习模型能够在传统机器学习问题 ...

  3. 一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉

    关于交叉熵在loss函数中使用的理解 交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距.以前做一些分类问题的时候,没有过多的注意,直接调用现成的库,用起 ...

  4. 一文彻底理解机器学习高斯核函数和基函数

    本文介绍了高斯核函数的感性理解,以及从线性代数角度求解.推导高斯核函数.基函数的公式,并用pyhon实现了其函数以及图像绘制. 如何理解高斯核函数呢?我建议从用途入手. 作为机器学习中的一种算法,在解 ...

  5. 只知道GAN你就OUT了——VAE背后的哲学思想及数学原理

    短短三年时间,变分编码器VAE(Variational Auto-encoder)同GAN一样,成为无监督复杂概率分布学习的最流行的方法.VAE之所以流行,是因为它建立在标准函数逼近单元,即神经网络, ...

  6. 透彻理解Spring事务设计思想之手写实现

    2019独角兽企业重金招聘Python工程师标准>>> 前言 事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败.事务具有4个特性:Atomicity(原 ...

  7. 【手写系列】透彻理解MyBatis设计思想之手写实现

    前言 MyBatis,曾经给我的感觉是一个很神奇的东西,我们只需要按照规范写好XXXMapper.xml以及XXXMapper.java接口.要知道我们并没有提供XXXMapper.java的实现类, ...

  8. 【手写系列】透彻理解Spring事务设计思想之手写实现

    事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败.事务具有4个特性:Atomicity(原子性),Consistency(一致性),Isolation(隔离性),Dura ...

  9. 支持向量机中高斯核函数的直观理解

    这一文章主要讲述高斯核函数的直观理解,并不会涉及支持向量机代价函数及最优化的问题. 什么是高斯核函数? 在支持向量机中它是一个用来构造非线性边界的核函数. 高斯核函数的定义: 这个函数说白了,就是点X ...

最新文章

  1. MySQL几个特别语法示例
  2. thinkphp隐藏后台地址
  3. C++ 11 中的POD
  4. 如何获取空对象的类型
  5. 1.设计模式中监听模式(观察者模式)(Python实现)
  6. NodeJs 在window中安装使用
  7. html调用js函数_Java Web初学者探索学习笔记10—网络API的js数据接口调用解决方案...
  8. java scala_经过几天的Scala回归Java的10个最烦人的事情
  9. 参数到不进oracle,Oracle对于启动参数检查不严格
  10. ssms中怎么设置自增_如何在SSMS状态栏中设置自定义颜色
  11. php session gc_maxlifetime,PHPsession 有效期 session.gc_maxlifetime
  12. linux中搜索指定字符串的方法
  13. linux下启动管理,rEFInd启动管理器配置文件详解
  14. 实验1 Bean管理
  15. 学习Python处理Excel 难度0级别 多表合并、多条件筛选、找出重复项、去重
  16. Lua程序设计 | 模块和包、泛型迭代器和for、元表和元方法
  17. 罗永浩直播卖货,体现了一个年近50岁男人的无奈
  18. gin实现简易服务器
  19. 木棍上的蚂蚁jolj2466 模拟法
  20. STM32的矩阵按键程序思路

热门文章

  1. 《AI系统周刊》第1期:社群招新,打通智能计算软硬件“任督二脉”
  2. 掌握这 7 个编程设计原则,想做菜鸟都难
  3. Apress水果大餐——移动开发
  4. Ubuntu Linux经典著作
  5. 收敛速度更快更稳定的Wasserstein GAN(WGAN)
  6. 独家|OpenCV 1.2 如何用OpenCV扫描图像、查找表和测量时间(附链接)
  7. 近20年3867篇AI论文大调研:有缺陷的指标被滥用,好的指标被忽视
  8. 独家 | 使用Python实现机器学习特征选择的4种方法(附代码)
  9. 报告 | 野蛮数据时代,企业和从业者如何应对变革焦虑?
  10. 最强干货实践教程 | YOLOv5在建筑工地中安全帽佩戴检测的应用