【カーネル法】無限の空間へワープ!「動径基底関数(RBF)カーネル」の正体を数式で暴く

こんにちは。ゆうせいです。

前回は、SVMの必殺技「カーネル法」についてお話ししました。

「低次元で分けられないなら、高次元空間へワープしてスパッと分ければいいじゃない」

という、マリー・アントワネットもびっくりの大胆な発想でしたね。

そのワープ装置(カーネル関数)の中でも、最強にして最も謎に満ちているのが「動径基底関数(RBF)カーネル」、別名「ガウシアンカーネル」です。

このカーネル、何がすごいかというと、データを「無限次元」の空間に飛ばしてしまうんです。

「は? 無限? SFの話?」

と思いますよね。私も最初はそう思いました。

でも、数式を紐解いていくと、本当に無限個の要素を持つベクトル同士の内積計算をしていることが見えてくるんです。この感動を、ぜひ皆さんにも味わってほしい!

今日は、新人エンジニアのみなさんが、数式アレルギーを起こさないギリギリのラインを攻めつつ、このRBFカーネルが「無限次元への写像」であることを導出してみせます。

ゴール:この式を解剖する

今回のターゲットは、このRBFカーネルの式です。

2つのデータ \mathbf{x}\mathbf{x}' の類似度(カーネル値)を計算する式ですね。

K(\mathbf{x}, \mathbf{x}') = \exp(-\gamma \|\mathbf{x} - \mathbf{x}'\|^2)

  • \exp :ネイピア数 e の指数関数です( e^{\dots} と同じ)。
  • \gamma (ガンマ):カーネルの「感度」を決めるハイパーパラメータです。
  • \|\mathbf{x} - \mathbf{x}'\|^2 :2つのデータの「距離の2乗」です。

この式が、実は「ある特徴写像 \phi(\mathbf{x}) によって変換されたベクトル同士の内積」になっていることを示します。

つまり、

K(\mathbf{x}, \mathbf{x}') = \phi(\mathbf{x}) \cdot \phi(\mathbf{x}')

となるような、魔法の変換 \phi(\mathbf{x}) の正体を暴くのが今日のミッションです。

準備:最強の武器「マクローリン展開」

このミッションをクリアするために、大学数学で習う最強の武器を一つだけ倉庫から取り出してきます。

それは、「マクローリン展開( e^x の級数展開)」です。

「うっ、頭が…」となった方、大丈夫です。難しいことは言いません。

「指数関数 e^A は、実は無限に続く足し算の形に書き直せる」

という事実だけ受け入れてください。

e^A = 1 + A + \frac{A^2}{2!} + \frac{A^3}{3!} + \frac{A^4}{4!} + \cdots = \sum_{n=0}^{\infty} \frac{A^n}{n!}

  • n! は階乗( 3! = 3 \times 2 \times 1 = 6 )です。
  • \sum_{n=0}^{\infty} は「 n を0から無限大まで変えて全部足す」という意味です。

この「無限の足し算」が、のちほど「無限次元」につながる鍵になります。これさえあれば勝てます!

導出ツアーに出発!

では、いよいよ数式を変形していきましょう。

話を単純にするために、データ \mathbf{x}\mathbf{x}' が、ベクトルではなく「1次元の実数(スカラー)」である x, x' として進めます。(多次元でも本質は同じですが、式が複雑になりすぎるので!)

ステップ1:距離の2乗を展開する

まず、ターゲットの式の右肩に乗っている「距離の2乗」の部分を展開します。中学校で習った展開公式 (a-b)^2 = a^2 - 2ab + b^2 ですね。

\|x - x'\|^2 = (x - x')^2 = x^2 - 2xx' + x'^2

これを元の式に戻します。

