系列 · 核方法 · 第 3 篇

核方法(三):RKHS——核方法的理论灵魂

再生核 Hilbert 空间——核方法栖息的函数空间。再生性、表示定理,以及为什么有限数据可以在无穷维空间里做优化。

如果你曾在某节课上听到老师写下 “RKHS” 三个字母就感觉血压升高,那这篇文章是写给你的。RKHS 不是一个由三个吓人字母组成的秘密俱乐部——它就是一个函数空间。一旦你看清楚里面装的是什么东西,核方法就不再是魔法,而是你已经熟悉的那种线性代数。

核方法系列第 3 篇的 Hilbert 空间封面

这一篇的目标很聚焦,只回答三个问题:一个核定义出了什么样的函数空间,你能在里面做什么(再生性 + 表示定理),以及为什么这套机器允许你在一个可能是无穷维的空间里只解一个有限维的优化问题。读完之后再看到论文里写"最优解 $f$ 落在 $\mathcal{H}_K$ 里",你就能气定神闲地继续往下读了。

Hilbert 空间五分钟入门#

在谈"再生核"之前,得先把 Hilbert 空间本身讲明白。Hilbert 空间就是普通向量空间外面再套两层东西。

第一层:内积。 Hilbert 空间 $\mathcal{H}$ 上有一个内积 $\langle \cdot, \cdot\rangle_{\mathcal{H}}$ ——一个对称、双线性、正定的函数,吃两个向量吐出一个标量。内积给你长度($\|f\| = \sqrt{\langle f, f\rangle}$ )、夹角($\cos\theta = \langle f, g\rangle / (\|f\|\|g\|)$ )和正交($f \perp g \iff \langle f, g\rangle = 0$ )。$\mathbb{R}^d$ 里熟悉的那一整套几何,都搬过来用就行。

第二层:完备性。 $\mathcal{H}$ 里任何 Cauchy 列都收敛到 $\mathcal{H}$ 里面的某个极限。这条听起来很技术,但它正是 Hilbert 空间和"普通内积空间"的分界线——完备性意味着你可以放心地取极限、做无穷求和、谈论无穷维投影,而不必担心算着算着掉出空间外面。

三个对极端维度的经典例子:

  • 有限维: $\mathbb{R}^d$ 配上点积 $\langle u, v\rangle = u^\top v$ 。最熟的那个。
  • 无穷维($L^2$ ): $L^2([a,b])$$[a,b]$ 上所有平方可积实函数构成的空间,内积是 $\langle f, g\rangle_{L^2} = \int_a^b f(x) g(x)\, dx$ 。这里的"向量"就是函数,向量之间的"内积"就是积分。
  • 无穷维($\ell^2$ ): $\ell^2(\mathbb{N})$ 是所有平方可加实序列 $a = (a_1, a_2, \dots)$$\sum_k a_k^2 < \infty$ )构成的空间,内积是 $\langle a, b\rangle_{\ell^2} = \sum_{k=1}^\infty a_k b_k$ 。向量是无穷序列,内积是无穷求和。

$L^2$$\ell^2$ 不是两个互不相干的例子。把 $L^2$ 里的函数在某组固定正交基下展开,得到的系数序列正好落在 $\ell^2$ 里——由 Parseval 定理,这条对应是一个等距同构 $L^2 \cong \ell^2$ ,是同一个 Hilbert 空间换了套衣服。

完备性证明概略(以 $\ell^2$ 为例)。$a^{(n)}$$\ell^2$ 中的 Cauchy 列。每个坐标 $(a^{(n)}_k)_n$$\mathbb{R}$ 中也 Cauchy(因为 $|a^{(n)}_k - a^{(m)}_k| \leq \|a^{(n)} - a^{(m)}\|_{\ell^2}$ ),所以有极限 $a_k$ 。令 $a = (a_k)_k$ 。一段 $\varepsilon$ 论证加 Fatou 引理即可证明 $a \in \ell^2$$a^{(n)} \to a$$L^2$ 的完备性证明走同样模板:从 Cauchy 列取出几乎处处逐点极限,再验证它落在空间里。

