パターン認識と機械学習の勉強ノート【1.4 次元の呪い】

深層学習を学ぶシリーズ

こちらの『パターン認識と機械学習』を読んで,勉強したことをまとめていきます.

前回は,1.3節のモデル選択についてまとめました.

今回は,1.4節の次元の呪いです.

次元の呪いとは

次元の呪いとは,

『取り扱う空間の次元が大きくなると,様々な不都合なことが起きてしまう問題』

のことを指します.

以降では,この「不都合なこと」についていくつか述べていきます.

状態の数(場合の数)が爆発的に増加する

パターン認識と機械学習から引用

次元Dが増加すると,考えなければならない状態の数は指数的に増加します.

上の図で行くと,D=1次元のときは一つの軸に対して3つの状態しかなくても,

D=2次元になると,状態数は3×3=9個になります.

また,D=3次元になると,立方体を考えれば状態数は3×3×3=27個になります(上の図の個数を考えるのが面倒なので立方体にしました).

つまり,次元Dに対して状態の数はざっくりM^Dで増加することになります.Mは一つの軸に対する変数の自由度です.例えば,サイズを小,中,大で分割すると,M=3です.

次に,似たような説明になりますが,多項式フィッティングの例を使って説明します.

xに対して3次の多項式

    \[y(\mathbf x, \mathbf w) = w_{0}+\sum_{i=0}^{D}w_{i}x_{i} +\sum_{i=0}^{D}\sum_{j=0}^{D}w_{ij}x_{i}x_{j} +\sum_{i=0}^{D}\sum_{j=0}^{D}\sum_{k=0}^{D}w_{ijk}x_{i}x_{j}x_{k}\]

を,色々な次元Dで考えてみます.

以下のように,M次の係数の数はD^Mで増加します.

D=1のとき,

    \[y(\mathbf x, \mathbf w) = w_{0}+w_{1}x_{1} +w_{11}x_{1}x_{1} +w_{111}x_{1}x_{1}x_{1}\]

例えば,3次の項の係数は1個.全部で4個の係数

D=2のとき,

    \[y(\mathbf x, \mathbf w) =w_{0}+w_{1}x_{1}+w_{2}x_{2}+w_{11}x_{1}x_{1}+w_{12}x_{1}x_{2}+w_{21}x_{2}x_{1}+w_{22}x_{2}x_{2}+w_{111}x_{1}x_{1}x_{1}\]

    \[+w_{112}x_{1}x_{1}x_{2}+w_{122}x_{1}x_{2}x_{2}+w_{222}x_{2}x_{2}x_{2}+w_{121}x_{1}x_{2}x_{1}+w_{221}x_{2}x_{2}x_{1}+w_{211}x_{2}x_{1}x_{1}+w_{212}x_{2}x_{1}x_{2}\]

例えば,3次の項の係数は2^{3}=8個.全部で15個の係数

このように,次元が増えると係数が増え,特徴を探すことが困難になります(機械学習において係数は特徴付けをするものです).

高次元空間ではデータはどう分布するか

高次元になると起こる問題として,あまりにも高次元になると『データの次元が実質的に一つ落ちてしまう』ことがあります.

一見,次元が落ちるのでいいことのように思えますが(ときには本当にいいことかもしれない),この人間の直感にはよくわからないことは,人間によるデータ分析の妨げになることがあります.

高次元球では,中身がスカスカになる

以降で説明するように,3次元の球の体積は半径の3乗に比例しますが,もっと高次元なN次元球の体積は,球の表面に密集し,半径のN-1乗に近くなります.

まず,N次元球の体積は,以下の式で求められます.

N次元球の体積

    \[V_N(r)=\frac{\pi^\frac{N}{2}}{\Gamma(\frac{N}{2}+1)}r^{N}\]

rは半径です.\Gamma(a)はガンマ関数ですが,rによらないので,今は定数だと思っておいてください.

ガンマ関数:\Gamma(z) = \int_{0}^{\infty}t^{z-1}e^{-t}dt

この体積の式の導出は,よく知られたものなので調べればすぐに出てきますから,ここでは省略します.

ちなみに,球の表面積S_N(r)は体積をrで微分したものなので,

    \[S_N(r) = \frac{dV_N(r)}{dr} = N\frac{\pi^\frac{N}{2}}{\Gamma(\frac{N}{2}+1)}r^{N-1}\]

です.

例えば,3次元の場合は,V_3(r)=\frac{4}{3}\pi r^{3}S_3(r)=4\pi r^{2}と,見慣れたものになります.

とにかく,N次元球の体積はr^Nに比例し,N次元球の面積はr^{N-1}に比例することが分かればOKです.

さて,N次元球の体積の表面の性質についてみることにします.

N次元球の半径が\delta rだけ減った,半径r - \delta rの球の体積V_N(r - \delta r)を考えると,半径rの球の体積V_N(r)の差V_N(r)-V_N(r - \delta r)は,\delta rの厚さを持った球殻の体積になります.

その球殻の体積と,全体の球の体積の比を取ると,

    \[\frac{V_N(r)-V_N(r- \delta r)}{V_N(r)}=1-\left( 1-\frac{\delta r}{r} \right)^{N}\]

となります.

そして,たとえrに比べて小さな\delta rを取ったときでも,Nが十分大きいとすると.この式の値はなんと1に近づきます.

つまり,高次元球では球の体積とその球殻の体積はほぼ等しくなります.

体積のほとんどは球殻にあり,球殻以外の中身の部分に体積はほとんど無いということです.

3次元球とか,人間が想像できる球を思い浮かべると,理解しがたい事実ですが,

高次元になると,このような直感に反したことが起こってしまうのです.

この「球の表面付近だけに体積があり,中身はスカスカ」ということは,ほぼ次元が1つ落ちたとも言えます.

なぜなら,体積の次元が一つ落ちたものが,表面積だからです.

ちなみに,ここでは超次元球を考えましたが,高次元の超立方体では,体積は表面でなく,その角に体積が集中します.

このようなことが起きると,いくつかの問題が起きます.

N次元として扱っていたと思っていたのが,じつは裏ではN-1次元になっていた,ということが起きてしまうと,データ分析の時に厄介なことが起きたりするようです.

また,表面にデータが偏ってしまうと,データ間の距離が離れ,状態空間内での関係性が見えにくくなるようです.

この辺に関しては,私はデータ分析の専門家ではないので,あまり下手なことは言えないため,自分で調べて頂けたらと思います.

高次元空間に対する実用的な考え方

高次元空間では状態数が増加したり,次元におかしなことが起きたりしますが,実際のデータ分析では,あまり問題にはならないようです.

その一つ目の理由が,いくらパラメータの数が大きくて,状態空間が大きくなってしまったとしても,現実的な意味のあるデータは低次元領域に存在することが多く,目標変数(ターゲット変数)が重要な変化をする方向は限定されることが多いからです.

例えば,3次元空間にデータが分布していたとしても,実際にはある平面内に分布しているから,平面と平行な方向さえ見ておけばOK,みたいなことです.

また,実データは滑らかな性質を持つことが多いため,入力を少し変えたとしても,目標変数は少ししか変わりません.このようなときには,ローカルな補間を行うことで,目標変数を予測することができます.

まとめ

次元の呪いは,高次元空間になるとデータ分析にいくつかの問題を起こす.

しかし,その問題は実際のデータ分析の妨げにはならないことが多い.

次回は,1.5節の決定理論について述べます.

コメント

タイトルとURLをコピーしました