1 ポイント 投稿者 GN⁺ 2025-09-16 | 1件のコメント | WhatsAppで共有
  • 高次元埋め込み空間では、完全な直交性の代わりに 準直交(quasi-orthogonality) を活用することで、非常に多くの概念表現が可能になる
  • Johnson-Lindenstrauss補題は、任意の高次元データをほとんど情報損失なく低次元へ射影できることを保証する
  • 最適化の過程では 損失関数 の設計が重要であり、基本的な損失関数のせいで非効率または偏ったベクトル配置が生じうる
  • 実験結果として、埋め込み空間の実際の容量は理論的に推測されていたよりはるかに大きく、数百万〜数十億個の概念が自然に共存できる
  • こうした発見は、自然言語処理や埋め込み設計など 機械学習の実務 において、データ表現や次元削減に大きな実用的意義を持つ

序論: 言語モデルの埋め込み空間の容量に関する問い

最近の3Blue1Brownによるトランスフォーマーモデルの動画シリーズで、Grant Sanderson は GPT-3の12,288次元埋め込み空間に、どうやって数百万個もの現実世界の概念を収められるのか という興味深い問いを提起した
この疑問は 高次元幾何学Johnson-Lindenstrauss(JL)補題 という数学的結果につながっている
これを探る過程で、ベクトル空間の根本的な性質と最適化に関する新たな洞察が得られ、Grantとの協業にもつながった

ベクトルの準直交性と埋め込み空間の容量

  • N次元空間には、完全に直交するベクトルはN個しか存在しない
  • しかし実際には、90度から少しずれた 準直交(quasi-orthogonal) な関係(例: 85〜95度の角度)を許容すると、同じ空間で表現可能なベクトル数は幾何級数的に増加する
  • Grantの動画では、100次元空間に1万個の単位ベクトルがほぼ直交に近い形で配置される可視化が示されている
  • ただし同じ実験を再現する過程で、最適化損失関数 の設計に潜む微妙な落とし穴が見つかった

損失関数の問題点とパターン

  • 基本の損失関数:
    loss = (dot_products.abs()).relu().sum()
  • 実際のユニットスフィア上では、この損失関数には2つの問題がある
    1. Gradient Trap: ベクトル角度が90度に近づくと勾配は強く働くが、0度や180度付近では勾配がほぼ0になり、改善が止まる
    2. 99%解: 最適化手法は、1万個のベクトルのうち各ベクトルが9,900個とはきちんと直交する一方で、99個とはほぼ平行になる配置(つまり基準ベクトルの複製)によって全体損失を最小化してしまう
  • この解法は全体として見ると期待していたものと本質的に異なり、より精巧な損失関数が必要になる
  • そこで指数ペナルティを適用した損失関数へ変更する: loss = exp(20*dot_products.abs()**2).sum()
  • この方法は望ましい分布により近い結果を生み出す(最大ペア角は約76.5度)
広告

Johnson-Lindenstrauss(JL)補題: 幾何学的保証

  • JL補題 は、任意の高次元データ点集合を低次元へランダム射影しても、ユークリッド距離がほぼ保存されることを保証する
  • 1〜N個の点、誤差因子 ε、射影次元 k に対して
    (1-ε)||u-v||² ≤ ||f(u)-f(v)||² ≤ (1+ε)||u-v||²
  • 最低限必要な次元 k は次の通り: k ≥ (C/ε²) * log(N)
    ここで C は成功確率を調整する定数である
  • 一般には C の値を保守的に4〜8と置くが、特殊な射影方式(例: Hadamard matrix、最適化手法)ではより小さな C に到達できる

実用的な適用分野

  1. 次元削減:
    • 例: EC顧客の嗜好を、数万商品の次元から数千次元へ効率よく変換する
    • 高次元データのリアルタイム分析や推薦などに活用できる
  2. 埋め込み空間の容量限界の分析:
    • 完全直交ではなく、概念間の類似性と差異のスペクトラム を空間内で自然に表現できる
    • 実際の単語の例として、"archery"、"fire"、"gelatinous"、"green" などの物理的・抽象的意味が高次元空間に重なり合って表現される

