めもめも

このブログに記載の内容は個人の見解であり、必ずしも所属組織の立場、戦略、意見を代表するものではありません。

Lagrangeの『解析力学』についての現代的視点によるメモ

何の話かというと

古典力学の形成―ニュートンからラグランジュへ

古典力学の形成―ニュートンからラグランジュへ

上記の書籍において、1788年(初版)/1811年(第2版)に出版された、Lagrangeによるオリジナルの『解析力学』についての解説がなされています。その中で説明されている、力学の根本原理となる「動力学の基本方程式」、および、それと等価な「最小作用の原理」は、現代の教科書で言うところの「d'Alembertの原理」「最小作用の原理」に相当するものですが、記述方法やその意味内容は、現代のものとは異なっており、一見すると意味不明、もしくは、単純に誤っているようにも見えてしまいます。

ここでは、これらを現代的な視点で理解しなおすための議論を行います。

動力学の基本方程式

冒頭の書籍の第17章・§2では、初版の『解析力学』において、次のような記述がなされているとの解説があります。途中の導出は省略して、結論を述べると次のようになります。(簡単のために、外力は1つの場合で記述します。)

-----
直交座標系において、質量 m の物体に、大きさ mP の外力とその他の未知の束縛力が加わっており、この物体は加速度 \ddot x,\,\ddot y,\,\ddot z を持つものとする。この時、この物体に束縛条件を満たす方向への微小変位 \delta x,\,\delta y,\,\delta z を与えると次の関係が成り立つ。

m(\ddot x\delta x + \ddot y\delta y + \ddot z\delta z) + mP\delta p = 0 --- (1)

ここに、\delta p は、外力の中心と物体の距離 p に対する変位を表わす。
-----

さあ、これはいったい何を意味しているのでしょうか。

まず、「外力の中心」というのは、外力の方向を示すものになります。今、この「外力の中心」の座標を \mathbf c=(a,b,c)、物体の座標を \mathbf x = (x,y,z) とすると、ベクトル \mathbf p = \mathbf c-\mathbf x は外力の方向を向いているので、

\displaystyle p=\left|\mathbf p\right|=\sqrt{(x-a)^2+(y-b)^2+(z-c)^2} --- (2)

として、外力を表わすベクトルは、

\displaystyle \mathbf F = mP \frac{\mathbf p}{p} --- (3)

と決まります。一方、(2) を変分すると、直接計算により、

\displaystyle \delta p = \frac{1}{2p}\times 2\left\{(x-a)\delta x + (y-b)\delta y+(z-c)\delta z\right\} = -\frac{\mathbf p}{p}\cdot \delta\mathbf x

が得られます。従って、(3) を用いて、

\displaystyle mP\delta p = -mP\frac{\mathbf p}{p}\cdot\delta\mathbf x = -\mathbf F\cdot\delta\mathbf x

という関係が得られます。これを (1) に代入して、現代的な記法に直すと、結局、次の関係が得られます。

m\ddot{\mathbf x}\cdot\delta\mathbf x = \mathbf F\cdot\delta\mathbf x

となります。これは、変分方向(すなわち束縛条件を満たす方向)の運動方程式にほかならず、束縛系においては、束縛条件を満たす方向の外力成分によって物体の運動が決まるというよく知られた事実を示しています。

ちなみに、この関係は、束縛力を陽に用いるのであれば、次のように導くことも可能です。まず、束縛力を \mathbf N として(束縛条件を考慮しない)運動方程式を記述すると、

m\ddot{\mathbf x}=\mathbf F+\mathbf N

となります。これに、束縛条件を満たす方向の変位 \delta \mathbf x を掛けると、これは、束縛力に直行する方向になるので、\mathbf N\cdot\delta \mathbf x=0 であることから、

m\ddot{\mathbf x}\cdot\delta\mathbf x = \mathbf F\cdot\delta\mathbf x

が得られます。このような意味において、先ほどの (1) は束縛系における運動方程式と等価であることが理解できます。

最小作用の原理

