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

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

概要

  • 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っぽいと感じたの?リスト好きなスタイル?

言語モデルは、ある層のC次元に「概念を詰め込む」わけじゃないし(多分12kという数字はここから来たんだろうけど)、異なる概念を区別するために直交する必要もない。LLMは一般的に、ベクトル空間で異なる概念を遠くに離すように訓練されているわけでもない。密な表現の全体的なポイントは、どの概念がどこにあるかの明確な区別がないことなんだ。人々は、関わるトピックに基づいてどのニューロンが発火するかを解明するためにスパースオートエンコーダを訓練している。Neuronpediaがそれをうまく示してるよ:https://www.neuronpedia.org/.

同意するよ、完璧な直交性の要件を緩めれば、もっと多くの情報を詰め込める。基本的には、主要な次元とクラスター化された追加の(部分的な)次元を導入したってことだね。言い換えれば、多くの概念は直交していないけど、共通点や相関がある。だから、ここに目新しいことはないよ。記事には「素晴らしい」、「魅力的」、「深遠」といった言葉がたくさん使われていて、なんだか潜在的な操作が行われている気がする。もしかしてLLMが使われてるのかな?

ベクトルが実際にはもっと低い空間にいると、n次元の可能性を活かせてないんだ。時々、これらのことはコサイン距離(あるいはピアソン相関)でパッチされることがあるけど、理想的には必要ないときにベクトルがその空間を占めるべきなんだ。元の記事がバッチ正規化や似たような操作について触れていないのはちょっと驚きだね。これらは各層で値を自動的にデバイアスしてデコレートするために作られたものだから。

これらの幾何学的特性の含意は驚くべきものだ。k次元空間にどれだけの準直交ベクトルが収まるかを推定する簡単な方法を考えてみよう。Fを直交性からの自由度(90° - 希望する角度)と定義すれば、ベクトルの数を近似できる。もしベクトル間の最小角だけを見ているなら、球面符号を扱っていることになる。この文章は球面符号の分析だけど、球面符号に関する研究には言及していない…大部分が言語モデルによって書かれているように思えるし、基本的な矛盾がたくさんあって、その結論に疑問を抱いてしまう。例えば、KとNの異なる値に対するCの値を示すグラフで、x軸はKなのかNなのか?キャプションではx軸はN、つまりベクトルの数だと言っているけど、後で「非常に大きな空間」でC = 0.2が見つかったと言っていて、グラフではN = 30,000かつK = 2のときにしかC = 0.2が得られない。つまり、2次元に30,000ベクトルがいるってこと!逆に、もしx軸がKなら、この文章は30,000次元で2ベクトルの測定を10^200ベクトルの12,888次元に外挿していることになる。これは明らかに馬鹿げてるよ。人々の仕事に対してポジティブでフレンドリーでいたいけど、HNにおけるLLM駆動のコンテンツが本当に圧倒的になってきてる。

「LLM生成だと言うのは、証明できないから問題なんだよね。エラーがあるって言うよりも、エラーを指摘する方が役に立つし、君もそれをやってる。あの特定の画像については、C対Nって解釈するのが正しいと思うよ。」

「同意。高次元ベクトル空間や球面コードの幾何学的特性や情報を理解するのに、どんな書き方がいいと思う?」

「球面コードはちょっとマイナーだね。前に聞いたことがないし、ウィキペディアもほとんど触れてないみたい。Googleの結果も、どうやら小さな次元でゴルフをすることに関するものばかり(つまり、n<32次元で最適に詰め込める数は?)だね。人々は確かに、古い内容が分かりにくい専門用語の下に隠れているときに、以前から存在する数学を再発見するんだ。」

「任意の点に基づく空間埋め込みは、具体的なものにはならないんだよね。特に下流では。言葉は任意で、信号の曖昧さが異常に高いレベルで怠惰になってるのは、任意の信号が送信者や信号のコントローラーにとって大きな利点を提供するから。任意の信号は本質的に霊長類の支配ツールなんだ。これは一方通行で、CSはこれを考慮したことがない。コードに埋め込まれた任意の霊長類の支配というダークマターを引き算する能力がない。埋め込まれた空間ではこれがどこにあるの?LLMは、西洋の属性の概念に基づいて設計されていて、全体的なものや東洋的なものではない。相互依存性はまったくなくて、各予測は文脈を失ってる。修正による再編成の試みは、ほんの少し文脈を与えるだけ。任意の言葉の中の対象/個人の幻想は意味がない。GentnerやNisbett、Hallidayを研究している人は、LLMが言語をどう使ってるかを見れば、どれだけ空虚か分かるよ。このリストがそれを証明してる。LLMは言語を使ったサーカスの出し物みたいなもんだ。「埋め込み空間での「概念」って何を意味するか考えてみよう。言語モデルは完全に直交する関係を扱わない – 実世界の概念は、類似性と違いの度合いが異なる。ランダムに選んだ言葉の例を考えてみて。「アーチェリー」は「精密さ」と「スポーツ」といくつかの意味空間を共有してる。「火」は「熱」と「情熱」と重なってる。「ゼラチン質」は物理的特性や食感に関連してる。「南部らしさ」は文化、地理、方言を含んでる。「バスケットボール」は運動と幾何学の両方に繋がってる。「緑」は色の知覚と環境意識を跨いでる。「利他的」は道徳哲学と行動パターンを結びつけてる。」

「出力は文字通り前のテキストコンテキストに条件付けられてるんじゃないの?それが相互依存性がないってどういうこと?トークン間の確率的関係を学ぶことは、単語間の正確な意味的関係を近似しようとする試みじゃないの?」

「任意の信号は本質的に霊長類の支配ツールなんだ。」この主張を理解するために、何を読めばいい? > 「LLMは言語を使ったサーカスの出し物みたいなもんだ。」サーカスの猿?

「ベクトルは、ニューラルネットワークの非線形性を使うから、直交する必要はないんだ。アテンションのソフトマックスを使うと、1次元に好きなだけベクトルを詰め込んで、はっきりと選び出せるよ。」

「続いている、恐らく終わらない機会/悲劇は、表現学習/埋め込みの過小評価だね。現在の多くの価値あるモデルの魔法は、単に「定規」+「男性」みたいな抽象的な「概念」を組み合わせて「王」を得ることができることなんだ。これは、多くのLLMを構成する損失のあるテキスト圧縮を理解するのに最も簡単な方法かもしれない。彼らは埋め込み空間で動作しているから、抽象的な概念が入力と出力の間で操作できる。CをLLVMみたいなものでコンパイルするのに似てる:中間表現があるんだ。(もちろん、一般的にコンパイラの出力は決定論的だから、正確にはそうではないけど。)これは画像モデルにも存在する。「エッジ」+「四隅」は正方形、など。」