当前位置: 首页 > news >正文

揭秘高斯过程与核函数:多种核表示可视化及复合核构建方法

导航链接

- Hello
- Publications
- blog
- Podcast
- Bucket List
- People
- Now

---

- Hello
- Publications
- blog
- Bucket List
- People
- Contact

美丽的核函数及其可视化

- 作者:Kelvin Paschal
- 机器学习
- 发布时间:2026 年 5 月 30 日

想象一下,你拥有一台神奇的机器,只要投入奶酪,它就能产出任意数量的黄金。然而,你并不清楚投入多少奶酪才能获得特定数量的黄金,而且这种映射关系并非线性,也就是说,黄金数量 $G$ 与奶酪数量 $C$ 既不是直接比例关系,也不是反比例关系,所以投入更多的奶酪并不一定能得到更多的黄金。你的目标是在奶酪数量有限的情况下,找到从这台机器中获取最多黄金的方法。

我们假定这个过程并非随机的,即从奶酪数量 $(C)$ 到黄金数量 $(G)$ 存在一种映射关系。我们将这种映射关系称为 $f$,你需要揭开它的神秘面纱,这样在投入任意数量的奶酪 $C$ 时,都能预测出能得到的黄金数量 $G$。

你需要理解这种关系:$G = f(C)$

揭示这种关系的一种途径是投入不同数量的奶酪,并观察得到的黄金数量。这便是数据收集/生成过程。利用这些数据,你可以构建一个模型,帮助你预测每次投入奶酪 $C$ 时能得到的黄金数量 $G$。但为何这被称作模型呢?

模型是对其他事物的一种近似。我们并不了解这台机器的内部工作原理,而且由于奶酪数量有限,我们也无法观察到它的所有可能输出。我们基于观察到的有限输入和输出,构建了一个奶酪 - 黄金映射的近似模型。这本质上就是机器学习建模的过程:基于我们对某个过程的历史观察,尝试正确地近似生成某种数据的过程。

在本文中,我将介绍一种特定的机器学习方法——高斯过程(Gaussian process,GP)。为了解释 GP,我将继续使用前面的类比。

假设你只观察到了一两个数据点,那么对于这种奶酪 - 黄金映射关系,你仍然可以做出无数种猜测。当然,随着你从机器中收集到更多的观察数据,这种可能性的范围会逐渐缩小。GP 的工作方式是构建无数种对真实过程的猜测或函数。随着你积累更多的观察数据,它会改变这些函数的形状,使其与数据相匹配,从而逼近真实过程(就像你在获得新信息后改变自己的想法一样)。GP 实际上就是函数(或猜测)的一种分布。由于我们有无数种猜测,所以预期的真实猜测(或最佳模型)就是所有合理猜测的平均值。我们可以利用这些猜测之间的差异/分布来计算不确定性。如果不确定性很大,说明所有猜测之间差异显著,那么我们的平均猜测可能是错误的;如果不确定性很小,说明这些猜测差异不大,我们可以信任这个平均值。

$$GP(m(x), k (x,x'))$$

GP 的特征由其均值和协方差来描述。核函数可以帮助我们计算协方差或不确定性,它能告诉我们两个点之间的关联程度。在过去几年里,我一直在研究 GP,我越来越欣赏它们的灵活性。它们是非参数模型,不假设函数形状具有固定或有限的参数集。你可以通过改变核函数来调整 GP 对数据集的建模方式。如果你查阅核函数的定义,可能会得到如下内容:

> 核函数是机器学习中使用的一种数学工具,特别是在支持向量机(Support Vector Machines,SVM)等算法中,用于将数据转换到更高维的空间,而无需显式计算该空间中的坐标。这使得在保持计算效率的同时,能够分析数据中的复杂非线性关系。

在 GP 的上下文中,核函数或协方差函数 $k(x, x') = Cov(f(x), f(x'))$ 编码了哪些函数值应该一起变化,它们被用作相似度的度量。

如果你了解给定数据集的“形状”或模式,那么在训练 GP 模型时就可以使用合适的核函数。这就是对给定数据集的领域知识发挥作用的地方。我喜欢核函数的一个有趣之处在于,你可以将它们相加或相乘来形成复合核,这意味着你能够让模型偏向于更复杂的数据表示。

现在我们已经对机器学习和 GP 有了直观的认识,在本文的剩余部分,我将介绍不同的核表示及其可视化。我会提供图表,展示使用特定核时从 GP 先验中抽取的一维样本,以及核比较两个输入时的协方差热力图。

线性核函数

这个核函数并不复杂,它假设函数可以用线性趋势来解释。它通过计算数据点 $x$ 和 $x'$ 的点积来衡量它们之间的相似度。

$$k(x, x')=x^ op x'$$

在下面左侧的图中,展示了从 GP 先验中抽取的三个样本函数,它们都呈现出由该核函数形成的简单线性形状。在所有右侧的图中,x 轴和 y 轴表示两个可能的输入值,颜色表示核函数认为这两个值的相似程度。亮色表示“这两个点相互影响很大”,暗色表示“这两个点具有反向协方差或基本无关”。

周期核

这个核函数适用于对周期性变化的数据进行建模,例如气候数据,你可能想对某个特定城市的年度温度进行建模。它正式的名称是 Exp - Sine - Squared 核。还记得正弦波是周期性的吗?下面是该核函数的展开式:

$$k(x, x') = \text{exp}\left(-\frac{ 2\sin^2(\pi d(x, x')/p) }{ l^ 2} \right)$$

