0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器学习中Kernel的秘密

WpOh_rgznai100 来源:YXQ 2019-06-19 09:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文探讨的不是关于深度学习方面的,但可能也会涉及一点儿,主要是因为 Kernel(内核)的强大。Kernel 一般来说适用于任何机器学习算法,你可能会问为什么,我将在文中回答这个问题。

一般来说,在机器学习领域中,我们要把相似的东西放在相似的地方。这个规则对所有的机器学习算法都是通用的,不论它是有监督、无监督、分类还是回归。问题在于我们应该如何准确地确定什么是相似的?为了揭示这个问题,我们将从 Kernel 的基础开始学习。

两个向量之间的点积是一个神奇的东西,可以肯定地说,它在一定程度上度量了相似性。通常在机器学习的文章中,点积表示成以下形式:

这表示了向量x和x'之间的点积。注意,为了简便起见,此处省略了向量符号的箭头。这个符号是向量分量乘积之和的简写:

巧合的是,向量的范数是点积的平方根,可以这样表示:

这当然不是全部的。我们肯定知道余弦定理,即点积等于向量之间角度的余弦与它们范数的乘积(这很容易用简单的三角函数来证明):

谈论角度和范数的好处在于,我们可以想象出这个点积是什么样子。让我们画一下这两个向量,它们之间的夹角为 α:

因此,如果我们采用点积作为相似性的度量,那么,它在什么时候会达到最大呢?这意味着是这些向量最相似的时候。显而易见,当余弦等于 1 的时候,就会发生这种情况,也就是当角度为 0 度或者弧度的时候。如果向量的范数都是相同的,那么显然我们讨论的是同一个向量!很好,让我们把目前为止学到的东西写下来:

点积是向量间相似性的度量

现在你应该希望了解一下谈论点积的意义。

当然,点积作为相似性的度量,在实际问题中可能会有用,或者一点儿用也没有,这取决于你要解决的问题。因此,我们需要对输入空间进行某种转换,使点积作为相似性的度量起到实际的作用,用 ϕ 来表示转换。现在,我们可以定义 Kernel 的含义了,映射空间中的点积:

Kernel 的定义非常直接,是对映射空间相似性的度量。实际上,数学家喜欢具体化。由于Kernel 所处理的底层函数和空间不应该存在隐含的假设,因此,通过函数分析 Kernel 背后存在着很多的理论,需要在其它的文章中来探索这方面的问题。简而言之,我们需要明确地说明想以什么样的函数来表示 ϕ:

我们需要一个从 X 域映射到点积被定义好的空间的函数,这意味着它是一个很好的相似性度量。

Kernel 可以用作任何在点积过程(或相关范数)中定义的算法的泛化。最有名的是使用 Kernel 作为基础算法例子是支持向量机(Support Vector Machines)和高斯过程(Gaussian Processes),但也有一些是 Kernel 与神经网络一起使用的例子。

我们实际上需要 Kernel 和映射函数 ϕ 的另一个原因是输入空间可能没有定义明确的点积。快速地研究一个文档分析的例子,我们只想根据两个文档的主题来得出它们之间的相似性,然后可能会对它们进行分类。那么,这两个文档之间的点积究竟是什么呢?一种选择是获取文档字符的 ASCII 码,并将它们连接到一个大的向量中 —— 当然,这不是你在实践中要做的工作,而是仅供思考。

我们现在已经将文档定义为向量了,然而问题还是在于文件的长度,即不同文件的长度不同。这没什么大不了的,我们可以通过在较短的文档中填充一定长度的 EOS 字符来应对这个问题。然后我们就可以计算这个高维空间中的点积了。但还有一个问题是,这个点积的相关性,或者更确切地说,这个点积实际上意味着什么。显然,字符的细微变化会改变点积。即使我们用同义词来替换,它一样会改变点积。这是在比较两个文档的主题时要避免的问题。

那么,Kernel 是如何在此发挥作用的?理想的情况下,你需要找到一个映射函数 ϕ 将输入空间映射到一个特征空间,其中点积具有你想要的意义。在刚才文档比较的例子中,对于语义相似的文档,点积值是很高的。换句话说,这种映射应该使分类器的工作更容易,因为数据变得更容易分离。

