メビウスの輪にフタをすると「射影平面」になる。ボーイ曲面を実装したら、三重点がただ1つ現れた
約19分で読めます
Last updated on

メビウスの輪にフタをすると「射影平面」になる。ボーイ曲面を実装したら、三重点がただ1つ現れた


メビウスの輪には縁がある。ふつうの帯なら、縁は上と下の2本に分かれている。ところがメビウスの輪で片方の縁を指でなぞっていくと、いつの間にか「もう片方だったはずの縁」を走っていて、二周して戻ってくる。つまり縁は1本の閉じた輪だ。ならば、その1本の縁に円板を1枚貼ってフタをしたら何ができるだろうか。

できあがるのは、縁のない閉じた曲面。しかも裏表の区別がない——実射影平面と呼ばれる曲面だ。ただしこの曲面には困った性質がある。球面やドーナツと違って、3次元空間には自己交差なしで置けない前回のクラインの壺と同じ事情だ。無理に3次元へ押し込んだ姿のひとつが、1901年に発見されたボーイ曲面である。

言葉だけでは信じられないので、今回も全部コードで作って数値で確かめる。日本語で読める射影平面の解説は定義の紹介がほとんどで、実装して測った記事は見当たらなかったので、たぶんこれが初になる。

赤が「円板」、青が「メビウスの帯」、黒い線がその継ぎ目だ。つまり上の図形は、冒頭の工作——メビウスの輪に円板でフタをする——をそのまま3次元で実行した姿である。凡例をクリックして赤だけ・青だけにしてみてほしい。

実験に使ったコードの全文はGitHubに置いています

ボーイ曲面を作る: 貼り合わせは数式に組み込まれていた

ボーイ曲面には Bryant-Kusner のパラメータ表示という驚くほどコンパクトな式がある。単位円板上の複素数 ww (w1|w| \le 1) に対して

g1=32Im ⁣[w(1w4)w6+5w31],g2=32Re ⁣[w(1+w4)w6+5w31],g3=Im ⁣[1+w6w6+5w31]12g_1 = -\frac{3}{2}\,\mathrm{Im}\!\left[\frac{w(1-w^4)}{w^6+\sqrt{5}\,w^3-1}\right],\quad g_2 = -\frac{3}{2}\,\mathrm{Re}\!\left[\frac{w(1+w^4)}{w^6+\sqrt{5}\,w^3-1}\right],\quad g_3 = \mathrm{Im}\!\left[\frac{1+w^6}{w^6+\sqrt{5}\,w^3-1}\right]-\frac{1}{2}

とおき、(x,y,z)=(g1,g2,g3)/(g12+g22+g32)(x,y,z) = (g_1,g_2,g_3)/(g_1^2+g_2^2+g_3^2) とするだけだ。式の中身は追わなくていい。押さえてほしいのは、入力が「単位円板1枚」だという点だけだ(これが後で効いてくる)。分母に 5\sqrt{5} がいる理由は私も知らない。数十行の numpy で書ける。

ボーイ曲面を3方向(斜め上・真横・真上)から見た点群プロット。色はパラメータ円板の中心からの距離を表し、真上から見ると3枚の丸い突出部が120度ずつ回転対称に並んでいることが分かる

実射影平面の教科書的な定義は「円板の縁の対蹠点(直径の反対側の点)どうしを貼り合わせたもの」だ。実装して最初に感動したのはここで、この貼り合わせが数式に最初から組み込まれている。境界 w=1|w|=1 上で f(w)f(w)f(w)f(-w) の距離を4001点測ると:

  • 境界上: 最大 8.5×10⁻¹⁶。機械精度で同じ点、つまり縁の対蹠点は貼り合わさっている
  • 内部 (w=0.5|w|=0.5): 最小 1.71。内部の点は貼り合わされていない

念のため位相もメッシュで確認した。使うのはオイラー標数 χ=VE+F\chi = V - E + F。頂点の数から辺の数を引いて面の数を足すだけの整数だが、曲面をどう曲げても伸ばしても変わらない、いわば曲面の指紋だ。三角形分割から直接数えると:

