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

言語モデルは単射であり、したがって可逆である

概要

  • Transformerの非線形活性化や正規化は 非単射 とされてきた常識への挑戦
  • Transformer言語モデルが 初期化時から訓練後も単射性 を保つことの数学的証明
  • 膨大な コリジョンテストで衝突なし を実証
  • SipItアルゴリズム による隠れ層からの入力テキスト完全復元
  • 単射性が 透明性・解釈性・安全性 に与える直接的影響

Transformer言語モデルの単射性:理論と実証

  • Transformerの 非線形活性化関数正規化層 は、従来「異なる入力が同じ出力に写る=非単射」と考えられてきた
  • 本研究は 離散入力列から連続表現への写像 が単射(lossless)であることを数学的に証明
  • この単射性は 初期化時に成立し、訓練後も維持 される特性
  • 理論的主張を裏付けるため、 6つの最先端言語モデル で数十億回規模のコリジョン(衝突)テストを実施
  • テスト結果として 同一表現に写る異なる入力は一切発見されず、理論の正しさを実証

SipIt:隠れ層からの完全入力復元アルゴリズム

  • 新規に提案された SipItアルゴリズム は、Transformerの 隠れ層活性化から元の入力テキストを厳密に再構築 可能
  • SipIt は理論的に 線形時間での復元保証 を持ち、実際のモデルでも完全な可逆性を証明
  • これにより、Transformerの 内部表現が不可逆であるという従来の認識 を覆す

単射性の応用と意義

  • 単射性が モデルの透明性解釈性安全な運用 に直結する基盤であることを示唆
    • 入力復元性 による説明可能性の向上
    • 安全性評価リークリスク分析 への応用可能性
  • 今後、 大規模言語モデルの設計・運用方針 に影響を与える可能性

Hackerたちの意見

この論文のタイトルは好きじゃないな。多くの人は言語モデルを、分布を生成するものとして考えてるんじゃなくて、トークンを生成するものとして考えてると思うから(実際、論文はそれが可逆だって主張してるけどね)。それに、著者の貢献声明には笑っちゃったよ。[0] https://x.com/GladiaLab/status/1983812121713418606

そうだね、自動生成されたブログ投稿からプロンプトを逆エンジニアリングできたら面白いけど、実際はそうじゃないんだよね。

それでも、技術的には正しいよ。モデルは次のトークンの尤度分布を生成して、その後サンプリング戦略を適用してトークンのシーケンスを生成するんだ。

ネタバレだけど、論文を開きたくない人のために、寄稿の声明はこうだよ:「平等な貢献;著者の順番はマリオカートで決定された。」人生のもっと多くの対立がマリオカートで解決されればいいのに。

でも、同じモデルで与えられたテキストに対して自己回帰を再実行するだけで、妥当な分布のセットを再構築できると思うよ。正確なプロンプトを逆算するわけじゃないけど、役立つ近似が得られるかもしれない。

「私たちは、6つの最先端の言語モデルに対して数十億回の衝突テストを行い、この結果を経験的に確認し、衝突は観察されませんでした。」 これ、間違ってる気がする。彼らは(他にもいろいろ使ってるけど)GPT2を使ってるけど、かなり大きな空間ベクトルを持ってるんだよね。それに、衝突の閾値を2つのベクトルのl2距離が10^-6未満と恣意的に定義してる。出力が正規化されてるから、これは単位球の表面の信じられないほど小さなパッチに相当する。直感的に言うと、そんな高次元の空間では、2つのランダムベクトルは基本的に直交してると思う。こういう制約の下で、2つの入力が同じ出力にマッピングされる確率は天文学的に小さいと思う(10^10000分の1以下とか)。sha256でハッシュ衝突を見つける確率よりも悪いよ。彼らの主張は、数十億の例をテストして確認できるようなものには思えないけど、詳しい計算を見てみたいな。論文には確実にそれが欠けてる。

GPT-2が使ってる潜在空間は768次元だと思う(つまり、埋め込みベクトルはそれだけの成分を持ってる)。

高次元空間の性質は、直感的に逆転可能性の主張を支持している気がするんだけど、どう思う?つまり、> 「これらの制約の下で、2つの入力が同じ出力にマッピングされる確率は天文学的に小さいと思う。」