我们现在可以看一下典型的 XOR 示例来进一步理解概念。XOR 是一个二进制函数,如下所示:

蓝色的点以 0 来分类,红色的点以 1 来分类。我们可以假设这是一个有噪音的 XOR 函数,因为集群的分布范围很广。我们马上注意到了一个问题,数据是不可线性分离的。也就是说,我们不能在红点和蓝点之间划一条线来分离它们。

在这种情况下能做些什么呢?我们可以应用一个特定的映射函数,以使工作变得更容易。具体来说,要创建一个映射函数,它将对通过红点集群的线附近的输入空间进行单侧反射。我们将表示出这条线下面附近的所有点。那么,映射函数将会得到以下结果:

在映射之后,数据会变得很容易进行线性分离,因此如果我们有一个模型试图拟合一个分离的超平面(例如感知器),这就是一个理想的情况。显然,线性可分离很好,但是为了构建有效的模型,我们不一定需要线性可分离的,这就意味着并非所有的映射函数都需要得到线性可分离的数据才能构建有效的模型。

人们时常地混淆使用 Kernel 和使用映射函数的概念。Kernel 函数的输出是一个标量,是对两个点的相似性或相异性的度量,而映射函数的输出则是一个提供相似性计算的向量。Kernel 的有趣之处在于,有时我们可以计算原始空间中映射的点积,而无需显式地进行输入映射。这就允许我们处理无限维度空间的映射!这是一个很难理解的事情,所以我将在后面的文章中进行讨论。

最后,我想推荐一下 Smola 和 Schoelkopf 的书:《Learning with Kernels》。本书对 Kernel 核心及其理论背景进行了全面的阐述。

机器学习中Kernel的秘密(二)

在《机器学习中Kernel的秘密(一)》一文中,我用最简单的方法解释了 Kernel。在读本文之前,我建议你先快速地阅读一下这篇文章,了解一下 Kernel 是什么。希望你能得出这样的结论:Kernel是映射空间中两个向量之间的相似性的度量。

现在,我们可以讨论一些比较有名的 Kernel,以及如何结合这些 Kernel 来构建其它的 Kernel。记住,对于我们将要使用的示例,x’ 是用于绘图的一维向量,我们将 x’ 的值设置为 2。不再多说,让我们开始吧。

线性 Kernel

这个 Kernel 的超参数是 sigma 和偏差参数 c。直观地说,这个 Kernel 是什么呢?如果我们取一个特定的 x,并将它与所有其它的 x’ 相比较,就会得到一条直线。这就是它被称为线性 Kernel 的原因。不变的 x 值和变化的 x' 值有效地说明了我们沿着这条直线移动。

这个 Kernel 的另一个特点是,它具有非稳定性,这意味着它的值相对于 x’ 的绝对位置而不是相对位置发生了变化。另一个优点是,由于它是线性的,所以在优化过程中可以进行高效计算。

多项式 Kernel

顾名思义,这个 Kernel 是一个带有偏差量 c 的多项式函数。我认为值得花点时间来考虑会产生Kernel 的映射函数 ϕ,因为 Kernel 是在映射空间中的一个相似性函数(点积),所以它会返回一个标量。在二维空间中二阶多项式 Kernel 的映射函数表示如下:

当增大输入维度 d 的值和多项式的阶数时,映射的特征空间就会变得相当大。那么,我们可以计算点积而不是进行转换,如上面的公式中所列的那样。这是 Kernel 理论中许多很不错的公式之一。

径向基函数 Kernel

这是一个非常有名的,并经常使用的 Kernel。注意,由于指数中负指数的存在,所以指数的取值要在 0 到 1 范围之间,这是一个不错的特性,因为我们可以说 1 表示非常相似,或者相同,而接近 0 的值则表示完全不同。指数中的参数 σ 控制着 Kernel 的灵敏度。对于较低的 σ 值,我们只期望那些非常接近的点是相似的。对于较大的 σ 值,我们放宽了相似性标准,因为越远的点就越相似。