曲面作り方VE+FV-E+F理論値
円板縁を貼らない11
アニュラス帯、縁を貼らない00
メビウスの帯アニュラスの外縁の対蹠点を貼る00
実射影平面円板の縁の対蹠点を貼る11
球面(対照)22

貼り合わせの検算もできる。χ(メビウス)+χ(円板)χ(円周)=0+10=1=χ(射影平面)\chi(\text{メビウス}) + \chi(\text{円板}) - \chi(\text{円周}) = 0 + 1 - 0 = 1 = \chi(\text{射影平面})。冒頭の工作の足し算が、ちゃんと成立している。

「メビウスの帯 + 円板」を座標で確かめる

とはいえオイラー標数は間接証拠だ。「メビウスの輪にフタをしたものだ」と言い切るには、実際に分解して見せるのが早い。

パラメータ円板を半径 0.65 の円で2つに切る。内側はただの円板。外側のリング状の部分は——縁 w=1|w|=1 の対蹠点が貼り合わさっているので——幅の中央で反対側と接続された、1本の帯になっているはずだ。

縦2段の模式図。上段はパラメータ円板で、内側の赤い領域に「円板パート」、外側の青いリング領域に「帯パート」とラベルされ、円板の縁の対蹠点どうし(星印と星印、三角と三角)が同一視されることが矢印で示されている。下段は同じ色分けをボーイ曲面の3D表示に写したもので、赤い円板部分と青い帯部分の境目に黒い1本の閉曲線(継ぎ目)が走っている

外側パーツをメビウスの帯の標準座標 (σ,t)(\sigma, t) (σ\sigma が帯に沿った位置、tt が幅方向)で貼り直して、4つの検証をした。

  1. 帯の中心線は縁を通って連続か: 中心線(t=0t=0)は円板の縁 w=1|w|=1 に対応する。縁をまたぐ2点の3D距離は、パラメータの差 ε\varepsilon を 10⁻²→10⁻³→10⁻⁴ とすると 2.0×10⁻² → 2.0×10⁻³ → 2.0×10⁻⁴ と線形に0へ収束。継ぎ目に段差はない
  2. 一周すると幅方向が反転して閉じるか: 帯を一周(σ:0π\sigma: 0 \to \pi)して戻ると、幅方向を反転して合わせたときだけ一致する(最大距離 2.5×10⁻⁹)。反転せずに合わせるとズレは 1.33。つまりこの帯にはひねりが1回入っている——メビウスの帯だ
  3. 法線は裏返るか: 中心線に沿って法線ベクトルを連続に追跡すると、出発点とほぼ同じ点(距離 3.5×10⁻⁴)に戻ってきたとき、法線の内積は −1.000000。裏返って戻ってくる。対照として、貼り合わせを通らないループ(w=0.5|w|=0.5 の円周)では +1.000000
  4. 帯の縁と円板の縁は同じ円か: 互いに無関係な角度でサンプリングして最近傍距離を測ると最大 6.2×10⁻⁴で、サンプル間隔(1.2×10⁻³)以下。半径をわずか0.05ずらした対照では 0.31。両者は同じ1本の閉曲線に乗っている

「メビウスの輪の縁に円板を貼ると射影平面になる」という教科書の一行が、座標と距離の数値として全部確認できた。クラインの壺が「メビウスの帯2本を縁で貼ったもの」だったのに対し、射影平面は「メビウスの帯1本に円板でフタをしたもの」。メビウス系列の兄弟である。

自己交差は「三葉のプロペラ」だった

3次元に置けないものを置いたのだから、どこかで面が自分自身を貫いているはずだ。「3次元では近いのに、射影平面の上では遠い」点のペアを17万点の点群から探すと、98万組の近傍ペアのうち 16,601組が自己交差の証拠として検出された。その分布が面白い。

縦3段の図。上段と中段はボーイ曲面を薄い灰色で描き、自己交差線を青・赤・緑の3色で強調した3Dプロット。真上から見ると3枚の羽根がプロペラのように120度対称に配置され、中心の三重点(黒い星印)で交わっている。下段はパラメータ円板上で自己交差線の逆像を灰色で描いたもので、3つの黒い星(三重点の逆像)を通る対称的な曲線パターンになっている