上面那张图把这件事讲了。左边是 $\mathbb{R}^2$ 里的两个箭头,内积是点积,从图上能直接读出投影 $\mathrm{proj}_u v = (\langle u, v\rangle / \|u\|^2) u$ 是第三个箭头。右边换成函数:两条彩色曲线是 $f$$g$ ,阴影区域是乘积 $f(x) g(x)$ ,内积 $\langle f, g\rangle$ 就是那块面积(带正负号)的总和。几何一模一样,只是维度变成了无穷。

$L^2$ 内积的数值小例子。 20 行代码把抽象变具体:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import numpy as np

# 在 [0, pi] 上离散化 1000 个点
x = np.linspace(0, np.pi, 1000)
dx = x[1] - x[0]

f = np.sin(x)          # f(x) = sin x
g = np.sin(2 * x)      # g(x) = sin 2x
h = np.cos(x)          # h(x) = cos x

def l2_inner(u, v):
    return np.sum(u * v) * dx

print(l2_inner(f, g))  # ~0       (sin x 与 sin 2x 在 [0, pi] 上正交)
print(l2_inner(f, h))  # ~1       (sin x 与 cos x 的积分为 1)
print(l2_inner(f, f))  # ~pi/2    ||sin x||^2 = pi/2

把积分近似 $\sum_i u_i v_i \cdot \Delta x$ 看成 $\ell^2$ 通往 $L^2$ 的桥:分辨率提高时,离散化函数的 $\ell^2$ 内积就收敛到原始函数的 $L^2$ 内积。这正是同构 $\ell^2 \cong L^2$ 的数值形式。

为什么我们关心。 核方法将栖息在某一个具体的 Hilbert 空间里——这个空间的"向量"是你数据所在集合 $\mathcal{X}$ 上的实值函数。那个空间上的内积,恰好就是你选的核 $K$ 。完备性这条性质,是用来保证"许多核的有限线性组合取极限"得到的对象仍是空间里的合法成员(这正是核岭回归输出的东西)。

一个粗糙的心智模型:把 Hilbert 空间想成"配了内积、且没有收敛病灶的 $\mathbb{R}^\infty$ "。这句话能让你心里踏实下来后,下面就可以走了。

性质$\mathbb{R}^d$$\ell^2$$L^2([a,b])$$\mathcal{H}_K$ (RKHS)
向量$d$ 元组无穷序列函数(等价类)函数(逐点)
内积$u^\top v$$\sum_k a_k b_k$$\int f g \, dx$$\langle f, g\rangle_{\mathcal{H}_K}$
维度$d$$\infty$$\infty$取决于 $K$
取值 $f\!\mapsto\!f(x)$平凡不适用无定义连续

最后一行是 RKHS 之所以特殊的根本原因,下一节就讲它。

什么是 RKHS:再生性#

Hilbert 空间是一个通用结构;RKHS 是 Hilbert 函数空间里带一条额外性质的特殊一类——这条性质叫再生性(reproducing property),它把"在某点取函数值"这件事变成了一个内积。

形式地写出来。$\mathcal{X}$ 上的实值函数 Hilbert 空间 $\mathcal{H}$ 被称为再生核 Hilbert 空间,如果存在一个函数 $K: \mathcal{X} \times \mathcal{X} \to \mathbb{R}$ ——再生核 ——使得对任意 $x \in \mathcal{X}$ 和任意 $f \in \mathcal{H}$ 都有

$$f(x) \;=\; \langle f, \; K(\cdot, x)\rangle_{\mathcal{H}}.$$

仔细盯着这条公式。$K(\cdot, x)$ 这个写法意味着:把第二个槽位钉死成 $x$ ,把整体看成第一个槽位的函数——所以 $K(\cdot, x)$ 自身是 $\mathcal{H}$ 里的一个元素,可以理解为"在 $x$ 处取值"这件事所对应的特征向量。再生性说:在 $x$ 处算 $f$ 的值,就等于$f$ 跟这个"取值特征"做内积。

为什么这件事很怪? “在某点取函数值"通常是一件脆弱的事。对于一般的 $L^2$ 函数,$f(x)$ 在单个点上甚至都没有良定义——你可以在零测集上随便改 $f$ ,作为 $L^2$ 向量它还是同一个。RKHS 要求空间小到这样一个程度:取值不仅良定义,还是一个连续线性泛函。Riesz 表示定理立刻接着说:每一个连续线性泛函都可以用与某个元素的内积来表示——而那个元素正是 $K(\cdot, x)$ 。一句话总结:RKHS = “取值是连续操作的 Hilbert 空间”。