当然,Kernel 看起来是这样,因为我们把 x 设置为 0,并改变了 x’,逻辑上我们想要计算点之间整个 X 域的相似性。这就得出了一个平面,正是这个平面,才是描述一个 Kernel 的例子:

如图所示,Kernel 的值在对角线处最高,其中 x 和 x' 是相同的。

周期 Kernel

当你考虑周期性的时候,就会马上想到周期函数,比如正弦函数和余弦函数。从逻辑上讲,周期 Kernel 中有正弦函数。Kernel 的超参数 σ 还是表示了相似性的灵敏度,但是我们还有表示正弦函数周期的参数 p。另外,还要注意径向基 Kernel 和周期 Kernel 之间的相似性,它们都被限定为输出 0 到 1 范围之间的值。

什么时候使用周期 Kernel?这是非常合乎逻辑的,假设你想要为一个类正弦函数建模,从这个函数中取 2 个点,它们相对于欧式距离比较远,这并不意味着函数的值有什么不同。为了解决这类问题,就需要周期 Kernel。为了完整性起见,看看当我们调整周期 Kernel 的周期性时会发生什么(什么也没有):

局部周期 Kernel

我们基本上是通过径向基 Kernel 与周期 Kernel 的乘积得到了局部周期 Kernel。我们用这个方法得到的结果是,得到的 Kernel 的值随 x 和 x' 之间距离的变化而变化,而不仅仅是随距离的周期性变化而变化,这就导致了所谓的局部周期性。

只是因为我很好奇,用 3D 模式来绘制了这个 Kernel,并得到以下这个还不错的形状:

构建新 Kernel

到现在为止,我们接触到了一些 Kernel 的例子。问题来了,我们拿什么来构建新的 Kernel 呢?Kernel 有以下两个很好的特性:

1. 添加一个带有 Kernel 的 Kernel 会产生一个新的 Kernel;

2. 多个 Kernel 的乘积会产生一个新的 Kernel;

以上两个特性基本上可以让你在不做太多数学运算的情况下构建新的 Kernel,也是非常直观的。乘积可以看作是一个与运算,特别是在考虑 0 和 1 范围之间的 Kernel 时。于是,我们可以将周期 Kernel 与径向基函数 Kernel 相结合,得到一个局部周期 Kernel。

这几个例子,可以让你开始 Kernel 之旅。当然,也还有一些没有被提及的 Kernel。针对实际问题进行的 Kernel 设计是一项非常重要的任务,要想学好它,需要一定的经验。此外,在机器学习中有一个专门用于学习 Kernel 函数的领域。

由于算法上的要求,Kernel 设计也比较复杂。由于许多基于 Kernel 的算法都涉及到一种反向的被称为“Gram”的矩阵,因此我们要求 Kernel 是正定的,但这是我将来要探讨的内容。

现在我们已经了解了一些有用的 Kernel,可以更深入地研究 Hilbert 空间的理论以及它们与Kernel 的关系,但是这必须要等到下一篇文章了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136236
  • Kernel
    +关注

    关注

    0

    文章

    49

    浏览量

    11994