埋め込み容量の実験的分析

  • Hadamard matrix 変換などで最適化した結果、C の値は 2.5〜4 で、GPUベースの最適化ではさらに低くなる可能性がある
  • 実験方法: N個の標準基底ベクトルを k次元空間へ順番に射影し、5万回の反復最適化を行う
  • 観察結果:
    1. C の値は N が増えると最大値(約0.9)に達した後、徐々に低下する
    2. N/k 比が高くなるほど C は 0.2 以下まで下がる
    広告
  • これは 高次元空間における sphere packing の効率性に起因する
  • 実際には、理論上の上限より多くの概念を表現できる余地があることを示唆している

言語モデル埋め込みの実際的な意味

  • 埋め込み次元数 k、近似直交角 F(90°-実際の角度)、そして C 値に応じて収められる概念数は Vectors ≈ 10^(k * F² / 1500)
    • k=12,288, F=1(89°) → 10^8
    • F=2(88°) → 10^32
    • F=3(87°) → 10^73
    • F=5(85°) → 10^200 を超えるベクトルを格納可能
  • 86°だけでも、観測可能な宇宙内の原子数(10^80)を上回る
  • つまり実際の言語モデルは、比較的少ない次元でも数百万個の意味を豊かに保持できる

実務的応用と今後の方向性

  1. 効率的な次元削減:
    • Hadamard変換、BCHコーディングなどと組み合わせたランダム射影ベースの手法により、複雑な最適化なしでも大規模データの次元削減と高速計算が可能になる
    広告
  2. 埋め込み空間設計:
    • 空間容量に関する洞察は、トランスフォーマーのような大規模言語モデルが "Canadian" や "Muppet-like" のような繊細な概念まで意味関係を同時に保持できる理由を説明する
  • 結論として、現在の埋め込みの基準(1,000〜20,000次元)は人間の知識表現に十分であり、鍵となるのはその空間内での 理想的な配置の学習 である

結論

  • 損失関数に潜む微妙な最適化問題の探究から出発し、高次元幾何学と機械学習の基盤構造に対する深い洞察へとつながっていく
  • 1984年に発表された JL補題 は、現在の機械学習における埋め込み、情報表現、次元削減の原理に中核的な役割を果たしている
  • Grant Sanderson、3Blue1Brownチャンネル、Suman Dev との協力への謝意が述べられ、今回の研究と執筆経験の楽しさが共有されている

追加の読み物

  1. Sphere Packings, Lattices and Groups – Conway & Sloane
  2. Database-friendly random projections: Johnson-Lindenstrauss with binary coins – Achlioptas
  3. Hadamard Matrices, Sequences, and Block Designs – Seberry & Yamada