読んでみると、彼らがやったことはバースデーパラドックスを信じてのサニティチェックみたいだね。要するに、「偶然で直交ベクトルが一度出るのはいいけど、何十億回も試して毎回直交ベクトルが出るなら、偶然って説明はちょっと無理があるよね」って感じ。

高次元空間についてのあなたの直感が羨ましいな、私は全くないから(「ここにはドラゴンがいる」以外は)。あなたの直感は大体正しいと思うよ。空間の大きさを考えると、何十億回の衝突テストはかなり不十分に感じるから。 > 直感的に言うと、そんな高次元空間では、2つのランダムベクトルは基本的に直交している。ここでの直感は何?大数の法則?直交性は距離とどう関係してるの? |a-b|^2の展開 = |a|^2 + |b|^2 - 2 = 2 - 2、ユニットベクトルが基本的に直交しているなら、だいたい2になる? > 出力が正規化されているから、それはユニット球の表面の信じられないほど小さなパッチに対応するんだ。高次元ベクトル空間のユニット球の表面についての直感も全くないよ。消えてしまうと思う。おそらく、このパッチも面積の観点から消えてしまうんだろうけど、その用語がゼロに近づく相対的な速度はどうなるんだろう?

直感的に言うと、そんな高次元の空間では、2つのランダムなベクトルは基本的に直交してる。これが、ディープラーニングやLLMが効果的な主な理由でもあるんだ。数千次元のベクトルだけでは、人間の知識をすべて表現するには全然足りないけど、実際にはもっと高次元、潜在的には無限次元のベクトルの投影として機能するからね。小さい方のベクトルは、実際には投影として機能するんだ。なぜなら、そんな2つのベクトルはほぼ常に直交してるから。

私の理解では、彼らは「ユニークなプロンプトごとにユニークな最終状態がある」と主張してるんだよね。有限状態のLLMと、原理的には任意の数のユニークなプロンプトを入力できる能力を考えると、これは明らかに間違ってるんじゃない?彼らの「ほぼ確実に」はかなり重要な役割を果たしてると思う。より重要な結果は、ユニークなプロンプトの数に応じたLLM状態の衝突確率を示すべきだよ。今のところ、彼らは「ほぼ確実にダーツボードの的に当たらない」って言ってるだけ。たぶん本当だけど、あまり意味がないよね。でも、もしかしたら彼らの結論を誤解してるかも。

まあ、私はそうは読まないけど、すべての最終状態にはユニークなプロンプトがあるってことだね。いくつかの最終状態が同じユニークなプロンプトを持つこともできるよ。

彼らの主張は「理論的な」LLMに限られていて、私たちが通常使う方法には当てはまらないと思う。LLM自体は固定サイズの入力と固定サイズの決定論的な出力を持っている。入力は入力層の各ニューロンの初期値で、LLMの出力は出力層の各ニューロンの最終出力のベクトルなんだ。普通のやり取りでは、これらのベクトルはほとんどが0だよ。もちろん、LLMって言うと、私たちのためにこれらを抽象化してくれるインフラを考えることが多いよね。特に、LLMの出力を確率として扱うインフラを使うことが多いから、同じ入力でも異なる結果が出ることが一般的なんだ。でも、それはこれらの値を解釈する方法の選択に過ぎなくて、値自体は同じなんだよね。同様に、入力側では最大入力は「コンテキストウィンドウ」と呼ばれることが多い。コンテキストウィンドウよりも多くの入力をLLMインフラに与えることはできるけど、それはモデル自体への実際の入力ではなくて、LLMインフラがあなたの入力の一部を選んでモデルの重みに渡すだけなんだ。

抽象を誤解してるかもしれないけど、彼らはLLMの出力があれば、入力が何かを教えてくれるって言ってるの?それとも出力と中間層の重みがあれば?もし前者なら、入力として「'OK'だけで返事して」や「'OK'だけで返事してね」って使えるから、2つの入力が同じ出力を生むことになるんだよね。