其中 $p$ 和 $l$ 分别是核函数的周期和长度尺度,$d(.,.)$ 是欧几里得距离。你可以在下面的图中观察到它所创建的重复或周期性模式,就像周期性波一样,数值从低到高,再从高到低变化。

线性核和周期核的复合

正如我之前所写,你可以将核函数组合起来形成复合核,这是同时利用不同核函数特性的好方法。核函数相加意味着模型可以将数据解释为多种模式的总和;核函数相乘意味着所有模式必须同时适用。

在下面的可视化图中,我展示了将线性核和周期核相加和相乘的效果。你可以在图中看到两种核函数的痕迹,但你会注意到,相乘时周期核的效果更明显,而相加的复合核看起来主要是线性的,只有一点周期性的背景。

径向基函数(Radial Basis Function,RBF)核

这是一种常用的核函数,在支持向量机(SVM)中常被用作默认核。这个核函数是平稳的,意味着它根据两点之间距离的大小来计算相似度,而不考虑它们在空间中的位置。其公式如下:

$$k(x, x') = \exp\left(-\frac{d(x,x')^2}{2\ell^2}\right)$$

其中 $l$ 是长度尺度,$d(.,.)$ 是欧几里得距离。RBF 核将距离从 0 到 1 进行缩放(见下面右侧的图)。当距离为无穷大时,相似度为 0;当 $x$ 与 $x'$ 相同时,相似度为 1。如果你观察右侧的图,会发现在坐标中相似数字相遇的地方颜色较亮。例如,(-2, -2) 处的颜色对应于 1,因为这两个点是相同的。随着两点之间距离的增加,它们的相似度趋近于 0。如果 $l$ 较小,函数对数据的微小变化很敏感,调整速度较快;如果 $l$ 较大,函数变化则较慢。观察左侧的图,你会发现函数比较平滑,这可能并不一定能反映很多现实生活中的数据情况。RBF 还有其他变体来解决这个问题。

有理二次核

这个核函数与 RBF 核类似,从下面的公式可以看出它们很相似。RBF 核变化平滑,它假设数据也是如此。但在现实生活中,数据并不总是平滑的,我们需要考虑这一点。有理二次核实际上是 RBF 核的无限和,具有不同的长度尺度 $l$。该核函数还引入了一个参数 $\alpha$,用于缩放 RBF 的混合,以捕捉多个长度尺度上的变化。

$$ k(x,x') = \left(1 + \frac{d(x,x')^2}{2\alpha \ell^2}\right)^{-\alpha} $$

Matérn 核

Matérn 核是 RBF 核的广义形式。它包含一个参数 $\nu$,用于控制函数的平滑度。$l$ 和 $d(.,.)$ 与前面的核函数中的长度尺度和欧几里得距离参数相同,而 $K_\nu$ 是第二类修正贝塞尔函数。

