世界を動かす技術を、日本語で。

言語モデルは数十億の概念を12,000次元に圧縮する

2025年9月15日原文(nickyoder.com)

概要

  • 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 = 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,000k=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との協働を通じ、数学コミュニティの協調的精神と発見の喜びを再認識

Hackerたちの意見

この直感のセットと、特にジョンソン・リンデンシュトラウスの補題は、AIの安全性におけるメカニズム的解釈性の分野でのSAE(スパースオートエンコーダー)に関する多くの研究の基盤になってるんだ。アイデアの詳細は、Anthropicの2022年の論文にもっと詳しく探求されてるよ。これはSAE研究の基礎的な論文の一つだね。

実際の論文はどこで読めるの?どこに掲載されてるの?

この問題に対する私の直感はもっとシンプルだよ。概念の大まかな階層があると仮定すると、12,000次元の空間にどれだけの概念が存在できるかを、次元数の組み合わせを使って推測できるんだ。その世界では、各概念は少なくともいくつかの次元で他の概念と直交してる。これがコサイン距離が大きいことを意味するわけじゃないけど、2つの概念を線形に分離できる関数が保証されるってことだ。限界ケースでは12,000!(階乗)の概念が得られるから、分類するのに十分な余裕があるんだ。

その数は宇宙の原子の数(約10^43741)よりもはるかに大きいよ(約10^80よりもずっと)。

12,000!の概念を得るには、各概念を次元の順序とペアにしないといけないけど、モデルはそれをしないんだ。例えば、[weight_1, weight_2, ... weight_12000]というモデルのベクトルは、[weight_2, weight_1, ..., weight_12000]というベクトルと同じなんだよ。だから、言語モデルの単純なメンタルモデルは、各軸に正、負、またはゼロのトリットを持つことだね。これは3^12,000の概念になって、12,000!よりもずっと少ない数になるんだ。実際には、モデル内のほとんどのベクトルは、トレーニング時間の制限から、数十の特定された軸を除いてすべてゼロになってるんだ。

それがコサイン距離が大きいというわけではない この詳細には多くの落とし穴がある。

著者はすべてのベクトルが直交しているケースにあまりにも集中しすぎて、実際に許容されるエラーの量を過大評価してると思う。課題は、ほぼ直交しているベクトルを維持することじゃなくて、直交から遠いベクトル間の距離の順序を保つことなんだ。もっと小さいエプシロンの値でも問題が出てくることがあるよ。「この研究は、現在の埋め込み次元(1,000〜20,000)が人間の知識や推論を表現するのに十分な容量を提供することを示唆しています。」という主張は、私の意見ではあまりにも楽観的すぎるね。

ベクトルは通常、n-球の表面に正規化されていて、出力に関連する距離(損失関数を通じて)はコサイン類似度だから、「近似直交性」が実際には重要なんだ。つまり、トレーニング中は、無関係な表現を球上で動かして、出力で「より直交的」になるようにしたいんだ。これは、現実的なハードウェアでは限られた精度の浮動小数点数に縛られているから、特にうまくいくんだよ。ちなみに、これはリンクされたブログやその参照しているYouTube動画からのオリジナルのアイデアじゃないよ。この補題がAI(少なくともニューラル機械学習)に関連することは、私の知る限り、C. Eliasmithによって10年以上前に提起されているんだ。だから、GPTのようなアーキテクチャが実際にそんなに高次元の世界知識をトレーニングできるようになるずっと前から存在してたんだよ。

OPの主張はひどいと思うけど、20,000次元の表現力にはまだ期待してるよ。

ちょっと脱線するけど、この記事のほとんどの部分がChatGPTの雰囲気で、すごく気が散るしイライラする。これは、英語を磨くためにAIを使い続けている私が言うことなんだけどね。ただ、あまり劇的に言い換えさせないようにして、文法や非慣用的な部分だけを直すようにお願いしてるんだ。トーンや構成はできるだけそのままにしておきたいから。とはいえ、この数学的観察は本当に魅力的だよ。大規模な言語モデルや他のAIシステムがどのように機能するかについての重要な洞察を示している。高次元データがその構造を保ちながら低次元空間に投影される方法を掘り下げることで、これらのモデルが効率的に動作し、効果的にスケールするための重要なメカニズムが見えてくるんだ。

皮肉なことに、あなたの二段落目にある「魅力的」、「重要」、「掘り下げる」といった言葉や全体の構成が、まるでChatGPTを通してフィルターされたように感じる。

どの部分がGPTっぽいと感じたの?リスト好きなスタイル?

Hacker Newsで議論の続きを見る