原文标题:解密Kernel:为什么适用任何机器学习算法?

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA在机器学习的具体应用

    ,越来越多地被应用于机器学习任务。本文将探讨 FPGA 在机器学习的应用,特别是在加速神经网
    的头像 发表于 07-16 15:34 2638次阅读

    使用MATLAB进行无监督学习

    无监督学习是一种根据未标注数据进行推断的机器学习方法。无监督学习旨在识别数据隐藏的模式和关系,无需任何监督或关于结果的先验知识。
    的头像 发表于 05-16 14:48 1184次阅读
    使用MATLAB进行无监督<b class='flag-5'>学习</b>

    **【技术干货】Nordic nRF54系列芯片:传感器数据采集与AI机器学习的完美结合**

    和更多外设接口。无论是运行还是休眠状态,功耗表现都非常出色! 3. 在传感器数据采集与AI机器学习的优势? 答:主频高、功耗低,内置专用核处理数据采集,还配备AI加速器,让AI算法运行更高效! 4.
    发表于 04-01 00:00

    请问STM32部署机器学习算法硬件至少要使用哪个系列的芯片?

    STM32部署机器学习算法硬件至少要使用哪个系列的芯片?
    发表于 03-13 07:34

    机器学习模型市场前景如何

    当今,随着算法的不断优化、数据量的爆炸式增长以及计算能力的飞速提升,机器学习模型的市场前景愈发广阔。下面,AI部落小编将探讨机器学习模型市场的未来发展。
    的头像 发表于 02-13 09:39 627次阅读

    嵌入式机器学习的应用特性与软件开发环境

    作者:DigiKey Editor 在许多嵌入式系统,必须采用嵌入式机器学习(Embedded Machine Learning)技术,这是指将机器
    的头像 发表于 01-25 17:05 1220次阅读
    嵌入式<b class='flag-5'>机器</b><b class='flag-5'>学习</b>的应用特性与软件开发环境

    人工智能之机器学习在推荐系统的应用

    机器学习在推荐系统中发挥着关键作用,提升用户体验和业务价值。 协同过滤算法是常用方法。基于用户行为数据,如购买记录、浏览历史,计算用户或物品间相似度。比如,用户 A 和用户 B 购买过很多相同商品
    的头像 发表于 01-21 16:19 797次阅读

    传统机器学习方法和应用指导

    在上一篇文章,我们介绍了机器学习的关键概念术语。在本文中,我们会介绍传统机器学习的基础知识和多种算法特征,供各位老师选择。 01 传统
    的头像 发表于 12-30 09:16 1983次阅读
    传统<b class='flag-5'>机器</b><b class='flag-5'>学习</b>方法和应用指导

    【「具身智能机器人系统」阅读体验】1.全书概览与第一章学习

    非常感谢电子发烧友提供的这次书籍测评活动!最近,我一直在学习大模型和人工智能的相关知识,深刻体会到机器人技术是一个极具潜力的未来方向,甚至可以说是推动时代变革的重要力量。能参与这次活动并有机会深入
    发表于 12-27 14:50

    如何选择云原生机器学习平台

    当今,云原生机器学习平台因其弹性扩展、高效部署、低成本运营等优势,逐渐成为企业构建和部署机器学习应用的首选。然而,市场上的云原生机器
    的头像 发表于 12-25 11:54 701次阅读

    【「具身智能机器人系统」阅读体验】+数据在具身人工智能的价值

    嵌入式人工智能(EAI)将人工智能集成到机器人等物理实体,使它们能够感知、学习环境并与之动态交互。这种能力使此类机器人能够在人类社会中有效地提供商品及服务。 数据是一种货币化工具 数
    发表于 12-24 00:33

    zeta在机器学习的应用 zeta的优缺点分析

    在探讨ZETA在机器学习的应用以及ZETA的优缺点时,需要明确的是,ZETA一词在不同领域可能有不同的含义和应用。以下是根据不同领域的ZETA进行的分析: 一、ZETA在机器
    的头像 发表于 12-20 09:11 1629次阅读

    如何在低功耗MCU上实现人工智能和机器学习

    人工智能 (AI) 和机器学习 (ML) 的技术不仅正在快速发展,还逐渐被创新性地应用于低功耗的微控制器 (MCU) ,从而实现边缘AI/ML的解决方案。
    的头像 发表于 12-17 16:06 1289次阅读

    cmp在机器学习的作用 如何使用cmp进行数据对比

    机器学习领域,"cmp"这个术语可能并不是一个常见的术语,它可能是指"比较"(comparison)的缩写。 比较在机器学习的作用 模型
    的头像 发表于 12-17 09:35 1328次阅读

    构建云原生机器学习平台流程

    构建云原生机器学习平台是一个复杂而系统的过程,涉及数据收集、处理、特征提取、模型训练、评估、部署和监控等多个环节。
    的头像 发表于 12-14 10:34 677次阅读