5.8 再生核ヒルベルト空間(RKHS)— カーネルが生む「無限次元の魔法」

スムージングスプライン、サポートベクターマシン(SVM)、ガウシアン過程回帰——これらは全く異なる手法のように見える。

しかし、あるひとつの数学的枠組みから見ると、すべて「同じ構造」を持っている。 その枠組みが 再生核ヒルベルト空間(Reproducing Kernel Hilbert Space, RKHS) だ。 このセクションの核心にある「表現定理」と「カーネルトリック」は、現代機械学習を理解するために欠かせない美しいアイデアだ。

無限次元の壁

データから関数を学習するとき、私たちは常に問いに直面する。「正しい関数」とは何か?

直線で近似する?多項式で?スプラインで?それとも…もっと自由に、制約なく、あらゆる関数の中から最適なものを探す?

「あらゆる関数」の空間は無限次元だ。座標軸が無限にある空間を想像してほしい。これは単純な最適化問題では解けない。

無限次元の可能性(多数の曲線)がN個のデータ点によって有限の解に収束する様子
無数の候補関数(カラフルな曲線群)がデータ点によって1本の解に絞り込まれる

だが、ここに深い発見がある。ペナルティ(正則化項)をうまく設計することで、無限次元の問題でも解が存在し、しかもその解はデータ点の数 $N$ に依存した有限次元の形になる。

これが「再生核ヒルベルト空間(RKHS)」の本質的なアイデアだ。カーネルと呼ばれる特殊な関数が、無限次元の関数空間に構造をもたらし、有限次元で解ける形に変換する。

一般的な正則化問題の形:

$$\min_{f \in \mathcal{H}} \left[ \sum_{i=1}^{N} L(y_i, f(x_i)) + \lambda J(f) \right]$$

この枠組みの中で、カーネルはどんな役割を果たすのか。順に見ていこう。

ペナルティが「滑らかさ」を定義する

「複雑さ」をどう測るか。これがペナルティ汎関数 $J(f)$ の設計の核心だ。

ここで「汎関数」という言葉に注意しよう。通常の関数は「数値を入力して数値を返す」が、汎関数は「関数を入力して数値を返す」操作だ。$J(f)$ は関数 $f$ の「複雑さの度合い」を一つの数値にまとめる汎関数だ。

では複雑さをどう測るか。直感的なアイデアはこうだ。音楽で「ドの音」と「ミの音」に分解できるように、関数もフーリエ変換によって「周波数」ごとの成分に分解できる。ギザギザした関数は高周波成分が大きく、滑らかな関数は低周波成分だけが目立つ。

だから、高周波成分を重く罰するペナルティを設定する。

フーリエ空間で高周波成分が重くペナルティされ、滑らかな関数が選ばれる仕組み
上段:実空間の関数(ギザギザ→滑らか)。下段:周波数空間でのバーグラフ(高周波成分=赤=ペナルティ大)
$$J(f) = \int_{\mathbb{R}^d} \frac{|\tilde{f}(s)|^2}{\tilde{G}(s)} \, ds$$

ここで $\tilde{f}$$f$ のフーリエ変換だ。$\tilde{G}(s)$ は低周波で大きく高周波で小さくなる関数と思えばよい。分母に置くことで $1/\tilde{G}$ が高周波で大きくなり、高周波成分が強くペナルティを受ける。

重要な事実:このペナルティのもとで、解は次の形を取る。

$$f(X) = \sum_{k=1}^{K} \alpha_k \phi_k(X) + \sum_{i=1}^{N} \theta_i G(X - x_i)$$

スプラインも薄板スプラインも、この枠組みの特殊ケースだ。ここで出てきた $G$ という関数——次のセクションで見るように、これが「カーネル」の正体に深く関わっている。そして解は無限次元の問題にもかかわらず、有限次元(データ点 $N$ 個に依存)になる。

カーネルが生む関数空間(RKHS)

「カーネル関数」とは何か。直感的に言えば、2点 $x$$y$ の「類似度」を測る関数 $K(x, y)$ だ。

例えばガウシアンカーネル$K(x,y) = e^{-\nu \|x-y\|^2}$ で、近い点ほど値が大きく、遠い点ほど小さい。まさに類似度の感覚に合っている。

正定値カーネル」とは、類似度関数の中でも数学的に扱いやすい性質(任意の点集合に対してカーネル行列が半正定値になる性質)を持つもので、機械学習で広く使われる。このカーネルは固有展開を持つ:

$$K(x, y) = \sum_{i=1}^{\infty} \gamma_i \phi_i(x) \phi_i(y)$$

ここで $\gamma_i \geq 0$$\sum_{i=1}^\infty \gamma_i^2 < \infty$ だ。

