機械学習のカーネル法で頻繁に登場する再生核ヒルベルト空間(Reproducing Kernel Hilbert Space, RKHS)について取り上げます。ガウス過程回帰やカーネルSVMなどの手法は、この空間の理論に支えられています。
数学的に厳密な定義はやや抽象的ですが、本記事ではイメージを大切にしながら、段階的に理解を深めていきます。
本記事の内容
- 内積空間・ヒルベルト空間の復習
- 再生核ヒルベルト空間の定義
- 再生核(カーネル関数)の性質
- 代表的なカーネルの例とPythonでの実装
前提知識
この記事を読む前に、以下の概念を理解しておくと理解が深まります。
- 線形代数の基礎(内積、ノルム)
- 関数空間の基本的な考え方
内積空間とヒルベルト空間
内積空間
内積空間とは、ベクトル空間に内積 $\langle \cdot, \cdot \rangle$ が定義された空間です。有限次元のベクトル空間 $\mathbb{R}^n$ では、内積は次のように定義されます。
$$ \langle \bm{x}, \bm{y} \rangle = \sum_{i=1}^{n} x_i y_i $$
関数空間においても、関数 $f, g$ に対する内積を次のように定義できます。
$$ \langle f, g \rangle = \int_{\mathcal{X}} f(x) g(x) \, dx $$
ヒルベルト空間
ヒルベルト空間とは、内積から誘導されるノルム $\|f\| = \sqrt{\langle f, f \rangle}$ に関して完備な内積空間です。
大雑把に言うと、「内積が定義されていて、コーシー列が必ず収束する」空間です。$\mathbb{R}^n$ や $L^2$ 空間がヒルベルト空間の典型例です。
再生核ヒルベルト空間の定義
評価汎関数
関数空間 $\mathcal{H}$ 上で、特定の点 $x_0$ での関数値を取り出す操作を評価汎関数と呼びます。
$$ \delta_{x_0}: \mathcal{H} \to \mathbb{R}, \quad \delta_{x_0}(f) = f(x_0) $$
RKHSの定義
ヒルベルト空間 $\mathcal{H}$ が再生核ヒルベルト空間であるとは、全ての $x \in \mathcal{X}$ に対して評価汎関数 $\delta_x$ が連続(有界線形汎関数)であることをいいます。
直感的には、「関数の値を特定の点で安定して取り出せる」空間です。$L^2$ 空間はRKHSではありません。なぜなら、$L^2$ の関数は「ほとんど至る所」で定義されており、特定の1点での値は意味を持たないためです。
リースの表現定理との関係
評価汎関数が連続であるとき、リースの表現定理により、ある関数 $k_{x_0} \in \mathcal{H}$ が存在して、
$$ f(x_0) = \langle f, k_{x_0} \rangle_{\mathcal{H}} $$
と書けます。この $k_{x_0}$ を再生核と呼び、2変数関数 $k(x, x’) = k_x(x’)$ をカーネル関数といいます。
再生核の性質
再生性
再生核の名前の由来となる最も重要な性質です。
$$ f(x) = \langle f, k(\cdot, x) \rangle_{\mathcal{H}} \quad \forall f \in \mathcal{H} $$
特に、カーネル関数自身に適用すると、
$$ k(x, x’) = \langle k(\cdot, x), k(\cdot, x’) \rangle_{\mathcal{H}} $$
が成り立ちます。カーネル関数の値は、RKHS内での内積として解釈できます。
正定値性
再生核は正定値カーネルです。すなわち、任意の $n$ 個の点 $x_1, \dots, x_n$ と任意の実数 $c_1, \dots, c_n$ に対して、
$$ \sum_{i=1}^{n} \sum_{j=1}^{n} c_i c_j k(x_i, x_j) \geq 0 $$
が成り立ちます。これはグラム行列 $\bm{K}_{ij} = k(x_i, x_j)$ が半正定値であることを意味します。
ムーア-アロンシャインの定理
逆に、正定値カーネルが与えられれば、そのカーネルを再生核とするRKHSが一意に存在します。これがムーア-アロンシャインの定理です。
この定理のおかげで、カーネル関数を1つ指定するだけで、対応するRKHSが自動的に決まります。
代表的なカーネル関数
線形カーネル
$$ k(x, x’) = x^\top x’ $$
対応するRKHSは通常の有限次元ベクトル空間です。
RBF(ガウス)カーネル
$$ k(x, x’) = \exp\left(-\frac{\|x – x’\|^2}{2\sigma^2}\right) $$
対応するRKHSは無限次元の関数空間であり、非常に柔軟な関数を表現できます。
多項式カーネル
$$ k(x, x’) = (x^\top x’ + c)^d $$
$d$ 次までの多項式を含む関数空間に対応します。
Pythonでの実装
代表的なカーネル関数とそのグラム行列を計算・可視化します。
import numpy as np
import matplotlib.pyplot as plt
def linear_kernel(X1, X2):
"""線形カーネル"""
return X1 @ X2.T
def rbf_kernel(X1, X2, sigma=1.0):
"""RBF(ガウス)カーネル"""
sq_dists = np.sum(X1**2, axis=1, keepdims=True) + \
np.sum(X2**2, axis=1, keepdims=True).T - \
2 * X1 @ X2.T
return np.exp(-sq_dists / (2 * sigma**2))
def polynomial_kernel(X1, X2, degree=3, c=1.0):
"""多項式カーネル"""
return (X1 @ X2.T + c) ** degree
# データ点の生成
np.random.seed(42)
n = 50
X = np.sort(np.random.uniform(-3, 3, n)).reshape(-1, 1)
# 各カーネルのグラム行列を計算
kernels = {
'Linear': linear_kernel(X, X),
'RBF ($\sigma=0.5$)': rbf_kernel(X, X, sigma=0.5),
'RBF ($\sigma=1.0$)': rbf_kernel(X, X, sigma=1.0),
'Polynomial (d=3)': polynomial_kernel(X, X, degree=3),
}
# グラム行列の可視化
fig, axes = plt.subplots(1, 4, figsize=(16, 4))
for ax, (name, K) in zip(axes, kernels.items()):
im = ax.imshow(K, cmap='viridis', aspect='equal')
ax.set_title(name, fontsize=10)
ax.set_xlabel('Data index')
ax.set_ylabel('Data index')
plt.colorbar(im, ax=ax, fraction=0.046)
plt.suptitle('Gram Matrices for Different Kernels', fontsize=13)
plt.tight_layout()
plt.show()
# RKHSの再生性の数値的検証
# k(x, x') = <k(., x), k(., x')> を検証
sigma = 1.0
K = rbf_kernel(X, X, sigma=sigma)
# 任意の2点 x_i, x_j を選ぶ
i, j = 10, 30
# カーネル関数の直接計算
k_direct = K[i, j]
# グラム行列を用いた内積近似(有限次元近似)
# K = V Lambda V^T(固有値分解)
eigenvalues, eigenvectors = np.linalg.eigh(K)
# 正の固有値のみ使用
pos_idx = eigenvalues > 1e-10
Lambda = eigenvalues[pos_idx]
V = eigenvectors[:, pos_idx]
# RKHS内の特徴ベクトル
Phi = V * np.sqrt(Lambda)
# 内積による計算
k_inner = Phi[i] @ Phi[j]
print(f"k(x_i, x_j) 直接計算: {k_direct:.6f}")
print(f"<phi(x_i), phi(x_j)> 内積計算: {k_inner:.6f}")
print(f"差: {abs(k_direct - k_inner):.2e}")
このコードでは、異なるカーネル関数のグラム行列を可視化し、RBFカーネルについてRKHSの再生性(カーネル値が内積として計算できること)を数値的に検証しています。
まとめ
本記事では、再生核ヒルベルト空間(RKHS)の基本概念について解説しました。
- RKHSは評価汎関数が連続なヒルベルト空間であり、特定の点での関数値を安定して取り出せる
- リースの表現定理により、評価汎関数は再生核(カーネル関数)との内積で表される
- カーネル関数の値はRKHS内での内積として解釈でき、これが「カーネルトリック」の数学的基盤となる
- ムーア-アロンシャインの定理により、正定値カーネルからRKHSが一意に構成される
RKHSの理論は、ガウス過程回帰、カーネルSVM、カーネル主成分分析など、カーネル法全般の数学的基盤を提供します。