$$k(x,x') = \frac{1}{\Gamma(\nu)2^{\nu-1}}\Bigg(\frac{\sqrt{2\nu}}{l} d((x,x')\Bigg)^\nu K_\nu\Bigg(\frac{\sqrt{2\nu}}{l} d(x,x')\Bigg)$$

下面我展示了 $\nu$ 取不同值时的 Matérn 核实例。当 $\nu$ 较小时,意味着近似函数很敏感,变化剧烈;$\nu$ 较大时,函数更平滑,当 $\nu$ 趋近于无穷大时,它就变成了 RBF 核。注意,$\nu = 1.2$ 时的采样函数比 $\nu = 2.5$ 时的函数平滑度要低。

更复杂的复合核

既然我们已经介绍了一些常用的核函数,我想展示一下如何用它们形成复合核,这可能会让你对核函数如何根据所使用的运算符(加法或乘法)而变化有更深入的理解。通过堆叠不同的核函数,可以创建出很酷的数据表示。注意采样函数的形状和光滑度。

在本文中,我们对机器学习、高斯过程和核函数有了直观的认识。我展示了不同的核表示如何改变 GP 先验函数的形状,从而影响模型的归纳偏置。你可以使用合适的核函数让模型偏向于特定的数据集。

用于生成这些可视化结果的所有代码都可以在这个 Colab 笔记本 中找到。你可以通过可视化你设想的其他复合核来玩转这个笔记本。

标签

- AI
- 机器学习

请启用 JavaScript 以查看 由 Disqus 提供支持的评论。

联系我

邮箱:

[[email protected]]

- Bluesky
- GitHub
- Google Scholar
- 博客 RSS

或者直接在这里给我写信

---

发送

© 2026 kelvinpaschal.com. 保留所有权利

http://www.cnnetsun.cn/news/2823155.html

相关文章:

  • 抖音批量下载助手完整指南:3步轻松保存海量视频资源
  • gem5 GCN3 Docker镜像国内拉取与构建全攻略:从gitee同步到离线部署
  • 深度解析:FigmaCN如何通过实时翻译技术重塑中文设计师的工作体验
  • 从代码注释到工程实践:手把手拆解一个开源STM32 FOC项目(芯路遥工程笔记精讲)
  • 收藏!小白程序员必备:Agent 面试八股文(大模型必备,速看!)
  • SWUST OJ 99题:Euclid‘s Game 背后的博弈论,用C++代码5分钟理解必胜策略
  • 3种高效获取同花顺问财数据的方法:Python自动化实践指南
  • LabVIEW与数据采集卡实现高精度双通道幅值相位测量
  • 别再只盯着R²了!用MSE更细致地评估你的回归模型预测效果(R语言代码保姆级教程)
  • 分布式训练通信优化:梯度同步、流水线并行与通信计算重叠,突破多卡扩展瓶颈
  • STM32 GPIO深度解析:从寄存器到HAL库的实战指南
  • 鸣潮自动化脚本体验分享:如何让游戏自己玩自己,解放你的双手与时间
  • 36:机台对接典型场景2:下发生产任务
  • 微信分享配置总失败?手把手调试weixin-js-sdk的config与签名生成
  • OBD诊断实战:手把手教你用CANoe/CANalyzer抓取并解读$09服务报文(ISO15031标准)
  • E7Helper终极指南:24小时自动刷第七史诗,解放你的双手
  • XUnity.AutoTranslator技术架构深度解析:构建Unity游戏多语言翻译系统
  • 如何在浏览器中直接使用微信网页版?wechat-need-web技术方案全解析
  • Qt Creator 15/16 新版本找不到翻译工具?手把手教你手动添加 lupdate 和 lrelease 配置
  • 如何用Nucleus Co-Op实现单机游戏多人分屏:3个关键步骤解析
  • C++项目日志模块怎么选?以ZLToolKit为例,聊聊异步日志、控制台着色与文件轮转的实现
  • AMD Ryzen调试工具SMUDebugTool终极指南:如何深度掌控你的处理器性能
  • NotebookLM:重构研究工作流的认知操作系统
  • 2048 AI助手终极指南:从游戏小白到策略大师的蜕变之路
  • 告别手动抢茅台!Campus-imaotai自动预约系统让你轻松实现“茅台自由“
  • 别再每次改PID都重烧代码了!手把手教你用STM32F4内部Flash保存参数(附完整源码)
  • TMS320F280049 GPIO输入消抖实战:从寄存器配置到窗口采样,彻底告别按键误触发
  • 别再死记硬背了!用Docker快速搞个MySQL,5分钟亲手验证四种隔离级别的区别
  • 3步永久保存你的QQ空间记忆:GetQzonehistory零基础备份完整指南
  • ThinkPad双风扇控制神器:TPFanControl2完全使用指南