自己交差線は3枚の「羽根」からなり、1点で交わる。この見た目から三葉のプロペラと呼ばれる。数値で出た構造は:

  • 三重点(3枚の面が同時に重なる点)はちょうど1個。検出位置は (0.0008,0.0008,0.0015)(-0.0008, -0.0008, -0.0015)、原点からの距離 0.0019
  • 三重点の周りを取り除くと、自己交差線はちょうど3本の弧に分かれる(検出点数 5050 / 4583 / 4361)
  • 三重点を含めれば全体は1つながり。つまり「1つの三重点から3枚の羽根」

三重点が原点に出るのは偶然ではない。Bryant-Kusner の式の分母 w6+5w31w^6+\sqrt{5}w^3-1 は円板内部の3点(半径 ((35)/2)1/3=0.72556((3-\sqrt{5})/2)^{1/3} = 0.72556、角度 0°, 120°, 240°)でゼロになり、そこで gg が発散して、最後の反転 g/g2g/|g|^2 が3点まとめて原点へ送り込む。数式の特異点が、幾何の三重点の予言になっている。検出された三重点の逆像を測ると w=0.7259±0.0043|w| = 0.7259 \pm 0.0043、角度の理論値からの偏差 +0.10°±0.35°+0.10° \pm 0.35°。予言どおりの場所だった。

ちなみに、閉曲面を3次元に押し込むときの自己交差の個数には深い理論があって、射影平面ではどうやっても三重点を奇数個残すしかないことが知られている(Banchoffの定理)。1個はその最小解だ。

次元削減にかける前に: 3次元から出発してはいけない

さて本シリーズの本題、次元削減だ。スイスロールは広げられ、結び目はほどけ、メビウスの輪は幅を潰して帳尻を合わせた。裏表がなく、しかも閉じている射影平面はどうなるか。

最初に落とし穴があった。ボーイ曲面の3D点群をそのまま使うと、kNNグラフの5.5%が自己交差をまたぐ「別の枚への短絡」になる(少なくとも1本の偽エッジを持つ点は15.1%。自己交差のない球面の対照では0.0%)。自己交差は体積ゼロの線にすぎないのに、有限の密度でサンプリングした瞬間、グラフを汚染する。これでは「射影平面の実験」ではなく「壊れたグラフの実験」になってしまう。

そこで自己交差のない本物の射影平面を6次元に作った。ヴェロネーゼ埋め込みと呼ばれる古典的な構成で、球面上の点を

(x,y,z)(x2, y2, z2, 2xy, 2yz, 2zx)(x,y,z) \mapsto (x^2,\ y^2,\ z^2,\ \sqrt{2}xy,\ \sqrt{2}yz,\ \sqrt{2}zx)

に写すだけ。ppp-p が同じ点に行くので対蹠点の同一視が自動で入り、しかも異なる点どうしは衝突しない。3次元では無理でも、次元を上げれば射影平面は自己交差なしで存在できる(クラインの壺を4次元に置いたのと同じ発想だ)。

これを球面(向き付け可能な閉曲面)・円板(ただの平面片)と並べて4手法で2次元化した。

3行4列の埋め込み比較グリッド。行は実射影平面・球面・円板、列はPCA・Isomap・LLE・t-SNE。各パネルに偽近傍率と迷子率が記載されている。円板の行はすべての手法が同心円状の構造を綺麗に保ち両指標ほぼ0%。球面と実射影平面は円盤状に潰れ、実射影平面では色の不連続な折り目が現れている。t-SNEの列だけは点群が小さな断片に分かれて散っている

指標は2つ測った。偽近傍率は「展開図では隣どうしなのに、本来の曲面では遠い」ペアの割合——引っ越しのたとえで言えば、無関係な他人が隣の部屋に越してくる率。迷子率は逆に「本来はご近所なのに、展開図でバラバラに散った」割合——引っ越しで隣人を見失う率だ。

  • 円板: 全手法でほぼ0% / 0%。開いた面は問題なく広げられる
  • 球面: 偽近傍 24〜27%、迷子 10〜11%。閉じた面はどこかを重ねるか引き裂くしかない
  • 実射影平面: 偽近傍 28〜34%、迷子 22〜26%。球面よりさらに悪く、迷子率は約2倍