カーネルの固有展開:滑らかな第1固有関数から段々波打つ高次の固有関数へ、固有値(縦棒)が小さくなっていく
滑らかな固有関数ほど固有値(縦棒の高さ)が大きく、ギザギザな高次の固有関数ほど小さい

このカーネルが生成する関数空間 $\mathcal{H}_K$(RKHS)の関数は次の展開を持つ:

$$f(x) = \sum_{i=1}^{\infty} c_i \phi_i(x)$$

この空間のノルムは:

$$\|f\|^2_{\mathcal{H}_K} \stackrel{\text{def}}{=} \sum_{i=1}^{\infty} \frac{c_i^2}{\gamma_i} < \infty$$

このノルムが大きいほど「複雑な(コストの高い)関数」を意味する。$\gamma_i$ が小さい高次の固有関数成分 $c_i$ を多く使うと、$c_i^2/\gamma_i$ が大きくなりコストが跳ね上がる。逆に $\gamma_i$ が大きい(滑らかな)成分は安く使える。

「滑らか」な固有関数 $\phi_i$ は大きな固有値 $\gamma_i$ を持ち、ペナルティが小さい。「ギザギザ」な固有関数は小さな固有値を持ち、ペナルティが大きい。

これは直感的だ。固有値の大きな成分は「安く」使える基底、小さな成分は「コストが高い」基底。正則化はこのコストのバランスを調整する仕組みだ。

表現定理 — 解はデータ点の「代表者」だけで作れる

ここが RKHS の最も驚くべき結果だ。

無限次元の関数空間 $\mathcal{H}_K$ 上での最小化問題:

$$\min_{f \in \mathcal{H}_K} \left[ \sum_{i=1}^{N} L(y_i, f(x_i)) + \lambda \|f\|^2_{\mathcal{H}_K} \right]$$

この問題の解は、必ず次の有限次元の形を取る(表現定理):

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

$N$ 個の訓練データ点 $x_i$ を中心とする、$N$ 個のカーネル関数の線形結合だ!

各データ点からカーネル基底関数が立ち上がり、それらが合成されて最終的な解関数が形成される様子
5個のデータ点から各色のカーネル基底が立ち上がり、重ね合わさって解曲線が形成される

なぜ無限次元が有限次元に?鍵は RKHS の「再生性質」にある:

$$\langle K(\cdot, x_i), f \rangle_{\mathcal{H}_K} = f(x_i)$$

$K(\cdot, x_i)$ はデータ点 $x_i$ での関数値を「取り出す」代表者(representer of evaluation)だ。内積を取るだけで関数値が出てくる——これが「再生」の意味だ。

この性質から、ペナルティを最小にしながらデータに合わせるとき、解は $N$ 個の代表者の線形結合で表せることが証明できる。無限次元の探索が、$N$ 個の係数 $\alpha_i$ を決める問題に落ちる。

カーネル行列と最終的な最適化問題

表現定理によって解の形が確定したら、次はその係数 $\alpha_i$ をどう求めるかだ。

ペナルティ項 $J(f)$ を計算すると、カーネル行列を使ってきれいに書ける:

$$J(f) = \sum_{i=1}^{N} \sum_{j=1}^{N} K(x_i, x_j) \alpha_i \alpha_j = \boldsymbol{\alpha}^T \mathbf{K} \boldsymbol{\alpha}$$

ここで $\mathbf{K}$$(i,j)$ 成分が $K(x_i, x_j)$$N \times N$ 行列(カーネル行列)だ。

N個のデータ点からカーネル行列K(N×N)が作られ、無限次元の問題が有限の行列計算に帰着される
左:データ点間の類似度計算。右:対称・対角優位なカーネル行列が完成する

最終的な最適化問題は:

$$\min_{\boldsymbol{\alpha}} L(\mathbf{y}, \mathbf{K}\boldsymbol{\alpha}) + \lambda \boldsymbol{\alpha}^T \mathbf{K} \boldsymbol{\alpha}$$

これは有限次元の問題で、通常のアルゴリズムで解ける。

この現象を機械学習では「カーネルトリック」と呼ぶ。無限次元(あるいは非常に高次元)の特徴空間を直接計算せずに、$N \times N$ のカーネル行列だけで全ての計算が完結する。計算量は $O(N^3)$ で、特徴次元に一切依存しない。

ガウシアンカーネルの世界

最も広く使われるカーネルの一つが、ガウシアン(放射基底関数)カーネルだ:

$$K(x, y) = e^{-\nu \|x - y\|^2}$$

このカーネルを使うと、解は $N$ 個のガウシアン関数の重ね合わせになる:

$$k_m(x) = e^{-\nu \|x - x_m\|^2}, \quad m = 1, \ldots, N$$