配图。 最直接的理解方式是看一个具体例子。

RBF RKHS 上的再生性可视化

左图:蓝色曲线是 $\mathcal{H}_K$ 里的某个 $f$ ,由三个分别中心在 $\{-1.6, 0.2, 1.4\}$ 的 RBF 核相加而成,系数按需选好。红色曲线是 $x_0 = 0.6$ 处的核切片 $K(\cdot, x_0)$ ——一个中心在该点的单一 Gauss 包。绿色点标出了 $f(x_0)$ ,也就是蓝线在 $x_0$ 处取的值。中图的公式说:那个绿点等于蓝色和红色的内积。右图把这件事数值上验证了一遍——由于 $f$ 的结构,内积化为 $\sum_i \alpha_i K(x_i, x_0)$ ,正好等于绿点。

手工例子:$\mathbb{R}$ 上的线性核 $K(x,y) = xy$ ,从头到尾推一遍。$\mathcal{X} = \mathbb{R}$$K(x, y) = xy$ 。我们要推出 $\mathcal{H}_K$ 、它的内积,并手工验证再生性。

$y$ 处的核切片 $K(\cdot, y): z \mapsto zy$ 是过原点斜率为 $y$ 的线性函数。所以每一个核切片都形如 $f_w(z) = wz$$w$ 是斜率。有限线性组合 $\sum_i \alpha_i K(\cdot, x_i)$ 也是 $z \mapsto (\sum_i \alpha_i x_i) z$ ,依然是过原点的线性函数,斜率 $w = \sum_i \alpha_i x_i$ 。预 Hilbert 空间 $\mathcal{H}_0$ 就是 $\{f_w : w \in \mathbb{R}\} \cong \mathbb{R}$ ,本身已经完备(一维空间自动完备),不需要再做完备化。$\mathcal{H}_K = \mathcal{H}_0$

诱导出来的内积:

$$\langle f_w, f_v\rangle_{\mathcal{H}_K} \;=\; \langle \alpha K(\cdot, w), \beta K(\cdot, v)\rangle_{\mathcal{H}_0} \;=\; \alpha \beta K(w, v) \;=\; \alpha \beta \, w v.$$

$\alpha = 1, x_1 = w$ (这样 $f_w = K(\cdot, w)$ ),同理 $\beta = 1, y_1 = v$ ,得到 $\langle f_w, f_v\rangle = wv$ ——就是斜率相乘。验证再生性:$\langle f_w, K(\cdot, x)\rangle = \langle f_w, f_x\rangle = wx = f_w(x)$ 。✓

结论:$K(x,y) = xy$ 的 RKHS 就是 $\mathbb{R}$ 本身,每个实数 $w$ 与线性函数 $z \mapsto wz$ 等同。同样的论证推到 $\mathbb{R}^d$ ,得到 $K(x,y) = x^\top y$ 的 RKHS $\cong \mathbb{R}^d$ ,内积是 $\langle f_w, f_v\rangle = w^\top v$ 。所谓"无穷维 Hilbert 空间”,在线性核这里只是穿着函数空间外衣的 $\mathbb{R}^d$

操作层面为什么重要。 一旦接受了再生性,就能玩一个非常厉害的把戏:把任何"在某点取值"的步骤直接替换成一个内积。这一招把"$f$ 是什么"(函数空间搜索)转成"$\sum_i \alpha_i K(\cdot, x_i)$ 里的系数是什么"(有限维搜索)。请牢牢记住这一点——这是本文最重要的一句话。

从核构造 RKHS#

前面我们一直说"核 $K$ 的 RKHS",仿佛它显然存在。现在动手把它出来。整个构造既简短又具体,值得在人生中亲手走一遍。

第 1 步:从核切片出发。 选一组有限点 $\{x_1, \dots, x_n\} \subset \mathcal{X}$ ,看那 $n$ 个函数 $K(\cdot, x_1), \dots, K(\cdot, x_n)$ 。这些就是基向量。

第 2 步:取所有有限线性组合。 定义

$$\mathcal{H}_0 \;=\; \left\{ \sum_{i=1}^n \alpha_i K(\cdot, x_i) \;:\; n \in \mathbb{N},\; x_i \in \mathcal{X},\; \alpha_i \in \mathbb{R}\right\}.$$

