logo

機械学習における政府号カーネルと再生カーネルのヒルベルト空間 📂機械学習

機械学習における政府号カーネルと再生カーネルのヒルベルト空間

定義 1 2

入力空間input space XX \ne \emptyset定義域であり値域が複素数集合 C\mathbb{C} の写像 f:XCf: X \to \mathbb{C} で構成される関数空間 (H,<,>)CX\left( H , \left< \cdot , \cdot \right> \right) \subset \mathbb{C}^{X}ヒルベルト空間であるとする。

再生核ヒルベルト空間

  1. 固定された一つのデータdatum xXx \in X に対して、関数 fHf \in H を取り出す汎関数 δx:HC\delta_{x} : H \to \mathbb{C} を**xx における(ディラックの)評価汎関数**(Dirac) Evaluation Functional at xxという。 δx(f):=f(x) \delta_{x} (f) := f (x)
  2. 全ての xXx \in X において評価汎関数 δx\delta_{x}連続である場合、HH再生核ヒルベルト空間rKHS, Reproducing Kernel Hilbert spaceと呼び、HkH_{k} と表記することもある。
  3. 関数 k:X×XCk : X \times X \to \mathbb{C} が以下の二つの条件を満たす場合、HH再生核reproducing Kernelという。
    • (i): 表現者representer: 全ての xXx \in X に対して k(,x)H k \left( \cdot , x \right) \in H
    • (ii) 再生性質reproducing Property: 全ての xXx \in X と全ての fHf \in H に対して <f,k(,x)>=f(x)=δx(f) \left< f , k \left( \cdot , x \right) \right> = f(x) = \delta_{x} (f) 特に全ての x1,x2Xx_{1} , x_{2} \in X に対して以下が成立する。 k(x1,x2)=<k(,x2),k(,x1)> k \left( x_{1} , x_{2} \right) = \left< k \left( \cdot , x_{2} \right), k \left( \cdot , x_{1} \right) \right>

正定値カーネル

  1. 入力空間 XX \ne \emptyset からヒルベルト空間 (H,<,>)\left( H , \left< \cdot , \cdot \right> \right) への写像 ϕ:XH\phi : X \to H特徴写像feature Mapと呼ぶ。この文脈では、HH特徴空間featureと呼ぶこともある。
  2. (H,<,>)\left( H , \left< \cdot , \cdot \right> \right) の内積 <,>:H×HC\left< \cdot , \cdot \right> : H \times H \to \mathbb{C} に対して、以下のように定義される関数 k:X×XCk : X \times X \to \mathbb{C}カーネルkernelと呼ぶ。 k(x1,x2):=<ϕ(x1),ϕ(x2)> k \left( x_{1} , x_{2} \right) := \left< \phi \left( x_{1} \right) , \phi \left( x_{2} \right) \right>
  3. mm個のデータdata {x1,,xm}X\left\{ x_{1} , \cdots , x_{m} \right\} \subset X に対して、以下のような行列 KCm×mK \in \mathbb{C}^{m \times m} をカーネル kkグラム行列gram matrixと呼ぶ。 K:=(k(xi,xj))ij K := \left( k \left( x_{i} , x_{j} \right) \right)_{ij}
  4. kk のグラム行列が正定値行列である場合、kk正定値カーネルpositive Definite Kernelと呼ぶ。言い換えると、全ての {c1,,cm}C\left\{ c_{1} , \cdots , c_{m} \right\} \subset \mathbb{C} に対して以下を満たすグラム行列を持つカーネル kk を正定値カーネルと呼ぶ。 i=1mj=1mcicjˉKij0 \sum_{i=1}^{m} \sum_{j=1}^{m} c_{i} \bar{c_{j}} K_{ij} \ge 0

説明

難しい内容だが、できるだけわかりやすく解説してみよう。

