上一篇我们在图上做随机游走,生成节点序列以学习嵌入。图的转移矩阵是由离散的边定义的算子——两个节点之间有没有连接,决定了概率能否流过去。但如果数据不在图上,而是分布在连续的 Rd 空间中呢?我们需要一种方式来度量任意两个点之间的”相似度”,并将这种相似度编码为一个矩阵。
这就是 kernel 矩阵(kernel matrix)的角色。给定 n 个数据点 x1,…,xn∈Rd 和一个核函数(kernel function)k:Rd×Rd→R,kernel 矩阵 K∈Rn×n 定义为:
Kij=k(xi,xj)
K 是 Part 2 三族算子矩阵中的第三族——相似度矩阵。在算子全景中我们预告过:K 乘以一个向量 f 就是对函数 f 做一次”加权平均”——每个点的新值是所有点的值按相似度加权求和。它既是数据定义的,又是一个算子。
本文将从 kernel 矩阵的构造出发,建立 Mercer 定理的严格陈述,揭示 kernel trick 的矩阵本质(K=ΦΦT),连接回 Art. 6 PCA 推广出 Kernel PCA,简述 Gaussian Process 中 K−1 的核心角色,并讨论 Cholesky 分解在高效求解中的作用。
为什么 kernel 矩阵重要
在 Art. 6 PCA 中我们看到了 PCA 的局限:它只能捕获线性关系。如果数据分布在一个弯曲的流形上(如”瑞士卷”),线性投影会把本该分开的结构混在一起。
核心困境是:许多强大的线性方法(PCA、线性回归、SVM 的线性版本)依赖于内积 ⟨xi,xj⟩。如果数据的结构是非线性的,直接用原始空间的内积就不够。
Kernel 方法的核心洞察:不要试图在原始空间中发明非线性算法。而是把数据通过一个非线性映射 ϕ:Rd→H 送入一个高维(甚至无穷维)的特征空间 H,在那里用线性方法。关键是——我们从不需要显式计算 ϕ(x),只需要计算特征空间中的内积 ⟨ϕ(xi),ϕ(xj)⟩,而这正是核函数 k(xi,xj) 提供的。
下面的示意图展示了这个核心思路的几何直觉:原始空间中不可线性分离的数据,经过非线性映射 ϕ 被”提升”到高维空间后变成线性可分的——而 kernel trick 让我们绕过显式计算 ϕ。
Kernel Trick 的几何直觉:从不可分到可分
非线性映射 φ 将数据送入高维空间,原本缠绕的结构变成线性可分
三种常见核函数
在定义 kernel 矩阵之前,先介绍三种最常用的核函数。设 x,y∈Rd。
线性核(Linear Kernel):
k(x,y)=xTy
最简单的核——就是原始空间的内积。对应的特征映射是恒等映射 ϕ(x)=x。Kernel 矩阵退化为 Gram 矩阵 K=XXT。
多项式核(Polynomial Kernel):
k(x,y)=(xTy+c)p
其中 c≥0 是常数,p∈N 是阶数(degree)。当 p=2,c=1 时,对二维输入 x=(x1,x2),对应的显式特征映射为:
ϕ(x)=(x12,x22,2x1x2,2x1,2x2,1)T
可以验证 ϕ(x)Tϕ(y)=(x1y1+x2y2+1)2=k(x,y)。原始的 2 维空间被映射到了 6 维——所有二次交叉项都出现了。
高斯核 / RBF 核(Gaussian / Radial Basis Function Kernel):
k(x,y)=exp(−2σ2∥x−y∥2)
其中 σ>0 是带宽参数(bandwidth)。RBF 核的特征空间是无穷维的——ϕ 映射到一个无穷维的 Hilbert 空间。直觉上,σ 控制”相似”的范围:σ 小时只有非常近的点才有显著的核值,σ 大时远处的点也有不小的核值。
可视化:Kernel 矩阵的结构
下面的交互组件展示了一个包含两个聚类的 2D 点云(点 0–4 和点 5–9)在三种核函数下的 K 矩阵热力图,以及对应的特征值衰减。
观察要点:
- 线性核:K=XXT,矩阵值反映数据的欧氏内积。右下角(远离原点的聚类)数值更大,因为内积更大。
- 多项式核:交叉项放大了聚类内部的相似性,块状结构更明显。
- RBF 核:块对角结构非常突出——同一聚类内部的点核值接近 1,不同聚类之间核值接近 0。调节 σ:σ 小时矩阵趋于单位阵(只有自己和自己相似);σ 大时趋于全 1 矩阵(所有点都相似)。
- 特征值衰减:对所有核,特征值都是非负的(正半定),且快速衰减。RBF 核的衰减最快——大部分”信息”集中在前几个特征值中。
Mercer 定理:正定核与特征映射
现在我们要回答一个根本问题:什么样的函数 k 可以作为核函数? 答案是 Mercer 定理——kernel 方法的理论基石。
正定核的定义
定义:一个对称函数 k:X×X→R(即 k(x,y)=k(y,x))称为正定核(positive definite kernel),如果对任意有限点集 {x1,…,xn}⊂X,由 Kij=k(xi,xj) 定义的矩阵 K 都是半正定的:
∑i=1n∑j=1ncicjk(xi,xj)≥0∀c∈Rn,∀n∈N,∀x1,…,xn∈X
换言之:无论你怎么选数据点,生成的 kernel 矩阵 K 都是半正定的。
Mercer 定理
定理(Mercer, 1909):设 X 是 Rd 中的紧集,k:X×X→R 是连续的对称函数。则 k 是正定核,当且仅当存在一个特征空间 H(Hilbert 空间)和一个映射 ϕ:X→H,使得:
k(x,y)=⟨ϕ(x),ϕ(y)⟩H
等价地,k 承认一个谱展开:
k(x,y)=∑i=1∞λiei(x)ei(y)
其中 λi≥0 是非负特征值,{ei} 是 L2(X) 中的正交特征函数,级数绝对一致收敛。
逐项理解:
- “当且仅当”:这是一个充要条件。正定性完全等价于特征映射的存在。
- ϕ 可以是无穷维的:对于 RBF 核,H 是无穷维 Hilbert 空间,ϕ(x) 是一个无穷维向量。
- 谱展开:这是核函数的”特征分解”。与矩阵的谱分解 A=∑iλiqiqiT(Art. 2 特征分解)完全类比——只是从有限维推广到了函数空间。
- λi≥0:所有特征值非负,这正是正半定性的函数空间版本。
Mercer 定理的矩阵含义
对于有限数据集,Mercer 定理意味着:如果 k 是正定核,则对任意 n 个点生成的 K 矩阵,都存在分解:
K=ΦΦT
其中 Φ∈Rn×m(m 可能是 ∞),第 i 行是 ϕ(xi)T。
这意味着 K 的每一个元素都是高维空间中的内积:
Kij=ϕ(xi)Tϕ(xj)
Kernel Trick 的矩阵视角
有了 K=ΦΦT,kernel trick 的本质变得清晰:
Kernel trick:任何只通过内积 xiTxj 使用数据的算法,都可以用 k(xi,xj) 替换内积,从而隐式地在高维特征空间中工作。
在矩阵语言中:原始数据矩阵 X∈Rn×d 的 Gram 矩阵是 G=XXT(Gij=xiTxj)。Kernel trick 把 G 替换为 K:
G=XXT⟶K=ΦΦT
所有依赖 G 的计算——PCA、SVM、岭回归——自动升级为在高维特征空间中工作,而计算复杂度只取决于 n(数据点数),不取决于 m(特征空间维度,可以是无穷)。
这是一个深刻的矩阵洞察:我们从不需要构造 Φ,只需要 ΦΦT=K。 就像 SVD 中我们可以只用 AAT 而不需要显式构造 A 的某些分解一样(Art. 3 SVD)。
Kernel PCA:连接 Part 1
PCA(Art. 6 PCA)在协方差矩阵上做特征分解。标准 PCA 是线性的——但如果我们先用 ϕ 把数据映射到高维空间,再做 PCA 呢?
从线性 PCA 到 Kernel PCA
标准 PCA 对中心化数据矩阵 X~∈Rn×d 的协方差矩阵 C=n−11X~TX~ 做特征分解。
在特征空间中,数据变为 Φ=[ϕ(x1),…,ϕ(xn)]T∈Rn×m(假设已中心化),协方差矩阵变为:
Cϕ=n−11ΦTΦ∈Rm×m
当 m 是无穷维时,直接处理 Cϕ 不可行。但回忆 Art. 6 PCA 中的 Turk-Pentland 技巧:当 n≪m 时,我们转而处理 n×n 的矩阵 ΦΦT。
设 Cϕv=λv 是特征空间中协方差矩阵的特征值问题。左乘 Φ 后可以证明:
n−11ΦΦT(Φv)=λ(Φv)
即 n−11Kα=λα,其中 K=ΦΦT 是 kernel 矩阵,α=Φv。
下图展示了 Kernel PCA 的完整流程——注意自始至终 ϕ 都没有出现,所有计算只涉及 n×n 的核矩阵 K。
Kernel PCA 流程:全程只需核矩阵 K
无需显式计算 φ(x),复杂度从 O(m³) 降到 O(n³)
Kernel PCA 算法(Schölkopf, Smola & Müller, 1998):
- 计算 kernel 矩阵 Kij=k(xi,xj)
- 中心化 kernel 矩阵:K~=K−n111TK−Kn111T+n2111TK11T
- 对 K~ 做特征分解:K~αi=nλiαi
- 数据点在第 i 个核主成分上的投影坐标为 αi(归一化后)
关键对比:
| 标准 PCA | Kernel PCA |
|---|
| 数据空间 | 原始 Rd | 特征空间 H(可无穷维) |
| 核心矩阵 | C=n−11XTX∈Rd×d | K=ΦΦT∈Rn×n |
| 计算复杂度 | O(d3) 或 O(nd2) | O(n3)(与特征维度无关) |
| 能力 | 线性子空间 | 非线性流形 |
Kernel PCA 完美体现了 kernel trick 的威力:复杂度从 O(m3)(无穷!)降到 O(n3),所有操作只涉及 K。
Gaussian Process:kernel 矩阵求逆
Gaussian Process(GP,高斯过程)是 kernel 方法的贝叶斯版本。如果 kernel 方法的核心是”用 K 编码相似度”,那么 GP 的核心是”用 K−1 做推断”。
GP 回归的核心公式
给定训练数据 {(xi,yi)}i=1n,GP 假设函数值 y=(y1,…,yn)T 服从多元高斯分布:
y∼N(0,K+σn2I)
其中 Kij=k(xi,xj) 是核矩阵,σn2 是观测噪声方差。
对于新输入 x∗,预测均值和方差为(Rasmussen & Williams, 2006, Chapter 2):
μ∗=k∗T(K+σn2I)−1y
σ∗2=k(x∗,x∗)−k∗T(K+σn2I)−1k∗
其中 k∗=(k(x∗,x1),…,k(x∗,xn))T 是新点与训练点之间的核向量。
矩阵视角的关键观察:
- 预测完全由 K−1(准确说是 (K+σn2I)−1)决定。核矩阵编码了数据点之间的先验相似度,它的逆编码了”去相关后”的信息贡献。
- 计算瓶颈是 n×n 矩阵的求逆,复杂度 O(n3)。这限制了 GP 的规模——当 n 超过几万时,朴素 GP 变得不可行。
- σn2I 的加入既有物理意义(观测噪声),也有数值作用——它确保矩阵严格正定,避免数值奇异性。
Cholesky 分解在 GP 中的角色
实践中从不直接计算 K−1。对于正定矩阵 K+σn2I,标准做法是 Cholesky 分解(Cholesky decomposition):
K+σn2I=LLT
其中 L 是下三角矩阵。然后通过前向/后向替代(forward/backward substitution)求解 LLTα=y,得到 α=(K+σn2I)−1y。
Cholesky 分解的优势:
- 数值稳定:利用了正定性,不会产生主元为零的问题
- 效率:O(n3/3),比一般的 LU 分解快一倍
- 副产品:logdet(K+σn2I)=2∑ilogLii,这是 GP 边际似然(marginal likelihood)的核心项,用于超参数优化
在 Rasmussen & Williams (2006) 的标准 GP 实现中(Algorithm 2.1),Cholesky 分解是第一步——它是 GP 高效实现的基石。
数值例子:RBF Kernel 矩阵的构造与谱
为了具体化上述理论,我们手算一个小例子。
数据:3 个一维点 x1=0,x2=1,x3=3。核函数:RBF,σ=1。
k(xi,xj)=exp(−2(xi−xj)2)
计算 K 矩阵(利用对称性 Kij=Kji,只需算上三角):
K11=e0=1,K12=e−1/2≈0.607,K13=e−9/2≈0.011
K22=1,K23=e−4/2=e−2≈0.135
K33=1
K=10.6070.0110.60710.1350.0110.1351
验证正半定性:计算特征多项式(或利用 Sylvester 判据——所有顺序主子式非负):
- K11=1>0 ✓
- det[10.6070.6071]=1−0.368=0.632>0 ✓
- det(K)≈1(1−0.018)−0.607(0.607−0.0015)+0.011(0.082−0.011)≈0.982−0.368+0.001≈0.615>0 ✓
所有顺序主子式为正,K 不仅半正定,而且正定。这与 RBF 核对不同点生成正定矩阵的已知性质一致(Micchelli, 1986)。
谱结构:通过数值计算,特征值约为 λ1≈1.68,λ2≈0.93,λ3≈0.39。注意 λ1+λ2+λ3=3=tr(K)(RBF 核的对角元素全为 1,迹等于 n),这与 Art. 2 特征分解 中”特征值之和等于迹”一致。
Kernel Trick 的矩阵代数:K=ΦΦT
让我们用多项式核的具体例子看 K=ΦΦT 是如何工作的。
取 2D 数据点 x1=(1,0)T,x2=(0,1)T,使用二次多项式核 k(x,y)=(xTy+1)2。
直接计算 K:
K11=(1⋅1+0⋅0+1)2=4
K12=K21=(1⋅0+0⋅1+1)2=1
K22=(0⋅0+1⋅1+1)2=4
K=[4114]
通过 Φ 计算:显式特征映射 ϕ(x)=(x12,x22,2x1x2,2x1,2x2,1)T。
ϕ(x1)=(1,0,0,2,0,1)T,ϕ(x2)=(0,1,0,0,2,1)T
Φ=[100100200211]
ΦΦT=[1+0+0+2+0+10+0+0+0+0+10+0+0+0+0+10+1+0+0+2+1]=[4114]=K✓
两种路径得到完全相同的 K。但 kernel trick 的价值在于:我们可以只走第一条路(直接算 K),绕开显式构造 Φ。 当核函数对应无穷维特征空间(如 RBF)时,第二条路根本走不通——但第一条路始终可行。
“核”的词源小考
“核”(kernel)这个词在数学中有多重含义,它们之间有历史联系但指代不同的概念:
-
零空间意义的核(Kernel of a linear map):线性映射 T 的核 ker(T)={x:Tx=0},即被映射到零的所有向量。这是代数学中最基本的用法。
-
积分核(Integral kernel):积分变换 (Tf)(x)=∫k(x,y)f(y)dy 中的函数 k(x,y)。这里的”核”是变换的”核心”——定义变换的函数。Mercer 定理中的核函数正是这个意义。
-
正定核 / 再生核(Positive definite kernel / Reproducing kernel):满足 Mercer 条件的对称正定函数,它在再生核 Hilbert 空间(RKHS)中充当再生核——⟨k(⋅,x),f⟩H=f(x),即用核函数可以”再生”函数在任意点的值。
-
ML 中的 kernel:沿用了积分核的概念——核函数定义了数据点之间的相似度,kernel 矩阵是这个函数的离散化。
从积分核到正定核再到 RKHS,这条线索是 Mercer (1909) → Aronszajn (1950) → Wahba (1990) → Schölkopf & Smola (2002) 逐步建立的。
与前后文的连接
回望:Kernel 矩阵是 Part 1 工具的自然延伸
- 特征分解(Art. 2 特征分解):K 是对称半正定矩阵,谱定理保证它有实非负特征值和正交特征向量。Kernel PCA 本质上就是对 K 做特征分解。
- SVD(Art. 3 SVD):如果我们把 K 看成 ΦΦT,那么 K 的特征分解等价于 Φ 的 SVD 的一部分——K=UΣ2UT,其中 U,Σ 来自 Φ=UΣVT。
- PCA(Art. 6 PCA):Kernel PCA 是 PCA 的直接推广,将线性降维扩展到非线性流形。
前瞻:三族算子的第二、第三交汇
- 图 Laplacian(Art. 21 图 Laplacian):RBF kernel 矩阵经常被用来构造图——Kij 作为边权,然后构建图 Laplacian L=D−K。谱聚类的第一步就是用 kernel 建图,第二步才是图 Laplacian 的特征分解。Kernel 矩阵是图 Laplacian 的上游。
- Efficient Attention(Art. 25 Efficient Attention):Transformer 的注意力矩阵 Aij=softmax(qiTkj/d) 本质上是一个 kernel 矩阵——query 和 key 的内积经过 softmax 变成非负的相似度。线性注意力(linear attention)的核心思想正是用显式特征映射 ϕ 替代 softmax,使计算从 O(n2) 降到 O(n)——这是 kernel trick 的逆向应用。
总结与展望
本文建立了 kernel 矩阵作为”数据定义的给定算子”的完整理论框架:
- Kernel 矩阵 Kij=k(xi,xj) 将数据点之间的相似度编码为一个对称半正定矩阵
- Mercer 定理:k 是正定核 ⟺ 存在特征映射 ϕ 使得 k(x,y)=⟨ϕ(x),ϕ(y)⟩。核函数有谱展开 k(x,y)=∑iλiei(x)ei(y)
- Kernel trick:K=ΦΦT,所有只涉及内积的算法可以隐式地在高维特征空间中工作,复杂度只取决于 n
- Kernel PCA:对 kernel 矩阵做特征分解,将 PCA 从线性推广到非线性
- Gaussian Process:K−1(通过 Cholesky 分解高效计算)是 GP 预测的核心
- 连接全景:kernel 矩阵是 Part 1 工具(特征分解、SVD、PCA)在 Part 2 算子语境下的自然延伸,同时是图 Laplacian 和 Efficient Attention 的上游
下一篇我们转向图 Laplacian——三族算子的第二族。如果 kernel 矩阵编码的是”两点有多相似”,图 Laplacian 编码的是”两点的差异如何沿图传播”。当你用 RBF kernel 给数据建一个相似度图,再构造图 Laplacian,谱聚类的数学就自然浮现了。