各基底関数は訓練データ点 $x_m$ を中心とするガウシアン。係数の推定は:

$$\hat{\boldsymbol{\alpha}} = (\mathbf{K} + \lambda \mathbf{I})^{-1} \mathbf{y}$$
$$\hat{f}(x) = \sum_{j=1}^{N} \hat{\alpha}_j K(x, x_j)$$
N個の訓練データ点それぞれからガウシアン基底関数が膨らみ、重ね合わさって予測曲線を形成する
各データ点から青いガウシアンが膨らみ(Grow)、重ね合わさると緑の予測曲線が現れる

これは空間統計の「クリギング推定」と同じ形だ(空間上の観測値から未知点を補間する手法)。

ガウシアンカーネルの面白さは「暗黙の特徴空間」にある。$K(x,y)$ はデータ間の内積 $\langle \phi(x), \phi(y) \rangle$ として書けるが、その特徴マップ $\phi$ は実は無限次元だ。しかし固有値の大きさが急速に減衰するため、実効次元は劇的に低くなる。

スケールパラメータ $\nu$ が大きいほど基底関数が局所的になり、実効次元が増える。

もう一つの重要な例:多項式カーネル $K(x,y) = (\langle x, y \rangle + 1)^d$ は、次数 $d$ 以下のすべての多項式を張る空間を生成する。計算量が $O(N^3)$ で済み、基底関数の数が非常に多くても効率よく計算できる。

サポートベクター分類器へのつながり

RKHS の枠組みは、12章で学ぶサポートベクターマシン(SVM)の基盤でもある。

2クラス分類問題($y_i \in \{-1, +1\}$)で、解は:

$$f(x) = \alpha_0 + \sum_{i=1}^{N} \alpha_i K(x, x_i)$$

最小化する基準は:

$$\min_{\alpha_0, \boldsymbol{\alpha}} \left\{ \sum_{i=1}^{N} [1 - y_i f(x_i)]_+ + \frac{\lambda}{2} \boldsymbol{\alpha}^T \mathbf{K} \boldsymbol{\alpha} \right\}$$

ここで $[z]_+ = \max(z, 0)$ヒンジ損失)。

カーネルにより非線形な分類境界が描かれ、サポートベクターのみが境界形成に寄与することを示す
線形では分離不可能なデータを、カーネルによる非線形境界が分離。境界付近の点(黄色)がサポートベクター

このヒンジ損失の「区分的にゼロになる性質」により、多くの $\hat{\alpha}_i = 0$ になる。つまり、$\hat{f}$サポートベクター$\hat{\alpha}_i \neq 0$ となる点)のみの線形結合で表される。これが「サポートベクター」という名前の由来だ。

重要な洞察:RKHS の枠組みにより、非線形な決定境界もカーネル関数の選択だけで実現できる。データを高次元(または無限次元)特徴空間に写像した後で線形分類するのと等価だが、特徴空間を陽に計算せずに済む。これが「カーネルトリック」の本質だ。

カーネルの選び方と全体像

ここまで見てきたように、「損失関数」と「カーネル」を組み合わせるだけで、これだけ多彩な手法が一つの枠組みで説明できる。その全体像を整理しよう。

RKHS の枠組みは、損失関数 $L$ とカーネル $K$ の選択によって多様な機械学習手法を統一的に説明する。

異なるカーネルが異なる関数空間(形)を生み、それぞれ異なる予測曲線をもたらすことを3分割で比較
同じデータに対して、多項式カーネル(青)・ガウシアンカーネル(緑)・スプラインカーネル(黄)で異なる予測曲線が生まれる
カーネル $K(x,y)$生成される関数空間
$(\langle x,y \rangle + 1)^d$次数 $d$ 以下の多項式空間
$e^{-\nu \|x-y\|^2}$ガウシアン RBF、実効無限次元
$\|x-y\|^2 \log \|x-y\|$薄板スプライン空間
損失関数 $L$対応する手法
二乗誤差正則化最小二乗(カーネルリッジ回帰)
ヒンジ損失サポートベクターマシン(分類)
$\varepsilon$-感応損失サポートベクター回帰

カーネル選択の意味:

そして何よりも重要なのは計算効率だ。特徴マップ $\phi(x)$ が無限次元(または非常に高次元)でも、カーネル行列 $\mathbf{K}$$N \times N$)だけを計算すれば解ける。計算量は $O(N^3)$ で、特徴次元に依存しない。

これが「カーネルが生む無限次元の魔法」の実態だ。数学的に豊かな無限次元の関数空間を舞台にしながら、実際の計算はデータ点 $N$ 個のスケールで完結する。

12章でサポートベクターマシン(SVM)を詳しく学ぶと、ここで出てきたカーネルトリックとサポートベクターの概念がより具体的で深い形で見えてくる。