这是一个向量空间——两个这类组合相加还是一个这类组合。它还不是 Hilbert 空间:现在还没有内积,也没有完备性。

第 3 步:定义内积。$\mathcal{H}_0$ 里两个元素 $f = \sum_i \alpha_i K(\cdot, x_i)$$g = \sum_j \beta_j K(\cdot, y_j)$ ,定义

$$\langle f, g\rangle_{\mathcal{H}_0} \;=\; \sum_{i,j} \alpha_i \beta_j \, K(x_i, y_j).$$

这个定义良定(不依赖于你把 $f$ 写成哪种组合形式),恰好就是因为 $K$ 是正定的——这正是让这种双线性型成为合法内积的条件。$K$ 的对称性给出双线性和对称性;正定性给出 $\langle f, f\rangle \geq 0$ ,且等号仅在 $f \equiv 0$ 时成立。

第 4 步:验证再生性在 $\mathcal{H}_0$ 上成立。$f = \sum_i \alpha_i K(\cdot, x_i)$ 和任意 $x \in \mathcal{X}$ ,则

$$\langle f, K(\cdot, x)\rangle_{\mathcal{H}_0} \;=\; \sum_i \alpha_i K(x_i, x) \;=\; f(x).$$

按定义就成立,不需要额外努力。

第 5 步:完备化。 $\mathcal{H}_0$ 是个内积空间但还不完备:存在一些"有限组合 Cauchy 列",它们的逐点极限并不能写成有限组合——对 RBF 核来说,这类极限囊括了 $\mathcal{X}$ 上几乎所有的光滑函数。标准分析操作是把这些极限都加进来:把 $\mathcal{H}_K$ 定义为 $\mathcal{H}_0$ 关于范数 $\|f\|_{\mathcal{H}_0} = \sqrt{\langle f, f\rangle}$ 的完备化。内积和再生性都按连续性扩展到 $\mathcal{H}_K$ 上。完工。

构造的复杂度。 虽然极限空间 $\mathcal{H}_K$ 一般无穷维,但你从数据出发能造出的每一个元素都还在 $\mathcal{H}_0$ 里——$n$ 个核切片的有限组合。两个这种元素的内积是 $O(n^2)$ 次核求值;范数计算同;在新点 $x$ 处求值是 $O(n)$ 。无穷维空间只活在理论证明里,运行时复杂度一直是 $n$ 的多项式。

Python:模拟一个有限秩 RKHS。 下面对 RBF 核选 5 个固定中心,造出预 Hilbert 空间 $\mathcal{H}_0$ ,并数值验证再生性。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import numpy as np

# 核:RBF
def K(x, y, gamma=1.0):
    return np.exp(-gamma * (x - y) ** 2)

# 中心和系数定义 f = sum alpha_i K(., x_i)
centres = np.array([-2.0, -1.0, 0.0, 1.0, 2.0])
alpha = np.array([0.5, -1.2, 0.8, 1.5, -0.7])

def f(z):
    """直接按和式在 z 点求值。"""
    return sum(a * K(z, c) for a, c in zip(alpha, centres))

def inner(coef1, ctr1, coef2, ctr2):
    """两个有限组合的 RKHS 内积。"""
    G = np.array([[K(a, b) for b in ctr2] for a in ctr1])
    return coef1 @ G @ coef2

# 在 x0 = 0.5 处验证再生性
x0 = 0.5
lhs = f(x0)
# K(., x0) 是单项组合: 系数 [1], 中心 [x0]
rhs = inner(alpha, centres, np.array([1.0]), np.array([x0]))
print(f"f(x0)             = {lhs:.6f}")
print(f"<f, K(., x0)>     = {rhs:.6f}")
print(f"match: {np.isclose(lhs, rhs)}")  # True

跑一下,两个数字会在机器精度内相等。再生性不是隐喻,是代码里一条字面意义上的等式。

从核构造 RKHS 的三步走

图按构造的三步顺次展示了 RBF 核情形。左边:三个核切片是中心在不同点的光滑包。中间:它们的线性组合构成一个小的有限维空间 $\mathcal{H}_0$ ,里面的元素都是"几个尖包叠加"的形态。右边:随着采点变密、包变多,$\mathcal{H}_0$ 中的 Cauchy 列收敛到 $\mathcal{H}_K$ 里的任意光滑函数——极限把整个 RKHS 填满。