それがLLMから得られるものじゃないよ。LLMは次のトークンをサンプリングするための分布を生成するんだ。その後、次のトークンをサンプリングして、それをモデルにフィードバックして、EndOfSequenceトークンをサンプリングするまでループするんだ。君の例では、2つの分布は{"OK": 0.997, EOS: 0.003}と{"OK": 0.998, EOS: 0.002}かもしれなくて、著者たちが主張しているのは、その分布を逆転させてどの入力がそれを引き起こしたかを見つけられるってことだと思う。彼らがどうやって1回のイテレーションを超えて進むのかは分からないけど、確実にサンプリングを決定論的に逆転させることはできないはずだよ。

編集:論文を読んで、下の私の発言がもう確信が持てなくなった。彼らが紹介するアルゴリズムはこう主張している:「この特性が実際にどのように使われるかを示す:ある層での隠れ状態が与えられたときに、正確な入力プロンプトを再構築する方法を示す [強調は私の]」。この層が最終出力層でもいいのか、隠れ層でなければならないのかは論文からは明確ではない。彼らは出力層の値だけを知っていればLLMを逆転させる(LLMの応答からプロンプトを得る)ことができると主張していて、中間層は隠れたままなんだ。だから、彼らの主張は、実際にはそれをできるはずがないってことだ(この主張は数値モデルの出力に適用されるもので、必ずしもチャットインターフェースが表示する出力には当てはまらないことに注意してね、これはいくつかのランダム化を経るから)。

以前、LLMは抽象的なアイデアを学ぶ能力が必要だって議論を聞いたことがあるんだ。モデルの重みのサイズ(通常はGB単位)が、トレーニングデータのサイズ(通常はTBやPB単位)に比べてずっと小さいから、って理由でね。だから、モデルがほとんどのトレーニングデータを捨てているか、データを限界を超えて圧縮しているか、あるいはデータをもっと効率的な形に抽象化しているかのどれかだと思う。だから、LLM(Grokで試したけど)って、メアリー・シェリーの『フランケンシュタイン』の第18章の要約はできるけど、同じテキストの段落をそのまま再現することはできないんだよね。この論文の内容を正しく理解していないと思うけど、モデルの重みが元の入力テキストを生成するために使えるって主張しているみたいで、すごいレベルのテキスト圧縮を示唆しているように聞こえる。

入力はトレーニングデータじゃなくて、プロンプトなんだよ。

「この論文を正しく理解しているなら、モデルの重みを逆転させて元の入力テキストを生成できると主張している。」いや、それは全然違う主張だよ。彼らが言っているのは、メアリー・シェリーの『フランケンシュタイン』の第18章の要約というLLMの出力があれば、その出力に至る入力プロンプトが「メアリー・シェリーの『フランケンシュタイン』第18章の要約を教えて」となることが分かるってことなんだ。もちろん、これは正確な言い回しに依存している。もし「メアリー・シェリーの『フランケンシュタイン』第18章の要約を教えて」と聞いたら、必ず(少し)異なる結果が出ることになる。重要なのは、これは温度を0にした状態でのLLMに関する主張だってこと。明らかに、インフラがランダム性を導入すると、この結果は完全には成り立たなくなる(でも、もちろん、結果のより複雑な統計分析を行うことで回復する方法があるかもしれない)。編集:論文を読んでみて、彼らの主張はもっと複雑かもしれないと思った。最終出力に適用されるかどうか、あるいは出力前のある層の内部状態を知ることに制限されるのかは分からない。

著者からの明確化 [0] 要するに、無理だよ。 [0] https://x.com/GladiaLab/status/1983812121713418606

確かに!データに基づいてパラメータを測るのは統計の中心だよね。実用的に情報を集中させる方法だし。十分統計はすごく面白いよ。計算すれば、データと同じだけの情報を含むことが証明されるから(損失なし)。統計が大好き、めっちゃクールだよね!

