← 返回目录

Chapter 09: 高斯过程

用于机器学习中的非线性回归和分类

Gaussian Process核函数贝叶斯推断非参数模型
🎯

高斯过程:贝叶斯与高斯分布的完美结合

1827年,英国植物学家罗伯特·布朗通过显微镜观察悬浮于水中的花粉,发现微粒呈现出不规则的运动。这种现象后来被称作布朗运动,成为随机过程理论的基石。

高斯过程(Gaussian Process, GP)是一种强大的概率模型,用于建模连续函数或实数值变量的概率分布。它通过核函数定义数据点间的相似性,并使用贝叶斯推断整合先验知识和观测数据,实现对函数的预测并量化不确定性。

9.1

高斯过程原理

从先验到后验的贝叶斯更新

高斯过程的核心思想是:任意一组数据点都可以被视为多元高斯分布的样本。通过先验分布和数据点的观测,我们可以计算后验分布,并通过该分布来预测新数据点的值。

📐 核心数学框架

先验分布
y₂ ~ N(μ₂, K₂₂)
• μ₂:先验均值(通常为0)
• K₂₂:由核函数定义的协方差矩阵
• 描述无数据时的不确定性
联合分布
[y₁, y₂]ᵀ ~ N([μ₁, μ₂]ᵀ, [[K₁₁, K₁₂], [K₂₁, K₂₂]])
• y₁:已观测样本数据
• K₁₂, K₂₁:互协方差矩阵
• 样本数据与预测值的联合高斯分布
后验分布(条件分布)
y₂ | y₁ ~ N(μpost, Σpost)
后验均值:
μpost = μ₂ + K₂₁K₁₁⁻¹(y₁ - μ₁)
后验协方差:
Σpost = K₂₂ - K₂₁K₁₁⁻¹K₁₂

🔍 "丝带收紧"的直观理解

先验:想象一捆松散的丝带在微风中飘动,每条丝带代表一个可能的函数。在没有数据的情况下,任何平滑函数都有可能。

引入数据:当我们观测到样本点时,就像用针在特定位置扎紧了丝带。在这些位置,不确定性降为0(无噪音情况)。

后验:丝带在样本点位置被锁定,但在远离样本点的位置仍然保持一定的飘动,表示这些位置的预测仍有较大不确定性。

✦
9.2

协方差矩阵

高斯核构造的"人造"协方差

高斯过程中的协方差矩阵是通过核函数(kernel function)构造的。这个矩阵实际上是无限大的——因为在连续区间内有无数个点。核函数定义了不同位置点之间的协同运动关系。

📊 高斯核(RBF核)

核函数定义
k(xᵢ, xⱼ) = σ² exp(-|xᵢ - xⱼ|² / (2l²))
• σ²:方差参数,控制函数的振幅
• l:长度尺度(length scale),控制平滑度
对角元素(方差)
• k(xᵢ, xᵢ) = σ²(最大值)
• 所有点的方差相同
• 体现每个点的"不确定性"
• 解释了"丝带"在各处的飘动范围
非对角元素(协方差)
• Δx越小,协方差越大(相关性强)
• Δx越大,协方差越小(相关性弱)
• l越大,影响范围越广
• 解释了"丝带"的平滑性
💡
关键洞察
• 位置坐标x:提供输入空间的位置信息
• 预测值y=GP(x):不同位置的y值通过核函数建立协方差关系
• 平滑性来源:相邻点高度相关(高协方差),导致曲线平滑
• 可定制性:通过选择不同核函数,可以"设计"不同的协方差结构
✦
9.3

分块协方差矩阵

样本、预测与互协方差

为了计算后验分布,我们需要将联合分布的协方差矩阵分块为四个部分:K₁₁(样本间协方差)、K₂₂(预测点间协方差)、K₁₂和K₂₁(互协方差矩阵,互为转置)。

🔢 矩阵分块结构

K₁₁:样本协方差矩阵
• 维度:n_samples × n_samples
• 由样本点x₁计算得到
• 加噪声项:K₁₁ + σ²ε I
• 需要求逆:K₁₁⁻¹
K₂₂:预测协方差矩阵
• 维度:n_pred × n_pred
• 由预测点x₂计算得到
• 表示先验不确定性
• 后验中会被修正
K₁₂:互协方差矩阵
• 维度:n_samples × n_pred
• 由样本点x₁和预测点x₂计算
• K₁₂ = K₂₁ᵀ(互为转置)
• 建立样本与预测的关联
K₂₁:互协方差矩阵(转置)
• 维度:n_pred × n_samples
• K₂₁ = K₁₂ᵀ
• 用于计算后验均值
• 用于计算后验协方差
✦
9.4

后验分布计算

贝叶斯更新的矩阵运算

通过条件高斯分布的性质,我们可以从联合分布推导出后验分布。这个过程体现了贝叶斯定理的精髓:整合先验知识和观测数据。

🔄 后验计算步骤

步骤1:计算后验均值
μpost = μ₂ + K₂₁K₁₁⁻¹(y₁ - μ₁)
• 修正先验均值μ₂
• K₂₁K₁₁⁻¹:权重矩阵
• (y₁ - μ₁):观测残差
• 结果:预测均值曲线
步骤2:计算后验协方差
Σpost = K₂₂ - K₂₁K₁₁⁻¹K₁₂
• 减少先验协方差K₂₂
• 对角元素:后验方差(不确定性)
• 样本点处方差降为0(无噪音时)
• 结果:不确定性带宽
步骤3:提取标准差
σpost = sqrt(diag(Σpost))
• 取对角元素(后验方差)
• 开平方得到标准差
• 用于绘制置信区间
• ±1σ、±2σ区间
✦
9.5