データ科学におけるヒルベルト空間の意味

  • ヒルベルト空間内積が定義された完備空間である。通常、数学では内積とは何か特別な意味を持たせずに、単にいくつかの条件を満たす二変数スカラー関数として扱うが、機械学習の文脈では類似性の測定measure of Similarityという概念として考えることができる。実際に、文書間の単語の頻度を比較するために使用されるコサイン類似度も内積を使用しており、別の例として三つのベクトル A:=(3,0,1)B:=(4,1,0)C:=(0,2,5) A := \left( 3, 0, 1 \right) \\ B := \left( 4, 1, 0 \right) \\ C := \left( 0, 2, 5 \right) がある場合、AABB が類似しており、CC とは異なると直感的に理解できる。しかし、これはまだ直感的な推論に過ぎず、内積を通して量化すると以下のようになる。 AB=12+0+0=12AC=0+0+5=5BC=0+2+0=2 A \cdot B = 12 + 0 + 0 = 12 \\ A \cdot C = 0 + 0 + 5 = 5 \\ B \cdot C = 0 + 2 + 0 = 2 単に内積の絶対値が大きいか小さいかを見ただけでも、‘見ればわかる’よりもはるかにデータをよく説明している。
  • 定義で入力空間と呼んでいる XX には特に仮定がないことに注意する。実際のフィールドでは、どのような悪いデータを扱うか保証できない。例えば、XX が写真や文書データの場合、写真同士や文書同士を内積することは意味がない。
    • Q. XX が白黒写真の集合である場合、写真を行列と見なしてピクセルごとの値で内積を取れば良いのではないか?
    • A. それで良く、それが特徴写像 ϕ:XH\phi : X \to H である。この場合、HH は長方形 [a,b]×[c,d][a,b] \times [c,d] で定義された関数の空間となる。
    • このように考えると、カーネルの存在自体が既に’扱いにくいデータ’を私たちがよく知っている空間に持ち込むことと同じである。
  • 上で述べた内積の意味が全て無意味であっても、内積空間ならばノルム空間であり距離空間であるため、私たちが常識的に存在すると考えるほとんどの仮定が成立する。内積 <,>\left< \cdot , \cdot \right> によって導かれるノルム f:=<f,f> \left\| f \right\| := \sqrt{ \left< f , f \right> } があり、ノルム f\left\| f \right\| によってメトリック d(f,g)=fg d (f,g) = \left\| f -g \right\| が導かれる。
    • データ科学の観点からノルムはデータに対する量化そのものである。例えば、白黒写真の全てのピクセルの値を合計した値をノルムとする場合、単にこれだけで写真がどれだけ明るいか暗いかを大まかに評価できる。
    • データ科学の観点から距離は二つのデータがどれだけ異なるかを教えてくれる。正しいか間違っているか、同じか異なるかを区別することは言うまでもなく重要である。
  • これらの理由をすべて抜きにしても、数式を展開していくと内積が必要になる場合がある。関連する例をここにすべて書くと非常に散漫になるので省略する。‘サポートベクターマシン’の投稿のカーネルトリックの節を参照。

なぜ関数空間なのか? これほどまでに難しくなければならないのか?

数学というものはほとんどの応用で「私たちが探している関数」を見つけることである。

これらの例を一つ一つ挙げていくときりがない。再び機械学習に戻って、私たちが関数空間を考える理由は、私たちが探しているものが結局のところ関数だからである。私たちは、その形が明示的explicitではないかもしれないが、私たちが興味を持っているものを入れるinputと、

私たちが望む結果を出すreturn関数を求めている。例えば、数字が書かれた写真を入れたときにその数字を返す、個人情報を入れたときにローンを返済できる確率を計算するなどの関数である。このような役に立つ関数が単純であるはずがなく、それらを知っている関数たちの合成のようなものを探したいと思っている。想像してみてほしい。健康診断の結果データ xx を受け取り、どれだけ健康かを計算してくれる関数を ff とすると、 f()=k=1mαkϕk(xk)() f( \cdot ) = \sum_{k=1}^{m} \alpha_{k} \phi_{k} \left( x_{k} \right)(\cdot) のように有限個の ϕk(x)()\phi_{k} (x) (\cdot)基底basisとして持つ ff を探しているのである。特に ϕ(x)=k(,x)\phi (x) = k (\cdot , x) に対して、ある ff を見つけることができるという命題がまさに表現者定理である。

表現者定理: 再生核ヒルベルト空間内で学習データに適合したfitted任意の関数は、表現者たちの有限の線形結合で表すことができる。

要するに、機械学習(特にサポートベクターマシンの文脈)で私たちが見つけたいものが結局は関数であるため、それらが存在する関数空間について探求することは避けられない。