把这件事打包的定理叫 Moore–Aronszajn:每个正定核 $K$ 唯一定义一个 RKHS $\mathcal{H}_K$$K$ 正是它的再生核),反之亦然。核与 RKHS 一一对应,是一枚硬币的两面。

RKHS 维度对照表。

$\mathcal{X}$$\dim \mathcal{H}_K$
线性 $x^\top y$$\mathbb{R}^d$$d$
$p$ 阶多项式$\mathbb{R}^d$$\binom{d+p}{p}$
RBF $\exp(-\gamma\|x-y\|^2)$$\mathbb{R}^d$$\infty$
Matern $\nu = 3/2$$\mathbb{R}^d$$\infty$
周期核$\mathbb{R}$$\infty$

核同时决定了函数空间的身份和它的大小,二者由不得你独立选。

Mercer 视角 vs 再生性视角#

到这里我们已经有两套看起来不同的方式来谈"核里装着什么":

  • Mercer 视角(第 2 篇):$K(x, y) = \sum_k \lambda_k \phi_k(x) \phi_k(y)$ ,隐式特征映射 $\phi(x) = (\sqrt{\lambda_k}\,\phi_k(x))_k$
  • 再生性视角(本篇):$K$ 是某个函数空间 $\mathcal{H}_K$ 的再生核,且 $f(x) = \langle f, K(\cdot, x)\rangle$

这两个真的是同一个东西吗?是的——而且桥梁很优雅。

桥梁。 给定 Mercer 分解,自然的特征映射 $\phi: \mathcal{X} \to \ell^2$$x$ 送到无穷序列 $(\sqrt{\lambda_k}\,\phi_k(x))_k$ 。从特征到函数的反向映射,把一个序列 $a = (a_k)_k \in \ell^2$ 送到函数 $f_a(x) = \sum_k a_k \sqrt{\lambda_k}\, \phi_k(x)$ 。RKHS $\mathcal{H}_K$ 就是这个映射的像——所有形如 $f_a$$a \in \ell^2$ )的函数——其范数定义为 $\|f_a\|_{\mathcal{H}_K} = \|a\|_{\ell^2}$ 。再生性此时是一行计算:

$$\langle f_a, K(\cdot, x)\rangle_{\mathcal{H}_K} \;=\; \langle a, \phi(x)\rangle_{\ell^2} \;=\; \sum_k a_k \sqrt{\lambda_k}\,\phi_k(x) \;=\; f_a(x). \;\;\checkmark$$

所以 Mercer 特征映射和 RKHS 之间是一个等距同构:每个 $f \in \mathcal{H}_K$ 对应一个系数向量 $a \in \ell^2$ ,RKHS 内积对应 $\ell^2$ 内积。Mercer 给的是 RKHS 的一组;再生视角给的是一条取值规则

等距同构图示。 值得背下来:

等距同构图示:X 通过特征映射 φ 到 ℓ²,再通过坐标映射 Φ 到 H_K;两端的内积相等

图:Mercer 视角与再生性视角是同一个 RKHS 的两种参数化——左右两端算出来的内积相等。

双竖线表示"值相等"。算两个函数的 RKHS 内积,可以转去算它们系数序列的 $\ell^2$ 内积,反之亦然。两幅图不冲突——它们坐在同一个等距同构的两端。

手工例子:$\mathbb{R}^2$ 上的二次多项式核。$K(x, y) = (x^\top y)^2$$\mathcal{X} = \mathbb{R}^2$ 。展开:

$$K(x, y) = (x_1 y_1 + x_2 y_2)^2 = x_1^2 y_1^2 + 2 x_1 x_2 y_1 y_2 + x_2^2 y_2^2 = \phi(x)^\top \phi(y),$$

其中 $\phi(x) = (x_1^2, \sqrt{2}\, x_1 x_2, x_2^2)^\top \in \mathbb{R}^3$ 。Mercer 特征函数是 $\phi_1 = x_1^2$$\phi_2 = \sqrt{2}\, x_1 x_2$$\phi_3 = x_2^2$ ,三个特征值都为 $\lambda = 1$ 。RKHS $\mathcal{H}_K$ 是 3 维的齐次二次函数空间

