概要
- 3Blue1BrownのGrant Sandersonとのコラボを通じて、高次元埋め込み空間の容量問題を探究
- Johnson-Lindenstrauss補題と高次元幾何学が、GPT-3のようなモデルの効率的な意味表現を支える
- 実験により「準直交」ベクトルの限界と損失関数設計の課題を発見
- 埋め込み空間の真の容量とその実用的意義を数式とGPU実験で検証
- 結論として、現行の埋め込み次元は人間知識の複雑な表現に十分な容量を持つことを示唆
高次元埋め込み空間の容量問題とJohnson-Lindenstrauss補題
- GPT-3の 12,288次元 の埋め込み空間が 数百万の概念 をどう表現できるかという問い
- N次元空間 にはN個の完全直交ベクトルしか配置できないが、 「準直交」 (85-95度)の許容で容量が大幅増加
- 3Blue1Brownの動画では、 100次元空間に10,000本の準直交ベクトル を配置する実験を可視化
- 角度が89-91度に集中し、一見成功しているように見える
- 実装時に発見した問題点
- 元の損失関数: loss = (dot_products.abs()).relu().sum()
- 90度付近では勾配が最大(sin(90°)=1.0)だが、0°や180°付近では勾配が消失(sin(0°) ≈ 0)
- 99%のベクトルが正しく直交し、残り1%がほぼ平行という「99%ソリューション」に陥る
- 元の損失関数: loss = (dot_products.abs()).relu().sum()
- 対策として 指数関数的ペナルティ (loss = exp(20*dot_products.abs()2).sum())を導入
- これにより最大角度は約76.5度となり、理想的な準直交配置の限界を明らかに
Johnson-Lindenstrauss補題の幾何学的保証
- JL補題 は「高次元空間の点群を低次元空間に射影しても、距離関係を高確率で維持できる」と保証
- 射影後の次元数kは、 k ≥ (C/ε²) * log(N) (Cは定数、εは許容誤差、Nは点の数)
- 実務では C=4~8 が多用されるが、最適化次第でCをさらに小さくできる可能性
- JL補題はもともとバナッハ空間のリプシッツ関数拡張問題から偶然発見された歴史
実務応用:次元削減と埋め込み容量
- 次元削減
- 例: Amazonの顧客ベクトル(数百万次元)を 1,000次元程度 に射影しても関係性を維持
- 単一GPUでリアルタイム処理が可能となる
- 埋め込み空間容量
- 「概念」の数を同時に埋め込める上限の定量化
- 実世界の単語や概念は完全直交ではなく、「部分的な重なり」を持つ
- 例: "Archery"は"precision"や"sport"と重なり、"Fire"は"heat"や"passion"と重なる
埋め込み容量の実験的検証
- GPUで N=30,000、 k=10,000 までのベクトル射影を最適化し、C値の変動を観察
- CはN増加で一時上昇、 最大0.9未満 で頭打ち、その後減少
- 高次元比(N/k)で C<0.2 も観測
- 高次元球面の「パッキング効率」が上昇する幾何学的性質が示唆される
理論的容量推定とGPT-3への適用
- 準直交ベクトル数の近似式:
Vectors ≈ 10^(k * F² / 1500)
- k: 埋め込み次元
- F: 直交からの自由度(例: 87°ならF=3)
- GPT-3の 12,288次元 での容量例
- 89°(F=1):約10^8個
- 88°(F=2):約10^32個
- 87°(F=3):約10^73個
- 85°(F=5):10^200個超
- 86°でも 宇宙の原子数(~10^80) を大きく超える容量
実務的意義と今後の展望
- 効率的な次元削減 :Hadamard変換やBCH符号化によるランダム射影で十分な精度と効率を実現
- 埋め込み空間設計 :1,000〜20,000次元で人間知識の複雑な関係性を十分に表現可能
- 課題は容量ではなく、最適な概念配置の学習 にある
- コード例(Hadamard変換・最適化射影)も公開
結論
- 損失関数設計の小さな疑問から始まった探究が、高次元幾何学と現代機械学習の本質的な繋がりを明らかに
- Johnson-Lindenstrauss補題 は40年前の発見ながら、現在も意味表現の数学的基盤を支える
- Grant Sandersonとの協働を通じ、数学コミュニティの協調的精神と発見の喜びを再認識