K(x, x') = \exp(-\gamma(x^2 - 2xx' + x'^2))

ステップ2:指数法則でバラバラにする

次に、指数法則 e^{a+b+c} = e^a e^b e^c を使って、式を3つのパーツに分解します。

K(x, x') = \exp(-\gamma x^2) \times \exp(2\gamma xx') \times \exp(-\gamma x'^2)

ここで、両端の項を見てください。

\exp(-\gamma x^2)x だけの関数、 \exp(-\gamma x'^2)x' だけの関数ですね。

これらを、ちょっと邪魔なので C(x) という定数みたいなものとして置いておきましょう。

C(x) = \exp(-\gamma x^2) とすると、式はこうなります。

K(x, x') = C(x) C(x') \exp(2\gamma xx')

ずいぶんスッキリしました! 勝負は真ん中の項です。

ステップ3:マクローリン展開の発動!

さあ、ここで準備しておいた最強武器「マクローリン展開」を使います。

真ん中の \exp(2\gamma xx') の部分を、無限の足し算に変えてしまいます。

A = 2\gamma xx' だと思って、公式に当てはめます。

\exp(2\gamma xx') = 1 + (2\gamma xx') + \frac{(2\gamma xx')^2}{2!} + \frac{(2\gamma xx')^3}{3!} + \cdots

$= \sum_{n=0}^{\infty} \frac{(2\gamma xx')^n}{n!}$

各項を、 x のグループと x' のグループにきれいに分けてみましょう。

$= \sum_{n=0}^{\infty} \frac{(2\gamma)^n}{n!} x^n x'^n$

$= \sum_{n=0}^{\infty} \left( \sqrt{\frac{(2\gamma)^n}{n!}} x^n \right) \left( \sqrt{\frac{(2\gamma)^n}{n!}} x'^n \right)$

ルートが出てきて少し驚いたかもしれませんが、 a \times b = \sqrt{a} \sqrt{b} \times \sqrt{a} \sqrt{b} のように、同じものを2つ作って内積の形に持ち込みたいからです。

ステップ4:内積の形に整形する(ゴール!)

最後に、避けておいた C(x) たちを戻して、式全体を眺めてみましょう。

K(x, x') = \sum_{n=0}^{\infty} \left( C(x) \sqrt{\frac{(2\gamma)^n}{n!}} x^n \right) \left( C(x') \sqrt{\frac{(2\gamma)^n}{n!}} x'^n \right)

…みなさん、お気づきでしょうか?

この式、よーく見ると、

「( x で作ったある値) \timesx' で作った同じ形の値)」を無限に足し合わせている

という形になっています。

これはまさに、次のような無限次元ベクトル同士の内積そのものです!

\phi(x) = \begin{bmatrix} C(x)\sqrt{\frac{(2\gamma)^0}{0!}}x^0 \\ C(x)\sqrt{\frac{(2\gamma)^1}{1!}}x^1 \\ C(x)\sqrt{\frac{(2\gamma)^2}{2!}}x^2 \\ \vdots \end{bmatrix} = C(x) \begin{bmatrix} 1 \\ \sqrt{2\gamma}x \\ \sqrt{\frac{(2\gamma)^2}{2!}}x^2 \\ \vdots \end{bmatrix}

この無限に続くベクトル \phi(x)\phi(x') の内積を計算すると、元の K(x, x') に戻るのです。

証明終了です! お疲れ様でした!

まとめ:数式の向こうに見える「無限」

いかがでしたか?

RBFカーネルのあのシンプルな式の中に、「無限次元への扉」が隠されていたことが、数式変形を通じて実感できたでしょうか。

  • RBFカーネルは、距離の2乗に基づいている。
  • マクローリン展開を使うと、指数関数は「無限次の多項式の和」になる。
  • それを整理すると、「無限次元ベクトルの内積」の形が現れる!

エンジニアとして、普段は何気なく使っているライブラリの関数ですが、その裏側ではこんなダイナミックな数学のドラマが繰り広げられているんですね。

「無限次元に飛ばす」と言われると魔法みたいですが、実際には「無限個の項を持つ多項式で近似している」と考えると、少し地に足がついた理解ができるかもしれません。

今後の学習の指針

カーネル法はSVMだけでなく、他の機械学習アルゴリズム(例えば、カーネルPCAやガウス過程回帰など)にも応用される強力な武器です。

次は、このカーネル法がディープラーニングとどう関係しているのか、「ニューラルネットワークの層を無限に幅広くしたらどうなるか?」という視点(Neural Tangent Kernelといいます)で調べてみると、さらに面白い世界が広がっていますよ。

それでは、また次回の記事でお会いしましょう!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。