
テセラクトの影で何が失われるか。4次元超立方体を2次元に潰したら、PCAがランダム射影200本の全部に負けた
立体に光を当てると、平面の影ができる。影は本物より情報が少ない——立方体の影が正方形にも六角形にも見えるように、射影は必ず何かを捨てている。では、4次元の物体が3次元に落とす影は、何をどれだけ捨てているのだろう。
題材はテセラクト(tesseract)。4次元の超立方体で、正八胞体とも呼ばれる。「内側に小さい立方体が入った絵」を見たことがある人は多いと思うが、あの絵自体が既に4D→3D→2Dと2回射影された影の影だ。今回はこの射影の各段階で辺の長さ・角度・距離構造がどれだけ歪むかを、次元削減の道具(stress、距離相関)で定量化する。描いて眺めるだけの記事にはしない。
再生ボタンを押すと、xw平面での4次元回転が始まる。内側の立方体が膨らんで外側と入れ替わる、3次元の剛体では絶対に起きない動きだ。これがなぜ「伸び縮み」に見えるのかは、記事の後半で数値で示す。
実験に使ったコードの全文はGitHubに置いています。
テセラクトを4次元座標で作る
作り方は立方体の素直な拡張だ。頂点は の全組み合わせで 個。1座標だけ符号が異なる頂点対を辺とする。次元の面の個数は で数えられて、コードで検証すると
- 頂点 16、辺 32、面(正方形) 24、胞(立方体) 8
と、正八胞体の名前どおりの構成になった。大事な性質はこれだ: 4次元では32本の辺はすべて長さ2で、各頂点に集まる4本の辺はすべて互いに直交(90°)している。完璧に対称な物体なので、射影後に長さや角度がバラついたら、それは全部「射影が付けた嘘」だと言い切れる。
4D→3D: 綺麗に見える透視投影ほど、距離構造を壊していた
射影には大きく2通りある。平行投影(第4座標wをただ捨てる)と、透視投影(視点をw軸上の に置き、遠近法で3D空間へ映す。倍率は )。それぞれで32本の辺の長さと、頂点まわりの角度を全部測った。

平行投影は極端だった。x, y, z方向の24本は長さ2のまま無傷だが、w方向の8本は長さ0に完全に潰れる。16頂点のうち8ペアが同じ点に重なり、見た目はただの立方体になる。ただし生き残った辺同士の角度は全て90°のまま、狂いゼロ。
透視投影は一見ずっと上手にやっている。頂点の重なりはなく、全ての辺が見える。ところが辺の長さは3クラスに割れた。外側の立方体の辺は3.0(元の150%)、内側の立方体は1.5(75%)、2つを繋ぐ8本は1.299(65%)。最大/最小で2.31倍の伸縮差だ。角度はもっと悲惨で、4次元では全部90°だったものが54.7°〜125.3°に散り、90°からの平均ずれは17.6°もある。
では距離構造の保存という土俵で対決させると、どうなるか。物差しを2本用意する。stress-1は、全頂点ペアについて「元の距離」と「射影後の距離」のズレを集計した量で、0なら完全保存。考案者Kruskal自身の目安では、0.05なら良好、0.2を超えると「悪い」とされる。Spearman相関は距離の値そのものではなく、「どのペアが近くて、どのペアが遠いか」という順位がどれだけ守られたかを見る。1なら、たとえ長さが狂っていても遠近の順番だけは無傷、という意味だ。この2本で、16頂点の全120ペアを測った。
| 4D→3D射影 | stress-1 | 距離のSpearman相関 |
|---|---|---|
| 平行投影(8本の辺が消える) | 0.217 | 0.830 |
| 透視投影(全部の辺が見える) | 0.250 | 0.654 |
意外なことに、8本の辺と8組の頂点を完全に潰した平行投影の方が、全体としては距離構造をよく保っていた。透視投影は「全員をなんとか画面に収める」代わりに、全頂点ペアの距離に薄く広く嘘を塗る。平行投影は8ペアに全ての犠牲を押し付けて、残りを無傷にする。メビウスの輪をIsomapが1箇所だけ潰して帳尻を合わせたのと同じ構図が、古典的な射影の時点で既に始まっていた。
4D→2D: 次元削減4手法と、全部に勝つはずだったPCAの惨敗
次は影の影、2次元だ。16頂点の集合をPCA・MDS・Isomap・t-SNEで2次元に埋め込み、4次元の距離構造がどれだけ残るかを測る。テセラクトの頂点間距離は、異なる座標の数 で決まる の4クラスしかない(距離2が32ペア、が48ペア、が32ペア、対蹠点の4が8ペア)。