噪音处理

考虑观测数据的不确定性

在实际应用中,观测数据往往存在噪音(随机误差)。通过在样本协方差矩阵K₁₁的对角线上加入噪声项σ²εI,可以反映这种不确定性。

🔊 噪音模型

修正后的K₁₁
K₁₁noisy = K₁₁ + σ²εI
σ²ε:噪音方差,I:单位矩阵
σε = 0(无噪音)
• 模型完全拟合样本点
• 样本点处不确定性为0
• 可能过拟合
• "丝带"完全扎紧
σε > 0(有噪音)
• 模型不完全拟合样本点
• 样本点处仍有不确定性
• 更鲁棒,泛化能力强
• "丝带"保持一定松弛
✦
9.6

核函数

设计协方差结构的工具

核函数(kernel function)在高斯过程中起着至关重要的作用,它定义了输入空间中数据点之间的相似性或相关性。不同的核函数适用于不同的应用场景,可以捕捉不同类型的数据模式。

📚 常用核函数总结

核函数公式特点应用场景
常数核k = c所有点等相关基线模型
线性核k = σ²(x-c)(x'-c)线性关系线性回归
多项式核k = ((x-c)(x'-c) + offset)ᵈ多项式关系非线性回归
高斯核(RBF)k = σ²exp(-|x-x'|²/(2l²))平滑、局部通用(首选)
有理二次核k = σ²(1 + |x-x'|²/(2αl²))⁻ᵅ多尺度不同长度尺度
周期核k = σ²exp(-2sin²(π|x-x'|/p)/l²)周期性季节性数据
🔵 高斯核(RBF)
• 优势:无限可微、局部性
• 参数l:控制影响范围
• 应用:大多数非线性问题
• 建议:不确定时的首选
📈 线性核
• 优势:简单、可解释
• 特点:方差随距离增长
• 应用:线性趋势数据
• 组合:常与高斯核组合
🔄 周期核
• 优势:捕捉周期模式
• 参数p:控制周期长度
• 应用:时间序列、季节性
• 组合:常与高斯核相乘
✦
9.7

核函数组合

构建更复杂的协方差结构

通过加法或乘法组合不同的核函数,可以构建更复杂、更灵活的核函数。这使得高斯过程模型能够更好地适应不同类型的数据模式,捕捉多层次的结构特征。

🔗 核函数组合数学

✖️ 乘法组合
k(x, x') = k₁(x, x') × k₂(x, x')
• 含义:同时满足两个核的特性
• 例子1:高斯核 × 线性核 = 局部非线性 + 全局趋势
• 例子2:高斯核 × 周期核 = 平滑周期模式
• 应用:结合两个核的优势
➕ 加法组合
k(x, x') = k₁(x, x') + k₂(x, x')
• 含义:叠加两个核的特性
• 例子1:线性核 + 高斯核 = 长期趋势 + 局部波动
• 例子2:周期核 + 高斯核 = 季节性 + 噪声
• 应用:处理多层次结构

🎯 实际应用示例

📊 股票价格建模
核函数:线性核 + (高斯核 × 周期核)
解释:长期上涨趋势 + 季节性平滑波动
🌡️ 气温预测
核函数:周期核 + 高斯核
解释:年度季节性 + 短期天气变化
📈 销售预测
核函数:(线性核 × 周期核) + 高斯核
解释:增长 × 季节性 + 促销活动
✦

🎯本章核心要点

🔍高斯过程本质

  • •非参数模型:不假设固定函数形式
  • •贝叶斯框架:先验 + 数据 → 后验
  • •不确定性量化:提供预测置信区间
  • •核函数驱动:协方差结构可定制

📐核心数学

  • •先验:y ~ N(μ, K)
  • •后验均值:μpost = μ₂ + K₂₁K₁₁⁻¹(y₁ - μ₁)
  • •后验协方差:Σpost = K₂₂ - K₂₁K₁₁⁻¹K₁₂
  • •核函数:k(x, x') 定义相似性

🔧实践要点

  • •核函数选择:首选高斯核(RBF)
  • •参数调优:length scale和variance
  • •噪音建模:加入σ²εI避免过拟合
  • •核函数组合:捕捉复杂模式

💡关键洞察

  • •"丝带收紧":数据减少不确定性
  • •协方差物理意义:点间协同运动
  • •Length scale作用:控制平滑度
  • •高斯分布+贝叶斯:完美结合

📚延伸学习资源

📖 深入学习

• 核函数设计:David Duvenaud博士论文
• 最佳可视化:Distill.pub交互式文章

💻 Scikit-learn实现

• sklearn.gaussian_process.GaussianProcessRegressor() - 回归
• sklearn.gaussian_process.GaussianProcessClassifier() - 分类
• sklearn.gaussian_process.kernels.RBF() - 高斯核
• sklearn.gaussian_process.kernels.Matern() - Matérn核
🚀 下一步
• 《机器学习》一册将介绍如何使用Scikit-learn的高斯过程工具完成实际回归和分类任务
• 学习如何用交叉验证选择最优核函数和超参数
• 探索高斯过程在贝叶斯优化中的应用