2. 核函数数学原理:再生核希尔伯特空间(RKHS)、Mercer定理、正定核

说实话,核函数这块数学,当年我啃的时候也挺头疼的。

什么希尔伯特空间、再生性、Mercer定理……一堆抽象概念堆在一起。但后来我在做实际项目时发现,搞懂这些数学原理,真的能帮你少走很多弯路。比如有一次我调一个高斯核的带宽参数,怎么调都不收敛,后来回头一看——核矩阵都不是正定的,那还玩个啥?

所以这一章,咱们就把这些「硬骨头」啃下来。我会尽量用大白话讲,但该有的数学严谨性一点都不会少。

2.1 从特征映射说起

先问一个问题:为什么我们需要核函数?

你想想看,在原始空间里,数据可能是线性不可分的。比如二维平面上的异或问题,你没法用一条直线把两类点分开。但如果你把数据映射到三维空间,可能就变得线性可分了。

这个映射,就叫特征映射,记作 φ(x)。

核心思想:核函数 K(x, y) = ⟨φ(x), φ(y)⟩,它直接计算了映射后向量的内积,而不需要显式地写出 φ 是什么。

我刚开始学的时候,总觉得这个「隐式映射」很玄乎。后来做了个文本分类项目,特征维度高达几万维,如果显式做映射,内存直接爆炸。用核函数,复杂度只跟样本量有关,跟特征维度无关——这才体会到它的威力。

2.2 再生核希尔伯特空间(RKHS)

RKHS 这个名字听起来很吓人,其实拆开看就三部分:

  • 希尔伯特空间:一个完备的内积空间。说白了,就是你可以算长度、算夹角,而且极限点都在空间里。
  • 再生核:空间里有一个特殊的函数 K(x, ·),它满足一个神奇的性质——「再生性」。
  • RKHS:就是拥有再生核的希尔伯特空间。

再生性用公式表达是这样的:

对于任意函数 f ∈ H,有 f(x) = ⟨f, K(x, ·)⟩

什么意思呢?

就是说,你有一个函数 f,你想知道它在点 x 处的值。你不需要真的去计算 f(x),只需要把 f 和核函数 K(x, ·) 做内积就行了。

嗯,这里要注意:这个性质非常强。它把「函数求值」这个操作,变成了「内积计算」。而内积计算,我们是有很多好用的数学工具的。

我的经验:在实际应用中,RKHS 给了我们一个「函数空间」的视角。你训练出来的模型,本质上就是 RKHS 里的一个函数。核函数的选择,决定了这个空间长什么样——也就是决定了模型能表达什么样的函数。

2.3 Mercer 定理

Mercer 定理回答了这样一个问题:什么样的函数才能作为核函数?

换句话说,给你一个函数 K(x, y),你怎么判断它是不是合法的核?

Mercer 定理说:

  1. 如果 K 是连续、对称的
  2. 并且对于任意平方可积函数 g,有 ∫∫ K(x, y) g(x) g(y) dx dy ≥ 0
  3. 那么 K 可以展开为 K(x, y) = Σ λ_i φ_i(x) φ_i(y),其中 λ_i ≥ 0

这个展开式说明了一件事:任何合法的核函数,都可以写成一组特征函数的加权和。而且权重都是非负的。

我曾经踩过一个坑:自己设计了一个核函数,看起来挺合理,但训练时核矩阵出现了负特征值。后来一查,原来这个函数不满足 Mercer 条件。从那以后,我设计新核函数时,一定会先验证正定性。

避坑指南:不要想当然地认为「看起来像相似度度量」的函数就能当核函数。必须满足 Mercer 条件,否则核矩阵可能不正定,导致优化问题无解。

2.4 正定核

正定核,就是满足 Mercer 条件的核函数。它的定义更直接:

对于任意 N 个样本点 {x₁, ..., x_N},核矩阵 K 是半正定的:
K_ij = K(x_i, x_j)
对于任意向量 c,有 c^T K c ≥ 0

常见的正定核有:

核函数名称 公式 特点
线性核 K(x, y) = x^T y 就是原始空间的内积,等价于不做映射
多项式核 K(x, y) = (x^T y + c)^d 可以捕捉特征之间的交互,d 控制复杂度
高斯核(RBF) K(x, y) = exp(-||x-y||² / 2σ²) 最常用,对应无穷维特征空间
拉普拉斯核 K(x, y) = exp(-||x-y|| / σ) 比高斯核更「尖锐」,对异常值更鲁棒

我个人习惯用高斯核作为默认选择。为什么?因为它对应的是无穷维的特征空间,理论上可以拟合任意复杂的函数。但要注意,带宽 σ 这个参数非常敏感——调大了模型太「平滑」,调小了又容易过拟合。

2.5 知识体系结构图

下面这张图,把本章的核心逻辑串起来了:

核函数数学原理知识体系 核函数 K(x, y) 特征映射 φ(x) 隐式映射到高维空间 再生核希尔伯特空间 再生性: f(x) = ⟨f, K(x,·)⟩ Mercer 定理 K = Σ λ_i φ_i φ_i 避免显式计算高维内积 函数空间视角 核函数合法性判定 正定核(半正定核矩阵) c^T K c ≥ 0, ∀c 线性核 | 多项式核 | 高斯核 | 拉普拉斯核

2.6 核函数的构造与组合

实际项目中,我们经常需要组合多个核函数。这里有几个有用的性质:

  • 加法:如果 K₁ 和 K₂ 是正定核,那么 K₁ + K₂ 也是正定核
  • 乘法:如果 K₁ 和 K₂ 是正定核,那么 K₁ · K₂ 也是正定核
  • 缩放:如果 K 是正定核,c ≥ 0,那么 c·K 也是正定核
  • 指数:如果 K 是正定核,那么 exp(K) 也是正定核

这些性质有什么用?举个例子:

我在做图像分类时,发现单一的高斯核效果不够好。后来我把一个局部核(高斯核)和一个全局核(多项式核)加起来,效果提升了不少。说白了,就是让模型既能关注局部细节,又能捕捉全局结构。

实用技巧:如果你不确定用什么核,可以试试「多核学习」的思路——把几个基础核加权求和,权重也作为参数去学习。虽然计算量大了点,但效果往往有惊喜。

2.7 核矩阵的计算与优化

最后聊点工程上的事。核矩阵是 N×N 的,当 N 很大时,存储和计算都是问题。

我遇到过最夸张的情况:训练集有 50 万条数据,核矩阵光存储就要 1TB 内存。显然不能硬算。

常用的优化手段:

  • 低秩近似:用 Nyström 方法采样一部分数据,近似整个核矩阵
  • 随机傅里叶特征:对平移不变核(如高斯核),用随机采样近似特征映射
  • 分块计算:把数据分块,逐块计算核矩阵,避免一次性加载

我个人比较推荐随机傅里叶特征。它把核函数的计算转化成了显式的特征映射,而且有理论保证收敛速度。我在一个推荐系统项目里用过,把训练时间从 3 小时降到了 15 分钟,效果只差了 0.3%。

注意:近似方法虽然快,但会引入近似误差。如果你的任务对精度要求极高(比如医疗诊断),建议还是用精确核矩阵,配合分布式计算来扛。

好了,这一章的内容就到这里。核函数的数学原理是理解 SVM、高斯过程、核 PCA 等算法的基础。搞懂了 RKHS 和 Mercer 定理,你再看那些算法,会发现它们其实都在做同一件事——在某个函数空间里寻找最优解。

想要更多资料,联系可可