| 手法 | stress-1 | Spearman相関 | 距離順序の逆転率 |
|---|---|---|---|
| PCA | 0.371 | 0.436 | 27.4% |
| MDS | 0.300 | 0.587 | 21.8% |
| Isomap (k=4) | 0.362 | 0.505 | 27.2% |
| t-SNE (perp=5) | 0.320 | 0.526 | 24.5% |
最良はMDSだが、それでも「4次元で遠いペアの方が2次元では近い」という順序の逆転が21.8%残る。約5組に1組は遠近が入れ替わったまま、私たちはあの「テセラクトの図」を眺めていることになる。
そして左上のPCAを見てほしい。16頂点あるはずなのに7点しか見えない。12ペアの頂点が完全に重なっている。原因を探ると、テセラクトの共分散の固有値は4成分とも1.0667で完全に同じだった。つまり「分散が最大の方向」がそもそも存在せず、PCAは軸を選ぶ根拠を失って、数値誤差レベルの偶然で適当な2軸を返していた。
どれくらい適当かを確かめるため、4D→2Dのランダムな直交射影を200本引いてstressを測った。結果は0.312〜0.368(平均0.334)。PCAの0.371は……200本全部に負けた。「とりあえずPCA」は、完全に対称なデータに対しては当てずっぽう以下になり得る。分散最大化という基準は、分散に差があって初めて意味を持つ——書いてみれば当たり前だが、ワースト側に落ちるとまでは予想していなかった。
次元を上げると劣化はどう進むか: 立方体→テセラクト→9次元超立方体
では4次元は「まだマシ」なのか。立方体(3D, 8頂点)から9次元超立方体(512頂点)まで次元を上げながら、2次元への埋め込みの劣化を測った。

| 次元 | 頂点数 | MDS stress-1 | MDS Spearman | 距離のCV |
|---|---|---|---|---|
| 3 (立方体) | 8 | 0.244 | 0.721 | 0.207 |
| 4 (テセラクト) | 16 | 0.300 | 0.581 | 0.216 |
| 5 | 32 | 0.332 | 0.543 | 0.214 |
| 6 | 64 | 0.350 | 0.506 | 0.206 |
| 7 | 128 | 0.363 | 0.474 | 0.196 |
| 8 | 256 | 0.371 | 0.447 | 0.186 |
| 9 | 512 | 0.378 | 0.422 | 0.176 |
3つ、予想と違うことが起きた。
1つ目: 劣化は単調だが、爆発しない。stressは0.244→0.378と増え続けるものの、伸びはどんどん鈍る。1次元あたりの悪化幅は3D→4Dの+0.056が最大で、8D→9Dでは+0.006しかない。一番大きな崩壊は、たった1次元はみ出した瞬間に起きている。
2つ目: 灰色の点線、頂点間距離の変動係数CV(距離のばらつきを平均で割ったもので、大きいほど「近いペアと遠いペアの差」がはっきりしている)は、次元とともに下がっていく(0.216→0.176)。これは次元の呪いを実測した回で見た「高次元では距離が均される」現象そのものだ。頂点間距離は 、は二項分布に従うので、相対的なばらつきは で縮む。つまり高次元の超立方体ではそもそも保存すべき距離の個性が薄れていく。stressの伸びが鈍るのは、皮肉なことに「守るべきものが減っていくから」でもある。
3つ目: PCAとt-SNEのSpearman相関は単調に下がらず、d=4で底(0.436, 0.409)を打ってd=5〜6で一度持ち直すジグザグを描いた。特にPCAのd=4は前後より突出して悪い。前節で見た固有値の完全縮退による「軸選びの運任せ」が、たまたまd=4で最悪の側に出たわけだ。滑らかな劣化曲線を予想していたので、これは意外だった。
ちなみにこの16頂点、スイスロールのような曲がった多様体ではなく、離散的な完全対称の点配置だ。多様体学習が得意とする「実は低次元」な構造がどこにもない、いわば圧縮のしようがないデータであり、だからこそ次元削減の限界がそのまま数字に出る。
6種類の4次元回転: wを含む3つだけが「伸び縮み」に見える
最後に、冒頭のアニメーションの種明かしをする。3次元の回転は独立な平面が3つ(xy, yz, zx)だが、4次元では つある: xy, yz, zx, wx, wy, wz。それぞれの平面で0°から360°まで回しながら、3次元へ平行投影した後の32本の辺の長さを追跡した。