それってLLMが異常に効率的なテキスト圧縮の形を表しているってことにならない? これは考える価値のある良い質問だね。ここで定義されている出力は、モデルが「出力」として扱える各トークンに対して0から1の間の1つの値のセットだよ。LLMのトークンが単語でないことが多いから、扱うのがちょっと難しいんだよね。出力トークンがn個あって、モデルがそれぞれに割り当てる確率がfloat32で表されるとしたら、モデルの出力は最大で(2³²)ⁿ = 2³²ⁿの値のいずれかになる。これは出力ユニバースのサイズの上限だよ。入力はトレーニングデータではなく、プロンプトだと思ってもらえればいい。モデルは「テキストxx x xxx xxxxxx xが与えられたとき、次のトークンは何になる?」って質問に答えるんだ。入力は私たちが尋ねているテキスト、つまりここではxx x xxx xxxxxx xだよ。入力ユニバースはモデルのコンテキストウィンドウに収まるものによって定義される。出力の表現として使われるトークンと同じトークンで表されるなら、n+1(出力ユニバースのサイズを制限するために使ったnと同じ)を「コンテキストウィンドウの長さ」のべき乗で上限が決まる。例えば、トークンが1万から10万の間にあって、コンテキストウィンドウが32768(2¹⁵)トークンの長さだと仮定しよう。16384 = 2^14トークンがあるとしたら、入力ユニバースの上限はだいたい(2^14)^(2^15)になる。出力ユニバースの上限はだいたい2^[(2^5)(2^14)] = 2^(2^19)になる。(2^14)^(2^15) = 2^(14·2^15) だから、LLM(Grokでテストしたよ)はメアリー・シェリーのフランケンシュタインの第18章の要約を提供できるけど、同じテキストの段落をそのまま再現することはできないんだ。この内容にはいくつか問題があるけど、もっと重要なのは、問題を誤って特徴付けているってことだね。フランケンシュタインはトレーニングデータの一部であって、入力の一部ではないんだ。

「抽象化」って言うかどうかは微妙だな。宇宙の始まりから終わりまでのデータが入ったスプレッドシートを想像してみて。2つの列があって、1つは日付、もう1つは宇宙が生まれてから何日経ったかっていうデータ。めっちゃ大きなスプレッドシートで、データがたくさん入ってるんだ。これをプロットすると、無限に見える対角線ができる。でも、Y=Xとして「抽象化」できるんだよね。これがMLのやってることなんだ。

だから、LLM(Grokで試したけど)がメアリー・シェリーの『フランケンシュタイン』の第18章の要約をくれるけど、同じテキストから段落をそのまま再現することはできないんだ。残念ながら、現実はもっと退屈だよ。 https://www.litcharts.com/lit/frankenstein/chapter-18 https://www.cliffsnotes.com/literature/frankenstein/chapter-... https://www.sparknotes.com/lit/frankenstein/sparklets/ https://www.sparknotes.com/lit/frankenstein/section9/ https://www.enotes.com/topics/frankenstein/chapter-summaries... https://www.bookey.app/freebook/frankenstein/chapter-18/summ... https://tcanotes.com/drama-frankenstein-ch-18-20-summary-ana... https://quizlet.com/content/novel-frankenstein-chapter-18 https://www.studypool.com/studyGuides/Frankenstein/Chapter_S... https://study.com/academy/lesson/frankenstein-chapter-18-sum... https://ivypanda.com/essays/frankenstein-by-mary-shelley-ana... https://www.shmoop.com/study-guides/frankenstein/chapter-18-... https://carlyisfrankenstein.weebly.com/chapters-18-19.html https://www.markedbyteachers.com/study-guides/frankenstein/c... https://www.studymode.com/essays/Frankenstein-Summary-Chapte... https://novelguide.com/frankenstein/summaries/chap17-18 https://www.ipl.org/essay/Frankenstein-Summary-Chapter-18-90... LLMがトレーニングデータに含まれる本を要約できるのを見たことがないし、要約がたくさんあって盗用する場合を除いて、本自体が必要ないってことになる。トレーニングプロセスが「データをより効率的な形に抽象化する」結果になるとは思えない。「ほとんどのトレーニングデータを捨てる」っていうのはあまりにも厳しい解釈だけど(実際にはもっと洗練されたことをやってる)、でも、正しいと思う。

彼らはデータを既知の限界を超えて圧縮しているか、データをより効率的な形に抽象化している。これは同じことを言ってる2つの方法だと思う。圧縮は文字通り理解することと同じだよ。