$$\mathcal{H}_K = \{f_a(x) = a_1 x_1^2 + a_2 \sqrt{2}\, x_1 x_2 + a_3 x_2^2 : a \in \mathbb{R}^3\},$$

$\|f_a\|_{\mathcal{H}_K}^2 = a_1^2 + a_2^2 + a_3^2 = \|a\|_{\ell^2}^2$ 。再生性验证:$\langle f_a, K(\cdot, x)\rangle = \langle f_a, f_{\phi(x)}\rangle = a^\top \phi(x) = f_a(x)$ 。✓ 两套视角彼此印证,哪边方便用哪边——这里 $\dim \mathcal{H}_K = 3$ ,基视角更短。

什么时候用哪个?

  • 用 Mercer几何地思考隐式特征空间——特征值衰减、谱近似(Nystrom、随机傅里叶特征)、或分析一个核能表达哪些频率。
  • 用再生视角证东西 ——证最小化解的存在性、表示定理、泛化界。内积演算让这类证明短得不可思议。

它们不是对手,是同一个 Hilbert 空间的两个镜片。熟练的研究者会在推导中间随意切换。

表示定理(Representer Theorem)#

下面是整篇文章一直在铺垫的那个结果。它属于那种少见的"短、好证、立刻改变你能做的事"的定理。

定理(表示定理,Kimeldorf–Wahba 1971;Schölkopf–Herbrich–Smola 2001)。$\mathcal{H}_K$ 是核 $K$ 的 RKHS,训练集为 $\{(x_i, y_i)\}_{i=1}^n$$L: \mathbb{R}^n \to \mathbb{R} \cup \{+\infty\}$ 是任意函数(经验损失),$\Omega: [0, \infty) \to \mathbb{R}$严格单调递增的函数(正则项)。则

$$\min_{f \in \mathcal{H}_K} \;L\bigl(f(x_1), \dots, f(x_n)\bigr) \;+\; \Omega\bigl(\|f\|_{\mathcal{H}_K}\bigr)$$

的任意最优解 $f^*$ 都可写成

$$f^*(x) \;=\; \sum_{i=1}^n \alpha_i \, K(x_i, x),$$

其中 $\alpha \in \mathbb{R}^n$

翻译成人话:不管损失多么古怪,不管 $\mathcal{H}_K$ 是多高维甚至无穷维,最优解永远是训练集核切片的有限线性组合

完整的正交证明。$V = \mathrm{span}\{K(\cdot, x_i)\}_{i=1}^n \subset \mathcal{H}_K$ ——这是一个维数至多为 $n$ 的有限维子空间。$V$ 是闭的(Hilbert 空间的有限维子空间总是闭的),所以任意 $f \in \mathcal{H}_K$ 都有唯一正交分解

$$f \;=\; f_\parallel + f_\perp, \quad f_\parallel \in V, \quad f_\perp \in V^\perp,$$

其中 $V^\perp = \{g \in \mathcal{H}_K : \langle g, h\rangle = 0,\ \forall h \in V\}$

逐项算贡献。

经验损失项。 由再生性,

$$f(x_i) \;=\; \langle f, K(\cdot, x_i)\rangle \;=\; \langle f_\parallel, K(\cdot, x_i)\rangle + \langle f_\perp, K(\cdot, x_i)\rangle.$$

因为 $K(\cdot, x_i) \in V$$f_\perp \in V^\perp$ ,第二项严格为零。所以对所有 $i$ 都有 $f(x_i) = f_\parallel(x_i)$ ,于是 $L(f(x_1), \dots, f(x_n)) = L(f_\parallel(x_1), \dots, f_\parallel(x_n))$ 。损失项只依赖于 $f_\parallel$

正则项。 由勾股定理(正交性在 Hilbert 空间里恒成立),

$$\|f\|^2 \;=\; \|f_\parallel\|^2 + \|f_\perp\|^2 \;\geq\; \|f_\parallel\|^2,$$

等号当且仅当 $f_\perp = 0$ 时成立。$\Omega$ 严格递增,所以

$$\Omega(\|f\|) \;\geq\; \Omega(\|f_\parallel\|),$$

等号同样仅当 $f_\perp = 0$

合起来。 总目标函数满足

$$L(f(x_1),\dots) + \Omega(\|f\|) \;\geq\; L(f_\parallel(x_1),\dots) + \Omega(\|f_\parallel\|),$$