冒頭の書籍では、第15章・§2において、1760年にLagrangeが発表した論文『動力学の諸問題の解のための先の論文において表明された方法の応用』に記載された最小作用の原理、また、第17章・§2では、先ほどのLagrange の『解析力学』に記載された最小作用の原理の導出が説明されています。これは、次のような原理です。(簡単のために質点が1つの場合で記述します。)

-----
\displaystyle\delta\left(m\int_A^Bu\,ds\right)=0 --- (4)
-----

これは、少しばかり記号の説明が必要です。u は質点の速さ、s は質点が移動した距離(道のりの長さ)で、質点の移動経路にそった積分を行います。ここで、\displaystyle u=\frac{ds}{dt} という関係を使うと上記の積分は、

\displaystyle\int_A^Bu\,ds=\int_{t_0}^{t_1}u^2\,dt=\int_{t_0}^{t_1}\dot{\mathbf x}^2\,dt

と書き直すことができます。従って、(4) は次と等価になります。

\displaystyle\delta\left(\int_{t_0}^{t_1}\frac{m}{2}\dot{\mathbf x}^2\,dt\right)=0 --- (4')

これは、運動エネルギーの積分が極値をとるものと解釈できますが、現代の解析力学とは明らかに矛盾する内容です。なぜなら、ラグランジュ方程式を通して分かるように、ラグランジアンを

\displaystyle L=\frac{m}{2}\dot{\mathbf x}^2-U(\mathbf x)

とおいて、作用積分を

\displaystyle S = \int_{t_0}^{t_1}L\,dt = \int_{t_0}^{t_1}\left\{\frac{m}{2}\dot{\mathbf x}^2-U(\mathbf x)\right\}\,dt

と定義した際に、これが極値をとる事、すなわち、

\displaystyle\delta S=0 --- (5)

が運動方程式と等価になるからです。本来必要なポテンシャル項 U(\mathbf x) が (4) には欠けているのです。

実は、この矛盾の原因は、(4) における変分の取り方にあります。現在の最小作用の原理 (5) では、任意の変分 \delta\mathbf x に対して極値をとることが条件となりますが、(4) の変分では、「エネルギー保存則を保つ変分」という特殊な条件が付けられているのです。この条件を理解するために、まず、現代的な最小作用の原理を簡単に導出しておきます。ポイントは次の恒等式です。

\displaystyle\frac{d}{dt}\left(\dot{\mathbf x}\cdot\delta\mathbf x\right) = \ddot{\mathbf x}\cdot\delta\mathbf x+\dot{\mathbf x}\cdot\delta\dot{\mathbf x} --- (6)

上式の両辺に m を掛けると、右辺の第1項は、運動方程式を用いて、

\displaystyle m\ddot{\mathbf x}\cdot\delta\mathbf x=\mathbf F\cdot\delta\mathbf x=-\frac{\partial U}{\partial \mathbf x}\cdot\delta{\mathbf x}=-\delta U(\mathbf x)

と変形できます。同じく、右辺の第2項は、

\displaystyle m\dot{\mathbf x}\cdot\delta\dot{\mathbf x} = \frac{m}{2}\delta\left(\dot{\mathbf x}^2\right)

と変形できます。これらを (6) に適用すると、

\displaystyle \frac{d}{dt}\left(m\dot{\mathbf x}\cdot\delta\mathbf x\right) = -\delta U(\mathbf x) + \delta\left(\frac{m}{2}\dot{\mathbf x}^2\right) --- (7)

が得られます。この両辺を時間 t で積分すると、\delta\mathbf x(t_0)=\delta\mathbf x(t_1)=0 という境界条件の元に、

\displaystyle\delta \int_{t_0}^{t_1}\left\{\frac{m}{2}\dot{\mathbf x}^2-U(\mathbf x)\right\}\,dt = 0

となり、現在の最小作用の原理が導かれます。

一方、Lagrangeが用いた、「エネルギー保存則を保つ変分」というのは、現代的な記号を用いると、

\displaystyle\frac{m}{2}\dot{\mathbf x}^2 + U(\mathbf x) = {\rm Const.}

の両辺を形式的に変分して得られる、

\displaystyle\delta \left(\frac{m}{2}\dot{\mathbf x}^2\right)+\delta U(\mathbf x)=0 --- (8)

という関係です。この条件(正確に言うと、(8) を満たす変分 \delta \mathbf x に限定するという制約条件)を先ほどの (7) に適用すると、ポテンシャルの変分 \delta U(\mathbf x) が消去できて、

\displaystyle \frac{d}{dt}\left(m\dot{\mathbf x}\cdot\delta\mathbf x\right) = 2 \delta\left(\frac{m}{2}\dot{\mathbf x}^2\right)

という関係が得られます。これを時間 t で積分することにより、冒頭の (4') が得られるというわけです。

しかしながら、ここで、(8) の物理的な意味を考えると、これはかなり特殊な制約条件のような気もします。(この点は、冒頭の書籍では特に指摘されていません。)「エネルギー保存則を保つ変分」ということは、変分を取る前の経路 \mathbf x(t) はエネルギー保存則を満たす経路であり、さらに変分を取った後の経路 \mathbf x(t)+\delta\mathbf x(t) もエネルギー保存則を満たす経路であるという条件になります。具体例で考えると、これは、どのような経路なのでしょうか。たとえば、ポテンシャルが U(\mathbf x)=0 の自由粒子を考えると、物理的に正しい経路は、\mathbf v_0 を定ベクトルとして、 \dot{\mathbf x}(t) = \mathbf v_0 を満たします。従って、(8) の左辺は、

\displaystyle\delta \left(\frac{m}{2}\dot{\mathbf x}^2\right)=m\dot{\mathbf x}\cdot\delta\dot{\mathbf x} = m\mathbf v_0\cdot\delta\dot{\mathbf x}

となり、(8) を満たす変分 \delta\dot{\mathbf x}(t) は定ベクトル \mathbf v_0 に直行する方向に限定されます。1次元系であれば、これより、\delta\dot{\mathbf x}(t)=0 となり、境界条件 \delta\mathbf x(t_0)=\delta\mathbf x(t_1)=0 を考慮すると、これを満たす変分は \delta\mathbf x(t) = 0 しか無くなります。2次元以上であれば、経路 \mathbf x(t)+\delta\mathbf x(t) は、速さ(速度ベクトルの大きさ)を変えずに曲線を描いて、始点と終点で \mathbf x(t) に一致する経路になります。(速度ベクトルの微小変化 \delta\dot{\mathbf x}(t) が速度ベクトルに直行するということは、速度ベクトルは(2次以上の変化を無視して)大きさを変えずに微小回転するということですよね。)微小変位に限定せずに考えると、結局のところ、運動エネルギーが保存されるという条件だけを課して(運動方程式は無視して)自由に移動して構わない、という意味になります。

それでは、一般のポテンシャル項を持つ場合はどうなるでしょうか? 先と同様に (8) を変形すると、

\displaystyle m\dot{\mathbf x}(t)\cdot\delta\dot{\mathbf x}(t)=-\frac{\partial U}{\partial \mathbf x}\left(\mathbf x(t)\right)\cdot\delta\mathbf x(t)

という関係が得られます。これを関数 \delta\mathbf x(t) についての t に関する微分方程式と見なして、境界条件 \delta\mathbf x(t_0)=\delta\mathbf x(t_1)=0 の下に解いたものが、許容される変分 \delta\mathbf x(t) という事になります。(この際、既知の正しい経路 \mathbf x(t) とその経路に沿った外力 \displaystyle -\frac{\partial U}{\partial \mathbf x}\left(\mathbf x(t)\right) は事前に与えられた固定関数とみなします。)これを一般的に解くのはつらそうですが、「エネルギー保存則を保つ」という意味を考えると、始点と終点で \mathbf x(t) に一致する任意の経路を考えて、全エネルギーが保存するように、経路上の各点における速さを調整する(t に対する依存性を調整する)ことで、新しい経路 \mathbf x(t)+\delta\mathbf x(t) が得られるものと予想されます。

つまり、Lagrangeが導いた最小作用の原理 (4) は、暗黙の前提としてエネルギー保存則を(本来の経路が必ず満たすべき)根本原理と見なした上で、「エネルギー保存則を満たすあらゆる経路の中で、運動エネルギーの積分が最小になるものが実際の経路として実現される」という事を主張していることになります。エネルギー保存則を根本原理とはせずに、「エネルギー保存則が満たされるべき」という暗黙の前提を取り払うためには、作用積分にポテンシャル項を加える必要があった、というのが現代的な最小作用の原理からの見方と言えるでしょう。

ちなみに、冒頭の書籍によると、Lagrange自身は、(1) を基礎方程式として議論を進めており、最小作用の原理はあくまで形式的に成り立つものと解釈していたようです。つまり、それまでは形而上学的に捉えられていた最小作用の原理に対して、あくまで、基礎方程式から得られる形式的な帰結であることを指摘する事が目的だという事です。実際、この後の議論では、(1) を用いて、我々のよく知るラグランジュ方程式を導いており、この(現代的な視点では)限定的な最小作用の原理によって、この後の議論に不都合が生じるということはなかったと考えるのが良さそうです。

ただ、そうなると、ラグランジアンを用いた現代的な最小作用の原理 (5) を最初に記したのはいったい誰なのか、という歴史上の疑問が湧き上がります。この点、何かご存知の方がいれば、教えていただけると幸いです。

PRML Figure 8.30 を再現するコード

2次元のイジングモデルに対して、背後からノイズ混じりの画像データを入力します。各スピンは、画像データと同じ方向を向こうとする影響力 C と周りのスピンと同じ方向を向こうとする影響力 J を受けるため、孤立したノイズを除去する効果が得られます。

i 番目のスピン S_i のエネルギーは次式で定義されます。j についての和は、周りの4個のスピンについての和になります。

\displaystyle E(S_i) = -HS_i - J \sum_ {j=1}^4 S_i S_ j - CS_ i X_ i


Image de-noising with Ising model

詳しい説明はこちらも参照

speakerdeck.com

機械学習におけるカーネル法について

何の話かというと

機械学習におけるカーネル法の説明で、よく登場するのがこちらの図です。

左側の (x, y) 平面上の点を分類する場合、このままだと線形分類器(直線で分類するアルゴリズム)ではうまく分類できないのが、右図のように z 軸を追加してデータを変形すると、平面できれいに分割できるようになって、線形分類器による分類がうまくいくというものです。このように、高次元空間にデータを埋め込むことでうまいこと分類するのがカーネル法の仕組みだというわけです。

なのですが・・・・・・・・・・・・・・・・・・・・

これ、本当にカーネル法の原理を知っている方には、ちょっと気持ち悪くないですか?

※ 以下はカーネル法を知っている方向けのつぶやきです。

  • 上記の例は、データの配置にあわせて、うまいこと z 軸方向の変形をしているのでうまくいっているのですが、カーネル法には、データの配置にあわせてうまいこと変形するような仕組みは組み込まれていません。なので、この説明だけでは、なぜ、カーネル法がうまく機能するかという本質が実はまったく見えないです。
  • カーネル法は、最適化問題を双対問題に置き換えて解くという解法に特徴があって、その結果として得られる解は、「学習データについての和を取る」という非常に特殊な形式をしています。そのため、学習データが多い場合は、予測時の計算量が大きくなるという課題を持っています。このあたりの特性を抜きにして、「高次元空間を使って解くのがカーネル法」とさらっと言われると、ものすごく気持ち悪いですよね。。。

というわけで、実際の所、カーネル法が何をやっているのかをできるかぎり正確に説明した上で、なぜ、カーネル法がうまく機能するのかをがんばって説明しようというのがこのエントリーです。

なお、以下の説明では、特徴量はすべて数値型データだとします。カテゴリーデータは取り扱い対象外とします。

特徴量エンジニアリングについて

現実の機械学習モデルを作る場合、ナマの学習データ x_1,x_2,\cdots をそのまますべてモデルに入力するということは、それほど多くはありません。予測したい内容やデータに対する既知の知見を活用して、予測に影響を与えるデータを選択したり、複数のデータを組み合わせて事前に計算した結果を入力値に使うということをします。このような作業を一般に「特徴量エンジニアリング」と言います。冒頭の例であれば、x,y をモデルに入力する代わりに、z=x^2+y^2 を入力すれば、z のある値を境にして2種類のデータがきれい分類できるということになります。

特徴量エンジニアリングの自動化問題

冒頭の例であれば、元のグラフをじーーーーーっと眺めれば、数学の心得がある人であれば、z=x^2+y^2 を使えばいいじゃん!というのはすぐに分かります。しかしながら、現実のデータセットでは、グラフをじーーーーっと眺めただけで思いつくようなことはほとんどありえません。というか、そもそもグラフを描くこと自体がつらいです。従って、データが本来的にもっているであろう性質やら、過去の試行錯誤の経験を元に、手探りで特徴量エンジニアリングを進めていくことになります。

だったら、いっその事、考えられる計算式を全部自動で構成して、うまくいくやつを自動的に発見するような仕組みをつくってしまえば・・・という気にもなります。たとえば、scikit-learn には、sklearn.preprocessing.PolynomialFeatures という関数が用意されており、これを用いると、学習データに対して、指定した次数までの積を自動で構成することができます。(x, y に対して、2次を指定すると、x^2, y^2, xy の3種類の特徴量が出てきます。)さらに、Feature selection の機能を使うと、ここからデータの特性をよりよく反映するであろう特徴量を自動で選択するということもできます。

とはいえ・・・・・・・・・・・・

これもまた容易に想像できることですが、もともとの変数の数が多くなると、考えられる組み合わせの数は爆発的に増加します。さらに、先ほどの sklearn.preprocessing.PolynomialFeatures は、単純な変数同士の積をとるだけですが、それ以外のより複雑な関数まで考え出すときりがありません。

特徴量空間とカーネルトリック

というような問題は、一旦、横においておき、ここで一度、「多数の特徴量を用意して、それらをモデルに入力する」という操作をもう少し正確に定義しておきましょう。今、ナマの変数が K 個あるとして、これらを

\mathbf x =\{x_1,x_2,\cdots,x_K\}

と表します。そして、ここから、M 個の特徴量を計算したとします。

\bf \phi =\{\phi_1(\mathbf x),\phi_2(\mathbf x),\cdots,\phi_M(\mathbf x)\}

記号で書くと抽象的ですが、\phi_1(\mathbf x)=x_1^2 とか、\phi_2(\mathbf x)=x_1x_2 のように、それぞれの \phi は、ナマの変数を組み合わせた計算式に過ぎません。ただし、ここでは、M は K に比べて膨大に大きな数であるとします。つまり、膨大な数の組み合わせ計算を用意しているのです。

次に、これまで、\mathbf x =\{x_1,x_2,\cdots,x_K\} を用いて計算していた、素朴な線形モデルを1つ用意します。冒頭のような2項分類問題であれば、SVM(サポートベクターマシン)などでもよいでしょう。そして、これまで、\mathbf x =\{x_1,x_2,\cdots,x_K\} を代入していたところをすべて \mathbf \phi =\{\phi_1(\mathbf x),\phi_2(\mathbf x),\cdots,\phi_M(\mathbf x)\} に置き換えて計算します。ただこれだけです。何も特別なことはしていません。

ただし。。。。従来の素朴な線形モデルの解法に、そのまま \mathbf \phi =\{\phi_1(\mathbf x),\phi_2(\mathbf x),\cdots,\phi_M(\mathbf x)\} を入れると、M がとても大きな数であることから、計算量が膨大になり、大変なことになります。

ここで登場するのが、「カーネルトリック」と呼ばれる解法です。細かいところは適用対象の問題によって変わるのですが、大雑把には、この手法を用いると、次のような特徴を持った「別解」が得られます。

  • 特徴量に関する計算は、すべて、次の形で計算に含まれる。(この関数をカーネル関数と呼びます。)

K(\mathbf x, \mathbf y) =\sum_{m=1}^M\phi_m(\mathbf x)\phi_m(\mathbf y) ---- (1)

  • 計算量は M ではなく、トレーニングセットのデータ数 N に依存する。(従って、M が大きくても、N が小さければ計算量は問題にならない。)

たとえば、前述の SVM であれば、大雑把には、次のような形の解が得られます。

 f(\mathbf x) = \sum_{n=1}^N\alpha_nK(\mathbf x,\mathbf x_n) ---- (2)

ここでは、関数 f(\mathbf x) の符号によって、点 \mathbf x にある新しいデータのラベル t=\pm 1 が予測できると考えてください。また、係数 \alpha_n は、事前に、ある最適化問題(双対問題と呼ばれます)の解として、値が決まります。

これで、無事に M が膨大な場合でも適用できる解法が見つかりました。めでたしめでたし・・・・・・。

な、わけがありませんね。

カーネルの決定方法

上記の説明だけをさらっと読むと、めでたく問題が解決された気になりますが、実は、そんなことはありません。まず (1) をどうやって計算するのかという問題が残っています。M が膨大という前提なので、この計算は大変です。また、そもそも、\bf \phi =\{\phi_1(\mathbf x),\phi_2(\mathbf x),\cdots,\phi_M(\mathbf x)\} を具体的にどう設定するかという、特徴量エンジニアリングに関する根本の問題が残っています。大量の組み合わせを使えると言っても、実際、どういう関数を持っているのがよいのか、何か指針が必要です。

実は、実際にカーネル法を利用する場合は、この点について、おどろくべき斬新な解決策を持ち出します。

関数 K(\mathbf x,\mathbf y) を適当に手で決めるのです。

えーーーーーーー。

っと思うでしょう。

ふふふふふふふふふ。

大部分のカーネル法の解説では、このとんでもない飛躍があまりにもさらっと流されるので、みなさん、意味がわからなくなるのではないでしょうか?

順を追って説明しましょう。

まず、関数 K(\mathbf x,\mathbf y) を適当に決めた時、これがある一定の条件を満たしていれば、何らかの \bf \phi =\{\phi_1(\mathbf x),\phi_2(\mathbf x),\cdots,\phi_M(\mathbf x)\} を用いて、(1) の形でその関数が書き表せることが数学的に証明されています。たとえば、よく使われるガウスカーネル

K(\mathbf x,\mathbf y)=\exp\left(-\frac{|\mathbf x - \mathbf y|^2}{2\sigma^2}\right) ---- (3)

の場合、後で説明するように、なんと、無限個の \phi_1(\mathbf x),\phi_2(\mathbf x),\cdots を用いて、K(\mathbf x,\mathbf y) が構成されることがわかります。

従って、とりあえず、(3) のカーネルを用いて、先ほどの解法を適用すれば、謎の無限個の特徴量を用いて SVM を実行した場合と同等の結果が得られます。「無限個の特徴量」の正体が気になりますが、思い切り割り切って考えるならば、「無限個の特徴量があれば、きっと有用な特徴量もいっぱい含まれているに違いない」と期待することができます。つまり、あまり深く考えずに、とりあえずガウスカーネルを突っ込んでおけば、ナマの変数を用いた線形 SVM よりはずっとよい結果が期待できるというわけです。

ガウスカーネルに対応する特徴変数

・・・と、ここで終わると、「そんな適当なことでいいんかい?」とモヤモヤする人もいると思うので、先ほどのガウスカーネルの正体を説明します。

先に答えを言うと、無限個の \phi(\mathbf x) は、ナマのパラメーター空間 \mathbf x 上の点 \mathbf r をパラメーターとして、

 \phi_{\mathbf r}(\mathbf x) = C\exp\left(-\frac{|\mathbf x-\mathbf r|^2}{2\sigma^2}\right) ---- (4)

で与えられます。 C は適当な定数値です。1次元の場合の証明が、こちらにあるので参考にしてください。多次元の場合も計算方法は同じです。

(4) は、点 \mathbf r を頂点とする山形の関数です。冒頭のシンプルな例で登場した z=x^2+y^2 は原点を頂点とした(上下逆さまの)山形ですが、これと同様の山形の値を持った新しい座標をすべての点について用意していることになります。

ここで、すべての点を z 軸方向に持ち上げているわけではない点に注意してください。\phi_1,\phi_2,\cdots はすべて異なる座標軸ですので、これはつまり、すべての点 \mathbf x=\mathbf r をそれぞれに別の次元方向に引き伸ばしているのです。

・・・・・・? どういうこと?

と思った方は・・・すいません。。。。無限次元空間が脳内に想像できないタイプの方のようなので、次の一節はこらえて読み飛ばしてください。。。。

無限次元空間が脳内に想像できる方は、もう、お分かりかと思います。すべての点を別の次元方向に伸ばしているということは、この無限次元空間であれば、すべての点を完璧に区別できてしまうのです。これなら、どれほど複雑なデータ配置であっても、線形関数で完璧に分離することができることになります。無限次元ってすごいなぁ。。。

もう少し違う見方をしてみましょう。

いま、ある点 \mathbf x=\mathbf x_0 の周りに、トレーニングセットのデータ \mathbf x_1,\mathbf x_2,\cdots がばら撒かれていたとします。この時、先ほどの無限次元空間の座標を用いて、どのデータが一番近いかを判別することができます。\phi_{\mathbf x_1}(\mathbf x_0),\phi_{\mathbf x_2}(\mathbf x_0),\cdots の中で、値が一番大きいものを見つければよいのです。つまり、この無限次元空間の座標を利用すると、実質的にk近傍法が実装できるのです。

実際、先に紹介した (2) の解は、k近傍法とほぼ同等になっています。K(\mathbf x,\mathbf x_n) は2点 \mathbf x, \mathbf x_n の距離が近いほど大きな値をとります。従って、係数 \alpha_n をトレーニングデータ \mathbf x_n のラベル値 t_n=\pm 1 と同じ符号にしておけば、各トレーニングデータに対して、近くにあるもののラベルをより大きな重みで参照して、点 \mathbf x のラベル値を予測しているということになります。また、カーネル関数に含まれるパラメーター \sigma を大きくすると、より遠くのデータまで参照することになるので、これは、k近傍法における、kの値を大きくすることと同等の効果になります。

なーーーーんだ。そういうことなのか。。。。。

はい。そういうことです。上記は2項分類の場合ですが、回帰問題であれば、\alpha_n をトレーニングデータ \mathbf x_n のラベル値 t_n に比例するようにして、適切な定数で割り算して正規化しておけば、近くのデータとなるべく同じ値をとるように予測することになります。前述の双対問題を解くと、結果として、そんな感じの \alpha_n が決まります。

ただ、ガウスカーネルの場合は特に極端で、先の \sigma を思い切り小さくすれば、k 近傍法で k=1 とした場合と同じで、いくらでもオーバーフィットさせることができてしまいます。なので、実際には、オーバーフィットしないように、\sigma を適度に調整する必要があります。いわゆるハイパーパラメーターチューニングです。

あるいは、データの特性に応じて、ガウスカーネルとは異なる関数をカーネルに用いた方が、より汎化性能が高い結果が得られる可能性も十分にあります。結局、この部分に関しては、絶対的な解法はなくて、問題領域ごとに、適切なカーネルを見つけていくという人手の作業は残るということになります。ただ、(2) の形が本質的にk近傍法と同等なのは変わりなく、トレーニングデータとの「距離」K(\mathbf x,\mathbf x_n) によって、点 \mathbf x のラベルを判断しているという事実は変わりません。ガウスカーネルの場合は、2点のユークリッド距離が近ければ、データのラベルも同じ可能性が高いと判断するわけですが、この仮説は常に正しいとは限りません。データの類似度が高くなる場所について、K(\mathbf x,\mathbf x_n) の値が大きくなるような関数をうまく選べば・・・・って、それがどんな場所だか分からないから苦労しているわけなんですが。ぐぬぬぬぬ(*)。

(*) 時系列データで24時間周期の周期性があるとかが、事前知識として分かっている場合は、時間軸方向に24時間周期の関数を用いるとか、そんなテクニックは考えられます。こういうドメインナレッジをいかにしてカーネル関数に注入するかが、現実的には、カーネル法の肝になります。もしくは、こういうドメインナレッジをカーネル関数を通して、うまく注入できるところが、カーネル法のメリットと言えるかも知れません。

あと、ちなみに、(2) はトレーニングデータの和になっているので、当然ながら、トレーニングデータが膨大にある場合は、予測処理そのものの計算量が膨大になってしまいます。これもk近傍法と同じ課題ですね。