著者からの確認ツイートがあるよ:- 私たちの方法ではモデルからトレーニングデータを抽出できない - LLMは出力テキストに関して単射ではない、その関数は明らかに単射ではなく、衝突が常に起こる - 同じ理由で、LLMは出力テキストから逆算できない。 https://x.com/GladiaLab/status/1983812121713418606

わかりやすく言うと、ある編集されていないLLMの出力と、そのLLMに関する完全な情報があれば、どのプロンプトが使われたかを特定できるってことみたい。でも、実際にはほとんど機能しないよね。合ってるかな?

いや、単一のサンプル応答ではなく、分布が単射であることについての話だよ。だから、同じプロンプトからたくさんの出力が必要で、LLMを知っていれば、理論的には元のプロンプトを再構築できるはずなんだ。

いいえ、LLMの出力が逆変換可能であることについては何も言っていないよ。

2023年の「テキスト埋め込みはテキストとほぼ同じくらいの情報を明らかにする」って記事を思い出したよ(https://news.ycombinator.com/item?id=37867635)。そう、引用されてるね。プライバシーに関して大きな影響があるよ。埋め込みベクトルはハッシュみたいなもので、データベースに保存できるっていう「メンタルモデル」があるけど、これは間違った仮定だよ。良い埋め込みはすべてを保存するから、一般的な要点だけじゃなくて、日付や名前、パスワードも含まれる。簡単な解決策はあって、ランダムな回転をすることで、すべての距離を保持できるんだ。

このメンタルモデルは、埋め込みの本来の目的と真っ向から矛盾してるんだよね。埋め込みは元のテキストをもっと解釈しやすい形で表現するためのものだから。元のコンテンツの一部が検索や比較に使えるなら、定義上、埋め込みに保存されてる必要がある。似たようなことを言うと、「言語モデルはテキストを処理する」ってことになる。もしLLMが入力テキストに関して逆変換できなかったら、そのテキストにも注意を払えないはずだよ。

それには簡単な解決策があるよ - ランダムな回転。すべての距離を保つんだ。これは、ある意味でホモモルフィック暗号化みたいなもので、平文の関数の暗号を計算できるけど、入力や平文の計算された関数を見ずに済むんだ。

著者からの要約: - 異なるプロンプトは常に異なる埋め込みにマッピングされ、この特性を使って潜在空間の個々の埋め込みから入力トークンを回復できる - 注入性は偶然ではなく、言語モデルの構造的特性 - 数十億のプロンプトペアといくつかのモデルサイズの中で、衝突は見つからなかった: 2つのプロンプトが同じ隠れ状態にマッピングされることはない - SipItというアルゴリズムを導入し、隠れ状態から入力を正確に再構築することが保証された線形時間でできる - これがプライバシー、削除、コンプライアンスに影響を与える: 一度データがトランスフォーマーに入ると、回復可能なまま残る。

  • これがプライバシー、削除、コンプライアンスに影響を与える それはちょっと大げさじゃない?通常、トランスフォーマーから出てくるのは出力テキストだけで、それを使って入力を回復することはできないんだ。

関連する研究の著者です。これはすごいね!出力から入力に向けて層ごとに逆算しようとするのを期待してたけど、代わりに入力層で検索プロセスを行っているみたい。残差接続があるから層ごとのアプローチが難しいって指摘してるのは正しいね。ただ、分母にあるイプシロン項のおかげで、rmsnorm層は逆算可能だと思うんだ。これを使えば入力の大きさを回復できるよ。

ここで「残差接続」とは何を意味してるの?

いくつかの批判点:- 特徴検出関数(f(x) = 特徴がないときは0、特徴があるときは1)を持っていて、ネットワークをf(x)を計算するように訓練した場合、あるいはネットワークの一部が「訓練中に自分で」f(x)を計算することを決めた場合、訓練が長く続けばゼロの測度を持つゼロ集合ができるんじゃない? - 中間層が入力よりもずっと低次元の場合はどうなるの? - 実解析性は無限の導関数を意味する(付録Aによると)。これは、角を持つ関数(例えばReLU)には結果が適用されないってこと?