只要 $f_\perp \neq 0$ 就严格不等。所以任意最优解必有 $f_\perp = 0$ ,等价于 $f^* \in V = \mathrm{span}\{K(\cdot, x_i)\}$ ,即 $f^*(x) = \sum_i \alpha_i K(x_i, x)$$\square$

证明只用了三种原料——正交分解、再生性、$\Omega$ 单调。其它所有关于 $\mathcal{H}_K$ 的东西(包括它可能是无穷维)都无关紧要。

表示定理的几何画像

这张图把正交分解的论证变得直觉化。大虚线椭圆是 $\mathcal{H}_K$ 。蓝线是训练数据核张成的 $n$ 维子空间 $V$ 。候选 $f$ 坐在 $\mathcal{H}_K$ 的某处。把它分解成在 $V$ 上的投影(绿色)和垂直分量(紫色)。垂直分量对数据拟合没有任何贡献(再生性的功劳),但在范数惩罚上要付出代价。最优解把它砍掉。

表示定理为什么这么重要#

定理的价值取决于它让你能干什么。这条定理让你能干的事情很大。

无穷维搜索变成 $n$ 维求解。 朴素地看核岭、核 SVM 这类问题:在 $\mathcal{H}_K$ 上求最小,而 $\mathcal{H}_K$ 可能是无穷维的,听起来无从下手。表示定理回一句话:你其实是在训练数据张成的 $n$ 维子空间里求最小,这是一个有限维向量空间,用线性代数就能解。最小化问题从抽象的函数空间问题降到具体的 $\mathbb{R}^n$ 上系数 $\alpha$ 的优化。

你永远不必显式写出 $\phi(x)$ 即使隐式特征映射 $\phi(x)$$10^6$ 个甚至无穷多个分量,你也根本不会把它写下来。表示定理告诉你:答案完全可以用核求值 $K(x_i, x)$ (这是 $O(1)$ 计算量)来表达。这正是核方法绕开维度灾难的结构性原因。

应用 1:端到端推导核岭回归#

看定理怎么实际工作。要解

$$\min_{f \in \mathcal{H}_K} \;\sum_{i=1}^n (y_i - f(x_i))^2 \;+\; \lambda \|f\|^2_{\mathcal{H}_K}.$$

由表示定理,$f(x) = \sum_i \alpha_i K(x_i, x)$ ,其中 $\alpha \in \mathbb{R}^n$ 。把它代进去。设 Gram 矩阵 $K \in \mathbb{R}^{n \times n}$$K_{ij} = K(x_i, x_j)$ ,列向量 $\mathbf{k}(x)$$\mathbf{k}(x)_i = K(x_i, x)$ 。则:

  • $f(x_i) = (K\alpha)_i$ ,所以拟合项是 $\|y - K\alpha\|^2$
  • RKHS 范数是 $\|f\|^2 = \sum_{i,j} \alpha_i \alpha_j K(x_i, x_j) = \alpha^\top K \alpha$

原问题变成有限维二次问题

$$\min_{\alpha \in \mathbb{R}^n} \;\|y - K\alpha\|^2 \;+\; \lambda \,\alpha^\top K \alpha.$$

$\alpha$ 求梯度等于零:

$$-2 K (y - K\alpha) + 2\lambda K \alpha = 0 \;\;\Longrightarrow\;\; K(K + \lambda I)\alpha = K y \;\;\Longrightarrow\;\; \alpha = (K + \lambda I)^{-1} y.$$

(这里把外面一个 $K$ 约掉,假设 $K$ 可逆;$K$ 秩亏时用极限论证可得到同样的预测器。)于是预测器为

$$\hat f(x) \;=\; \mathbf{k}(x)^\top (K + \lambda I)^{-1} y.$$

这就是大名鼎鼎的对偶形式。所有 $\phi(x)$ 都被消除掉了;整条流水线只用核求值就能跑起来。

岭回归:特征空间原问题 vs 核空间对偶问题

把两种形式放在一起对比。原问题:在特征空间解一个 $D \times D$ 系统($D$ 是隐式特征映射的维度,可能无穷)。对偶:在系数空间解一个 $n \times n$ 系统($n$ 是训练集大小)。只要 $D > n$ ——你用任何非平凡的核基本都是这种情况——对偶严格更便宜;而当 $D = \infty$ ,对偶是唯一可行的路。