| 回転平面 | 辺長の変動幅(1辺あたり最大) | 全辺長合計の範囲 |
|---|---|---|
| xy, yz, zx | 0.000 (完全に不変) | 48.000(定数) |
| wx, wy, wz | 2.000 (0⇔2を往復) | 48.000〜54.627 |
結果は綺麗に真っ二つに割れた。wを含まない3つの回転では、投影後の32辺の長さが1本も、小数点以下4桁まで一切変わらない。射影(wを捨てる)と回転(x, y, zだけを混ぜる)が干渉しないので、影は3次元の剛体としてただ回る。
一方wを含む3つの回転では、辺が長さ0から2まで伸び縮みする。wx回転なら、x方向の辺の投影長は 、w方向の辺は で振動する(45°の瞬間には32本中16本がちょうど になる)。第4の座標は影に映らないから、そこへ「向きを変えていく」辺は、影の上では縮んで消えていくしかない。冒頭のアニメーションで内側の立方体が膨らんで外側と入れ替わるのは、各立方体のw座標が反転する過程で透視投影の倍率()が入れ替わるからだ。
つまり「4次元の回転は3次元では変形に見える」という有名な話は、正確には6自由度のうち半分だけの性質で、しかもどの辺がどの角度でどれだけ縮むかまで、単純な三角関数で完全に記述できてしまう。逆に言えば、もし目の前の剛体が勝手に伸び縮みして見えたら、それは「見えない軸を含む平面で回転している」ことの証拠になる。影しか見えなくても、歪み方から高次元の運動を推定できるわけだ。
手を動かして意外だったこと
一番の予想外はPCAだった。ランダム射影200本に全敗という結果は、「PCAは最低でもランダムよりマシ」という無意識の信頼を壊してくれた。固有値が縮退した完全対称データという極端な状況ではあるが、三葉結び目やメビウスの輪でアルゴリズムの想定外を突いたときと同じで、道具は前提が崩れた瞬間に音もなく当てずっぽうになる。しかもstressを測らなければ、PCAの図は「7点のすっきりした図形」で、むしろ綺麗に見えるのだ。
もう1つは、透視投影が平行投影に距離保存で負けたこと。全頂点が見える「良い図」の方が、定量的には多くの嘘を含んでいた。見やすさと忠実さは別の量で、しかもトレードオフですらなく、単に別方向を向いている——8箇所を完全に殺して残りを無傷にするか、全体に薄く嘘を塗るか。どちらの影も正しくないが、嘘の分布が違う。何かを1枚の図に要約するとき、自分がどちらのタイプの嘘を選んだのかは、意識しておいて損はないと思う。
この実験で言えないこと
- 手法の順位表は、この16頂点だけの話だ。 頂点16個は次元削減の入力としては極端に小さく、Isomapの近傍数4やt-SNEのperplexity 5は結果への効きが大きい。「MDSが最良」を超立方体以外へ一般化はできない
- 「PCAがランダムに全敗」は、PCAが駄目だという意味ではない。 固有値が4つとも完全に同じ、つまり「分散が最大の方向」という概念自体が消滅した特殊ケースの結果だ。分散に差がある普通のデータでは普通に働く。言えるのは、前提が消えたときにPCAは警告を出さずに当てずっぽうへ落ちる、ということだけだ
- 「見やすさ」の側は測っていない。 透視投影が平行投影より見やすいという前提で「見やすさと忠実さは別」と論じたが、定量化したのは忠実さだけで、見やすさは主観のままだ
- 回転の解析は、6つの平面を1枚ずつ回した結果だ。 4次元の一般の回転には2つの平面が同時に回る「二重回転」があり、そこでの辺長の振る舞いは測っていない
どの影も正しくない。それでも歪み方は嘘をつかない
テセラクトの絵は、平行投影も透視投影もMDSも、全部どこかで嘘をついている。stress-1が0にならない以上、それは誰にも避けられない。この実験で見えたのは、嘘の総量よりも嘘の置き場所に個性が出ることだ。8ペアを完全に潰して残り全部を守る影と、全員に薄く嘘を塗る影。メビウスの輪で、Isomapがくびれ1箇所に犠牲を集約したのと同じ選択が、次元削減が生まれるずっと前の、ただの射影の中に既にあった。
そして影は、捨てた次元の痕跡を歪みとして運んでもいる。目の前の図形が勝手に伸び縮みして見えたら、それは「見えない軸を含む平面で回っている」ことの証拠であり、どの辺がいつどれだけ縮むかまで三角関数で言い当てられる。4次元そのものは、たぶん一生見えない。それでも、見えないものが影に残す指紋は、測れば読める。この記事で数えてきた数字は、ぜんぶその指紋だ。
このブログでは、機械学習の仕組みを実際にコードで実装して確かめた実験をテーマ別に整理しています(拡散モデル・Transformer・強化学習・多様体学習・過学習など)。