もちろん、数学的な証明がなければ動かないプログラムはこの世に存在しない。必然的な学問であるとしても、全員に必須というわけではない。数学専攻でなければ、非常に難しいことが普通であり、どうしても難しいと思う場合は大まかに読み飛ばしても良い。

評価関数の前になぜディラックの名前がついているのか?

δx0(x)={1,if x=x00,if xx0 \delta_{x_{0}} (x) = \begin{cases} 1 & , \text{if } x = x_{0} \\ 0 & , \text{if } x \ne x_{0} \end{cases} 元々ディラックのデルタ関数は上記のように一点でのみ値を持つ関数として知られている。正確な定義や用途はともかく、その変形は一点でのみ00でないという点を保持すれば、大抵ディラックの名前がつく。この意味を理解するための例として、二つの関数 f:RRf : \mathbb{R} \to \mathbb{R}, δx0:RR\delta_{x_{0}} : \mathbb{R} \to \mathbb{R} とその内積として <f,δx0>=xRf(x)δx0(x)=f(x0) \left< f, \delta_{x_{0}} \right> = \sum_{x \in \mathbb{R}} f (x) \delta_{x_{0}} (x) = f \left( x_{0} \right) を想像してみる。通常関数の内積には積分を行うが、和ではないことや全ての xRx \in \mathbb{R} に対して加算することが危険であることは理解しているが、最終的には概念と感覚が一致する部分があることがわかる。

このセンスで、δx0(f)\delta_{x_{0}} (f) は上記の議論を隠して単にその結果である x0x_{0} で評価された f(x0)f \left( x_{0} \right) を、’x0x_{0} において一点だけを得る’関数としている。

再生性質と呼ぶ理由

再生核ヒルベルト空間の定義を読むと非常に興味深い。通常、数学で「何かの空間」と言うと、その定義自体が「何か」が存在する空間としているが、RKHSは突然「評価汎関数が全ての点で連続である」というヒルベルト空間として定義されているためである。

リース表現定理: (H,,)\left( H, \left\langle \cdot,\cdot \right\rangle \right)ヒルベルト空間であるとする。HH線形汎関数 fHf \in H^{ \ast }xH\mathbf{x} \in H に対して f(x)=x,wf ( \mathbf{x} ) = \left\langle \mathbf{x} , \mathbf{w} \right\rangleおよびfH=wH\| f \|_{H^{\ast}} = \| \mathbf{w} \|_{H} を満たすwH\mathbf{w} \in H が一意に存在する。

ムーア-アロンサジン定理moore-Aronsajn theorem: 正定値カーネルが存在する場合、それに対応するRKHSが一意に存在する。

この定義によれば、RKHSに再生核が一意に存在するという命題さえ自明ではなく、実際にはリース表現定理によってRKHSに再生核が一意に存在することが保証される。興味深いことに、逆に再生核

に対応するRKHSも一意に存在する。

これで、定義にある数式を一つ一つ詳しく見てみよう。

元々k:X×XCk : X \times X \to \mathbb{C} において、関数kkに入れることができるのはx1,x2Xx_{1}, x_{2} \in Xだが、定義で述べたようにxxを一つ固定すると、kkは実質的にk:yk(y,x)k : y \mapsto k (y,x)となるk:XCk : X \to \mathbb{C}となる。関数として扱う立場からは、片方の入力を塞いだものであり、 <f,k(,x)>=f(x) \left< f , k \left( \cdot , x \right) \right> = f(x) のような表現は、単に二つの関数f():XCf (\cdot) : X \to \mathbb{C}k(,x):XCk \left( \cdot , x \right): X \to \mathbb{C}を内積したものに過ぎない。「それがどうしてffから出てきて、外にある内積がxxとどう関連しているのか…」と複雑に考える必要はない。f(x)Cf(x) \in \mathbb{C}も単に内積の結果であり、値域が複素数集合であるため、出てきた何らかの複素数に過ぎない。

ここで、再生再生, Reproducingという性質の命名について触れておきたい。Reproductionという単語自体が、その生成原理に従ってRe-(再び, 再) -produce(作る, 生)という意味を持ち、その最初の翻訳は繁殖/生殖、二番目の翻訳はコピー/複製、三番目の翻訳は再生である。繁殖は明らかに無意味であり、コピーと言うには元がない。

しかし、f()f(\cdot)k(,x)k (\cdot, x)を内積したときにf(x)f(x)を得るということを、ffが持っていた情報をカーネルによって「再生」したものと考えたらどうだろうか?私たちが時刻ttに依存するYouTubeの動画y(t)y(t)という関数を持っていると想像してみよう。私たちはyyそのものを見るのではなく、ttが増加するにつれて再生される{y(t):t[0,T]}\left\{ y(t) : t \in [0,T] \right\}自体を見ている。このような比喩から、カーネルkkffを関数そのものとしてではなく、関数値を再生してくれる「再生カーネル」と呼ばれる資格がある。

特徴マップと不便な表記について

カーネルと再生カーネルの定義をよく見ると、実際にはこれらは定義のために相互に必要としていないことがわかる。カーネルはカーネルであり、再生カーネルは再生カーネルであり、これらが一致するのは特徴マップfeature Map表現者representerであるとき、つまり ϕ(x)=k(,x) \phi (x) = k \left( \cdot , x \right) のときである。特徴マップはその名の通り、元のデータを私たちが扱いやすい形に変換してくれる変換であり、このような関数たちによって何らかの関数が表されるということは、その関数がデータから来る何らかの特徴featureによって説明されるということと同じである。一つの問題は、ここまで直感的に何となく理解できたとしても、依然としてk(,x)k \left( \cdot , x \right)のような表記が不便であり、特徴マップではなく内積から始まって別々に定義されるカーネルの動機motiveに共感するのが難しいということである。

特徴マップはϕ:XH\phi : X \to Hであるため、その関数値はxXx \in Xに対応する何らかの関数λ:XC\lambda : X \to \mathbb{C}であり、これが通常混乱を招くものではない。ϕ(x)\phi (x)をもっと正確に書くと (ϕ(x))()=k(,x) \left( \phi (x) \right) (\cdot) = k \left( \cdot , x \right) であり、なぜこのようにしてまで点\cdotを保持し、不便な表記を使用するのか疑問に思うかもしれない。ほとんどの人間は、このようにしなかった場合にもっと苦労する例を見ると、理解しやすくなる。前述したように、カーネルであれ再生カーネルであれ、結局私たちが一貫して関心を持っている空間は関数空間HHであり、HHの内積は関数の内積である。まず、ある関数ffがデータ{xi}i=1m\left\{ x_{i} \right\}_{i=1}^{m}の表現者ϕ(xi)\phi \left( x_{i} \right)たちの線形結合として表されるとすると f(y)=i=1mαiϕ(xi)(y)=i=1mαi(ϕ(xi))(y) f (y) = \sum_{i=1}^{m} \alpha_{i} \phi \left( x_{i} \right) (y) = \sum_{i=1}^{m} \alpha_{i} \left( \phi \left( x_{i} \right) \right) (y) となり、すでにかなり複

雑になっていることがわかる。これに新しい関数ggとデータ{xj}j=1n\left\{ x'_{j} \right\}_{j=1}^{n}を考えると g(y)=j=1nβj(ϕ(xj))(y) g (y) = \sum_{j=1}^{n} \beta_{j} \left( \phi \left( x'_{j} \right) \right) (y) となる。一方で、ffggの内積を使わないのであれば、内積空間を考える理由がないが、<f,g>\left< f,g \right>を書くと <f,g>=i=1mj=1nαiˉβj<ϕ(xi),ϕ(xj)> \left< f,g \right> = \sum_{i=1}^{m} \sum_{j=1}^{n} \bar{\alpha_{i}} \beta_{j} \left< \phi \left( x_{i} \right) , \phi \left( x'_{j} \right) \right> となり、余計なものが多くなる。内積をする前には、いずれにせよ関数空間を扱う上でyXy \in Xを実際に扱うことはほとんどなく、内積をした後には、既に知っているϕ\phiと内積を続けて書く必要がある。これを見ると、 f()=i=1mαik(,xi)g()=j=1nβjk(,xj)<f,g>=i=1mj=1nαiˉβjk(xi,xj) f (\cdot) = \sum_{i=1}^{m} \alpha_{i} k \left( \cdot , x_{i} \right) \\ g (\cdot) = \sum_{j=1}^{n} \beta_{j} k \left( \cdot , x'_{j} \right) \\ \left< f,g \right> = \sum_{i=1}^{m} \sum_{j=1}^{n} \bar{\alpha_{i}} \beta_{j} k \left( x_{i} , x'_{j} \right) のような表記が面倒であるだけではないことに気がつくかもしれない。

再生カーネルは正定値である

データ{xk}k=1m\left\{ x_{k} \right\}_{k=1}^{m}が与えられたとすると、kkがカーネルである場合、以下が成立する。 i=1mj=1mαiˉαjk(xi,xj)=i=1mj=1m<αiϕ(xi),αjϕ(xj)>=<i=1mαiϕ(xi),j=1mαjϕ(xj)>=i=1mαiϕ(xi)20 \begin{align*} & \sum_{i=1}^{m} \sum_{j=1}^{m} \bar{\alpha_{i}} \alpha_{j} k \left( x_{i} , x_{j} \right) \\ =& \sum_{i=1}^{m} \sum_{j=1}^{m} \left< \alpha_{i} \phi \left( x_{i} \right) , \alpha_{j} \phi \left( x_{j} \right) \right> \\ =& \left< \sum_{i=1}^{m} \alpha_{i} \phi \left( x_{i} \right) , \sum_{j=1}^{m} \alpha_{j} \phi \left( x_{j} \right) \right> \\ =& \left\| \sum_{i=1}^{m} \alpha_{i} \phi \left( x_{i} \right) \right\|^{2} \\ \ge & 0 \end{align*} 前述したようにϕ:xk(,x)\phi : x \mapsto k (\cdot , x)とすると、再生カーネルkkはカーネルであるため正定値である。このようなカーネルの正定値性は、カーネルに関連するさまざまな性質で自然に現れる。

関数解析以外のカーネル

  • (1) 通常、数学でカーネルと言えば抽象代数のカーネルker\kerを指す。代数構造YY00が定義されている場合、関数f:XYf : X \to Yに対してkerf:=f1({0})\ker f := f^{-1} \left( \left\{ 0 \right\} \right)ffのカーネルと言う。
  • (2) この概念が線形代数で特殊化されたものが線形変換のカーネルである。

カーネルが難しいと感じる場合、関数解析を専攻していない数学者にいきなりカーネルについて聞いても、十中八九(1)の意味で理解するだろう。あなたのバックグラウンドが数学に基づいているならば、当然(1)くらいは知っている必要があり、そうでなくても(2)くらいは知っているべきである。

名前のついたカーネル

機械学習の文脈では、以下のようなカーネルが知られている。3 これらは一見カーネルのように見えないかもしれないが、カーネルの和と積が依然としてカーネルであるという事実を通じて導かれる。

  1. リニアカーネル: k(x1,x2)=<x1,x2> k \left( x_{1} , x_{2} \right) = \left< x_{1} , x_{2} \right>
  2. ポリノミアルカーネル: c0c \ge 0dNd \in \mathbb{N} に対して、 k(x1,x2)=(<x1,x2>+c)d k \left( x_{1} , x_{2} \right) = \left( \left< x_{1} , x_{2} \right> + c \right) ^{d}
  3. ガウシアンカーネル: σ2>0\sigma^{2} > 0 に対して、 k(x1,x2)=exp(x1x22σ2) k \left( x_{1} , x_{2} \right) = \exp \left( - {{ \left\| x_{1} - x_{2} \right\| } \over { 2 \sigma^{2} }} \right)
  4. シグモイドカーネル: w,bCw, b \in \mathbb{C} に対して、 k(x1,x2)=tanh(w<x1,x2>+b) k \left( x_{1} , x_{2} \right) = \tanh \left( w \left< x_{1} , x_{2} \right> + b \right)

  1. Sejdinovic, Gretton. (2014). What is an RKHS?: p7~11. http://www.stats.ox.ac.uk/~sejdinov/teaching/atml14/Theory_2014.pdf ↩︎

  2. Schölkopf. (2001). A Generalized Representer Theorem. https://link.springer.com/chapter/10.1007/3-540-44581-1_27 ↩︎

  3. Jakkula. (2006). Tutorial on Support Vector Machine (SVM). https://course.ccs.neu.edu/cs5100f11/resources/jakkula.pdf ↩︎