应用 2:核 SVM(合页损失情形)#

同一套机器也适用于分类。软间隔核 SVM 解的是

$$\min_{f \in \mathcal{H}_K, b \in \mathbb{R}} \;\frac{1}{2}\|f\|^2_{\mathcal{H}_K} + C \sum_{i=1}^n \max(0, 1 - y_i (f(x_i) + b)),$$

$y_i \in \{-1, +1\}$ 。合页损失 $\max(0, 1 - y_i z_i)$$f$ 的依赖只通过 $f(x_i)$ ,正则项关于 $\|f\|$ 严格递增,所以表示定理适用。最优解仍是 $f^*(x) = \sum_i \alpha_i K(x_i, x)$

代回去走 Lagrange 对偶,得到经典 SVM 对偶问题

$$\max_{\alpha \in \mathbb{R}^n} \;\sum_{i=1}^n \alpha_i - \frac{1}{2}\sum_{i,j} \alpha_i \alpha_j y_i y_j K(x_i, x_j),$$

约束 $0 \leq \alpha_i \leq C$$\sum_i \alpha_i y_i = 0$ 。判别函数 $\hat f(x) = \sum_{i \in \text{SV}} \alpha_i y_i K(x_i, x) + b$ 只对支持向量($\alpha_i > 0$ 的点)求和。KKT 条件正是给出稀疏性的源头:只有落在间隔上或穿过间隔的点贡献。表示定理保证有限展开充分;KKT 把大部分系数压成零。

方法原问题代价对偶代价备注
线性岭$O(d^2 n + d^3)$$O(n^3)$$d \ll n$ 时用原问题
核岭$D = \infty$ 时不可行$O(n^3)$只能走对偶
核 SVM$D = \infty$ 时不可行$O(n^3)$ QP稀疏:支持向量
核 SVR$D = \infty$ 时不可行$O(n^3)$ QPepsilon-tube

有限数据的奇迹。

有限数据 + 无穷维空间 = 有限维优化

左图:在 8 个带噪训练点上的核岭拟合。绿色预测恰好是 8 个缩放过的核切片之和(淡蓝色细曲线),每个训练点贡献一片。右图是维度账本:$\mathcal{H}_K$ 大得离谱(示意画成 $10^6$ ;RBF 核的情况下真的是无穷),但包含最优 $f$ 的子空间维数是 $n = 8$ 。你解一个 $8 \times 8$ 系统;你身处一个无穷维空间;什么都没出问题。

这是每一个核 SVM、每一个高斯过程、每一个核 PCA、每一个谱聚类算法背后共同的结构事实。它就是核方法不仅是一个小聪明、而是一整套深刻理论框架的原因。

接下来#

到这里整套概念机器已经搭好:正定核存在(第 2 篇),它们生成带有良好取值规则的函数空间(本篇),有限数据让我们能用有限维线性代数去搜索这些空间(表示定理)。

下一个自然的问题是:具体该选哪个核。常见的核家族有不同的光滑性、周期性和局部性——RBF、多项式、Matern、周期、线性、sigmoid ——每一个塑造出不同形状的 RKHS。第 4 篇会把常见的核家族过一遍,讲清楚每个核对你数据做了什么假设,给出每种常见场景下的默认选择。


本文是 核方法 系列的第 3 篇,共 8 篇。 上一篇: 第 2 篇 — 数学基础 · 下一篇: 第 4 篇 — 常见核函数族

本系列

核方法 8 篇

  1. 01 核方法(一):为什么需要它——从线性算法的天花板说起
  2. 02 核方法(二):数学基础——正定核与 Mercer 定理
  3. 03 核方法(三):RKHS——核方法的理论灵魂 当前
  4. 04 核方法(四):常见核函数族——RBF、Matern、多项式、周期与更多
  5. 05 核方法(五):核 SVM、核 PCA 与核岭回归
  6. 06 核方法(六):高斯过程——当核方法遇到贝叶斯推断
  7. 07 核方法(七):大规模核方法——Nystrom 近似与随机傅里叶特征
  8. 08 核方法(八):深度核学习 vs 深度学习——选择指南与故障排查

读有所得?

GitHub 关注我 → 新文周更

GitHub