1件のコメント

 
GN⁺ 2025-09-16
Hacker Newsの意見
  • この幾何学的性質の含意は本当に衝撃的だ。k次元空間にほぼ直交に近いベクトルをいくつ詰め込めるかを大まかに見積もる簡単な方法を考えることはできる。ベクトル間の最小角度だけに注目するなら、結局は球面符号(spherical codes)の解析になる。にもかかわらず、この記事は球面符号に関する既存研究をまったく引用しておらず、かなりの部分が言語モデルで書かれたように見える。そして多くの基本的な不整合が結論の信頼性を損ねている。たとえば、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個のベクトルで測定した結果を、12,888次元に10の200乗個のベクトルの場合へ外挿していることになり、これは無意味だ。人の仕事には前向きで好意的に接したいが、最近のHacker NewsではLLM作成記事の氾濫が本当に圧倒的になってきている

    • 何かがLLM生成だと言うのは立証不可能なうえ、単に「誤りがある」と指摘するほうがより直接的で意味がある。実際、誤りを指摘してくれた点のほうが役に立つ。あの図ではx軸はNと見るのが正しい気がする

    • 私が球面符号を知らなかったことからしても、この分野の用語自体がかなりなじみ薄いのだと感じた。Wikipediaさえほとんど知らないようだし、Google検索結果も結局は32次元未満で球面ゴルフのような最適充填を扱うものが大半だ。こういう、既存の数学が直感的でない専門用語の陰に隠れて再発見されることはよくある

    • その通り。高次元ベクトル空間の幾何学的性質や情報、そして球面符号について、もっと上手く説明してくれる記事が何か知りたい

    • あなたが言及したグラフでは、K=2のときにC=0.2へ到達しているようには見えない。K=3でもC=0.3まで行ったところで終わっている。だが、これがなぜ問題なのかもよく分からない。著者はN個の基底ベクトルをK次元へ射影していて、CはN空間からK空間へ写像するときの誤差指標のようなものに見えるが、このアイデアがグラフと食い違う理由があるならもっと詳しく聞きたい。あなたの議論ではこの概念自体を扱っていないように思える

  • 著者はすべてのベクトルが完全に直交している場合にばかり焦点を当てすぎていて、実際に許容できる誤差水準を過大評価していると思う。実際に重要なのは、直交ベクトル同士をほぼ直交に保つことではなく、直交から遠く離れたベクトル間でも距離の順序が保証されることだ。イプシロンがずっと小さくても、実際には問題が起こりうる。つまり「この研究で示されたように、1,000〜20,000次元ほどあれば人間の知識と推論をすべて収めるのに十分だ」という主張は、あまりに楽観的すぎる

    • ベクトルはたいていn球面上に正規化され、実際に結果に意味のある距離はコサイン類似度だ。だから実務では「ほぼ直交」が重要になる。学習中は、意味のない表現を球面上でより「直交」に近づけることが目標になる。実際のハードウェア実装では浮動小数点精度にも限界があるので、この方法は特によく機能する。ちなみに、このアイデアはそのブログやYouTube動画が最初に提案したものではない。AI、少なくともニューラルネットの学習におけるこの補題の重要性は、約10年前にC. Eliasmithがすでに言及しており、GPTのような超高次元知識ネットワークが実用的に学習可能になるずっと前から研究されていた

    • OPの主張の論理は今ひとつだが、それでも2万次元程度の表現能力にはまだ希望が持てる

    • すべてのベクトルが完全に直交していたり独立だったりするとは、私も思っていない。距離尺度、曲線空間(curvilinear space)、歪んだ座標(skew coordinate)についても参考になる記事がある: https://news.ycombinator.com/item?id=41873650。「特徴の順序によって距離尺度はどれだけ変わるのか?」「すべての直交軸の順序が入れ替わるとアルゴリズム出力も変わるのか?」「高次元空間の特徴は本当にすべて90度で直交しているのか?」といった根本的な問いがある。もし特徴が統計的に独立でないなら、実際に完全直交である可能性はなく、独立を前提にした距離尺度の有用性には限界がありうる。ナイーブベイズ、線形回帰、ロジスティック回帰、LDA、PCAのような線形モデルは、非独立な特徴の下では信頼性が落ちる。L1ラッソやL2リッジ正則化のような手法も、外れ値や非独立・非直交データではリスクがある。[完全直交性]を無理に圧縮するのは難しいので、モデルが十分だとは言いがたい。そして根本的には、gbitで同時エンコードが可能なのかという問いもある

  • 記事の大部分から漂うChatGPTっぽさがかなり気になって集中しづらかった。私も英語を整えるときにAIを使うが、トーンや形式を過度に変えないよう依頼して、その程度は避けるよう努めている。それでもこの数学的観察は本当に興味深いと思う。大規模言語モデルや他のAIシステムが実際にどう機能しているのかをのぞき込ませてくれる根本的な示唆だ。高次元データをどう低次元へ射影しつつ構造を保つのかを見ると、こうしたメカニズムが効率性とスケール拡張の鍵だと分かる

    • 皮肉なことに、あなたの2つ目の段落は “fascinating”“crucial”“delving” といった表現や段落構成のせいで、まさにChatGPTを通したような印象を与えている

    • どのあたりでGPTっぽさが強く感じられたのか気になる。たくさん列挙する文体のせい?

  • こうした直感的理論とジョンソン=リンドンシュトラウス(JL)補題は、AI安全分野でSAEs(疎オートエンコーダ)のような機械的解釈研究を可能にしている中核だ。これらのアイデアの多くは、Anthropicが2022年に出した論文にうまく整理されている: https://transformer-circuits.pub/2022/toy_model/index.html

    • 実際の論文はどこで見られるのか、どこに掲載されたのか気になる
  • 言語モデルが1つのレイヤーのC次元に「概念」を固定的に押し込んでいるわけではない(たぶん12kという数字はそういう風に使われていたのだろう)。ベクトル間が完全直交でなくても概念を区別して扱うことはできる。LLMはベクトル空間で概念間の距離をただ遠くしているだけではなく、意味はあちこちで重なり合っている。これこそが密な表現(dense representation)の核心だ。疎オートエンコーダを学習させると、どのニューロンが話題ごとに活性化しているかを確認できる。Neuronpediaはその実際の様子をよく示している: https://www.neuronpedia.org/

    • まさにその疎オートエンコーダ研究が、この記事で言う「ほぼ直交」という概念に基づいている。もともとは「superposition仮説」と呼ばれていた: https://transformer-circuits.pub/2022/toy_model/index.html SAEは、密なベクトルを過完備(overcomplete)空間におけるほぼ直交な疎な「概念」へ分解する役割を担う。こうした方法は実際によく機能し、異なるLLM間で埋め込み空間を効率よく対応付けるのにも使える

    • 完全直交の条件を緩くすれば、もっと多くの情報を入れられる。本質的には、追加の(分数次元的な)情報を既存の次元にクラスタリングしているようなものだ。言い換えれば、多くの概念は互いに完全直交しておらず、ある程度の重なりや相関を持っている。だから記事の内容にそこまで破格な点はない。そして “remarkable”“fascinating”“profound” のような表現を乱用しているのが、ややそれとなく読者を引き込むLLMらしさを感じさせる

  • 少し些細だが面白い点として、みなさん自身もこれくらいの空間に数十億の概念を収められる。ベクトルの各成分で4ビットだけを気にするとしても、fp4の12000次元ベクトルは約6KBで、UTF-8の数ページ分のテキストと同程度だ。3Kトークンの64K埋め込み並みだ。こうして表現される「思考」の場合の数は途方もなく多い。1トークンを処理する際にも、各レイヤーは約60回にわたって以前の「思考」とアテンション、FFNで学習されたデータを混ぜ合わせる。だからこのシステム全体が複雑な作業(たとえばBashをPythonに変換する、文章題を解くなど)をこなせる。もちろん、100%空間効率的だとは期待していない。異なる「強さ」でベクトルを合成しても上手く動く必要があるし、学習は常に最高効率の圧縮へ収束するわけでもない。結局、理論限界を上限として見るだけでも、超高次元ベクトルには実質的にどんな「思考」概念でもぎっしり詰め込めるのだという新しい感覚を与えてくれる

  • 私の直感はもっと単純だ――概念がある程度階層構造をなしていると仮定すれば、12000次元空間にいくつの概念が入るか大まかに計算できる。各概念が、ある次元では他のすべての概念と少なくとも1軸で直交しているとすれば、コサイン距離が十分大きくなくても2つの概念を線形分離できる関数が保証されることになる。この場合、極端には12,000!個の概念まで可能で、たいていの分類体系には空間が余りすぎる

    • 各概念ごとに次元への順序対応を持たせないと12,000!個の概念は実装できないが、実際のモデルでは次元の順序に意味がない。つまり [weight_1, weight_2,...] と [weight_2, weight_1,...] はモデル内で完全に同一だ。実務上、言語モデルは各軸で正、負、0のいずれかしかないと見れば、3^12,000個の概念という程度になる。実際には、ほとんどのベクトルで数十軸を除けばほぼすべて0だ(学習時間の制約のため)

    • その数は宇宙全体の原子数(10^80)よりはるかに大きい(約10^43741)

    • 「コサイン距離が大きくない」という時点で、すでに決定的な限界がある

  • 20 Questionsゲームをやったことがあれば、数十億の概念に1000次元も要らないと分かるはずだ。こういう巨大ベクトルは数十億の概念よりはるかに複雑な情報まで保持できる。実際、1編の詩全体と誤字の位置までも、こうしたベクトルは表現し検索できる。GPTに詩を貼り付けて誤字の位置を尋ねる場合のように、内部レイヤーのどこかでまさにその情報が具体的に区別されているはずだ

    • 実際にはそれは単純なベクトルではなく、モデル全体がやっていることだ。モデル全体は一種の1兆次元ベクトルのように振る舞う

    • 2進ベクトルなら20次元で100万強の概念を表現できる。30次元なら10億概念になる

  • すでに多くのコメントでこの記事のさまざまな欠陥が指摘されているが、本当に基本的な観察を1つだけ加えたい。12k次元で10^200個の概念を収められるという主張自体があまりにばかげている。12kベクトル空間が膨大な数の個別値を保持できるのは確かだが、それがすべて概念というわけではない。こういう主張は筋が通っていない。シャノン(Shannon)もこの点ははっきり指摘したがるだろう

  • 根本的な誤りは、現実に数十億もの概念が存在するわけではないということだ。人間が使う「概念」と、機械的な「インスタンス」や「エンティティ」は明確に異なる。インスタンスは無限にあっても、私たちが実際に思考で使う抽象概念の数はずっと限られている