そして今回も指標の罠があった。t-SNE の偽近傍率は全データセットで0.0%。数字だけ見ると完勝だが、絵を見ると点群を小さな断片に引き裂いて並べているだけだ。偽の近所付き合いを作らない代わりに、本物の近所を壊している(それでも迷子率5%前後と低く出るのは、断片の内部で近傍が生き残るからだ)。穴あきロールの回から数えて、単一指標が構造破壊を見逃すのはこれで4回目である。

ひねって作った帯と、貼って作った帯は「同じ」はずだった

ここからが今回いちばん予想外だった実験だ。

前回の記事では、メビウスの輪を「帯をひねって3次元に置く」ことで作った。今回の射影平面の構成が正しいなら、メビウスの帯は「円筒の対蹠点を貼る」ことでも作れるはずだ(ひねりの項は数式のどこにもない!)。位相的にはまったく同じメビウスの帯。では Isomap にかけたら同じ結果になるだろうか。

実は最初、丸い球面の赤道帯で試して失敗している。球面の帯は樽型に曲がっているせいで、対照のアニュラスからして綺麗に広がらず、比較にならなかった。そこで曲率の影響を消すため、前回と同じ寸法の平坦な円筒をベースに、「貼らない帯 / ひねった帯(前回の構成) / 貼った帯(対蹠点同一視)」の3条件を揃えた。

縦3段の比較図。各段は左に埋め込みの散布図、右に表裏の一致度と帯の幅の角度プロファイル。1段目の貼らない帯は幅のあるリングに広がり、赤(外縁)と青(内縁)が綺麗に分離、一致度は全周+0.9前後で反転0回。2段目のひねって作ったメビウスはリングの途中で赤と青が入れ替わり、一致度が+1から-1へ反転し、ちょうどその位置で帯の幅が細く潰れている。3段目の貼って作ったメビウスはリング自体が糸のように細く、色は全周で混ざり、一致度は0付近を暴れ、幅は全周にわたって潰れている

結果は三者三様だった。

  • 貼らない帯(対照): 反転0回、表裏の一致度 0.87。何も起きない
  • ひねって作ったメビウス: 前回の再現。表裏が一周のどこかで反転し、反転位置で幅が中央値の15%まで潰れる。歪みを1箇所に集約する「局所ピンチ」戦略だ
  • 貼って作ったメビウス: 予想外。反転もピンチも観測できなかった。かわりに帯の幅そのものが、全周にわたって本来の3%まで潰されていた。リングはほとんど1本の糸である

同じ多様体なのに、アルゴリズムの「嘘のつき方」が変わった。前回、不可能な要求への選択肢は「破る/重ねる/潰す」の3つだと書いたが、「潰す」にも1点に押し付ける全員で薄く分担するかの流儀があったわけだ。

なぜ変わったのか。もっともらしい説明はこうだ。貼って作った帯には (σ,t)(σ,t)(\sigma, t) \mapsto (\sigma, -t)——帯を中心線でパタンと折り返す操作——が距離を厳密に保存する対称性として入っている(対蹠点同一視から必然的にそうなる)。Isomap のようなスペクトル法(点どうしの距離をまとめた行列を作り、その固有ベクトルから座標を決める方式)は距離行列しか見ないので、この対称性を破る理由がなく、対称性を尊重したまま2次元に落とすと幅方向は消えるしかない。一方、ひねって3次元に置いた帯は、置いた時点でこの対称性がわずかに壊れている(帯の各所で、ひねりの位相に応じて外周側と内周側の局所的な伸び方が変わる)。だからピンチの場所を「選べる」。この読みと整合して、幅の潰れは近傍数 kk やサンプル数を変えても再現し、逆にスペクトル法でない t-SNE は——

t-SNEによる貼って作ったメビウスの帯の埋め込み。白っぽい点(帯の中心線付近)が内側に閉じたリングを作り、その外側に濃い赤と青の点(帯の縁)が十数個の断片に千切れて散らばっている

——対称性ごと破り捨てた。中心線のリングだけ残して、縁を断片に千切って外周に並べている。スペクトル法は対称性に殉じ、確率的な方法は対称性を蹴飛ばす。教科書には書いていない対比が出た。

おまけ: 「向き付け不可能」を判定するアルゴリズム

ここまで裏表のなさを目視と埋め込み経由で見てきたが、最後に、点群から向き付け可能性そのものを判定することもやってみた。スタンフォードバニーの法線揃えで使った「向きを近傍グラフで伝播させる」考え方の応用で、各点の局所接平面の向きを隣へ隣へ伝えていき、矛盾なく揃うかを「向きの二重被覆」の連結成分数として数える。理屈の上では、向き付け可能なら表側チームと裏側チームの2成分、不可能なら全部つながって1成分になる。

点群二重被覆の成分数判定
円板2向き付け可能
球面2向き付け可能
貼らない帯(アニュラス)2向き付け可能
ひねって作ったメビウス1向き付け不可能
貼って作ったメビウス1向き付け不可能
実射影平面(6次元)1向き付け不可能

6条件すべて理論どおり。埋め込みの次元が3でも6でも、作り方がひねりでも貼り合わせでも、位相だけを正しく言い当てる。裏表のなさは、絵に描けなくても計算はできる。

手を動かして意外だったこと

いちばんの収穫は、「同じ多様体」でも作り方の痕跡がアルゴリズムの出力に残ると分かったことだ。ひねった帯と貼った帯は位相的に同一で、計量もほぼ同じはずなのに、対称性のわずかな違いが「1点をピンチ」と「全周を圧殺」を分けた。データの前処理や生成方法が持ち込む見えない対称性が、下流のアルゴリズムの挙動を定性的に変える——多様体学習に限らず思い当たる節のある話だと思う。

もうひとつは、数式の「気持ち悪い部分」が幾何の急所だったこと。分母の 5\sqrt{5} と6次式は飾りではなく、その零点3つがそのまま三重点の在り処だった。実装するまで、あの分母をただの魔法の定数だと思っていた。

この実験で言えないこと

  • 「ちょうど1個」「ちょうど3本」は、検出の分解能の中での話だ。 17万点のサンプリングと近傍探索で三重点を数えた検算であって、証明ではない。より細かい構造が検出網の目をすり抜けている可能性は、数値実験では排除できない(理論側のBanchoffの定理が「奇数個」を保証してくれているから、1個という読みに安心していられる)
  • 「スペクトル法は対称性を破れないから全周が潰れる」は、観察と矛盾しない解釈であって、証明ではない。 決定打になるはずの実験——折り返し対称性だけを人工的に壊した貼り合わせ帯で、圧殺がピンチに変わるか——はやっていない
  • 28〜34%や3%といった数値は、この曲面の定数ではない。 サンプル数・近傍数に依存する実験値で、意味を持つのは同一設定でそろえた手法間・曲面間の比較だけだ
  • 「全周圧殺」がスペクトル法一般の性質かは分からない。 試したのはIsomapとt-SNEだけで、LLEやラプラシアン固有写像が同じ嘘を選ぶかは未検証だ

フタというのは、思っていたよりずっと重い操作だった

メビウスの輪に円板を1枚貼る。工作としてはそれだけの操作で、できあがった曲面は3次元から追い出され、どう置いても自己交差し、三重点を最低1個抱え込む。縁があるうちは3次元で平和に暮らせた図形が、閉じた瞬間に住む場所を失う。

それでも、この「住めなさ」は隅々まで測れた。貼り合わせのズレは機械精度の0、一周して戻った法線の内積は−1.000000、三重点の居場所は貼る前から数式の分母に書き込まれていた。「メビウスの帯に円板でフタをすると射影平面になる」という教科書の一行を、座標と距離で端から端まで検算した——それが今回やったことのすべてだ。

そして展開図の上では、その一行の代償をアルゴリズムが払う。前回は1箇所のくびれで済んだ帳尻合わせが、今回は帯一周ぶんの圧殺になった。同じ「置けないものを置く」でも、作り方ひとつで嘘の形は変わる。そしてこの「犠牲を1箇所に集めるか、全体に薄く延ばすか」という選択は、実は次元削減が発明されるずっと前からある。テセラクトの影で、平行投影と透視投影が同じ選択をしていた。