
2026/09/09 1:59
Show HN: LLM のアテンション可視化
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
大規模な改善は必要なく、用語を元のリストと整合させるためのわずかな調整だけで精度を向上させることができます。以下に若干改訂したバージョンを示します。
この可視化ツールは、大規模言語モデル(LLM)が新しいテキストを生成する際に過去の情報をどのように選択的に取り出すかを示し、確率的な性質にもかかわらず誤りを最小化するため特定のデータをコピーに大きく依存していることを解き明かします。すべての層を通じて値ベクトルの大きさをスケーリングした注意重みを取り、すべてのヘッドで集約することで、インターフェースは現在の出力に影響を与えた過去のトークンを正確に強調表示します。例えば、ユーザーは「remain」といった生成された単語をタップするか、カーソルを移動させることで、「work」や「stay the same」といったソースフレーズがどのように組み合わさっているかを見たり、ある例ではJavaScript関数がそのまま書き換えられて再生产されている様子を観察したりできます。これらの知見はAIの意思決定における「ブラックボックス」を解明し、開発者に対して内部メカニズムへの透明なウィンドウを提供することで、より良いデバッグや信頼構築を可能にします。本ツールはTransformers.jsをカスタムReactアプリケーション内に構築しており、内部モデル値へのアクセスのために生成ループのカスタム実装が必要となります。標準的なWASM経由のONNXファイルでは定義されていない出力を容易に露出できないため、この目的のためにスクリプトを使ってONNXファイルが改修されました。将来の開発には、長手のベースモデルダウンロードなしにブラウザ内で生成を実行するためのHugging Faceリポジトリにアップロードされた計装済みモデルが含まれる一方で、すべてのコードおよび実装の詳細は関連するGitHubリポジトリで利用可能です。
本文
Transformer 系大規模言語モデルの可視化と選択的メカニズム
背景:選択的な注意力機構
Transformer 系の大規模言語モデルには、興味深い特性が存在します。特に生成フェーズにおいて以下の点が重要です。
- 情報の非均等性: その時点で既に生じているトークンから情報を抽出可能ですが、すべてのトークンが均等に影響を与えるわけではありません。
- 選択的メカニズムの必要性: 効果的な動作のためには、前のトークンが次のトークンにどの程度影響するかを決定する機構が必要です。
可視化の仕組みと手法
この「選択的メカニズム」は、実際に見え隠れする現象として確認できます。
- 操作方法: 生成されたトークンのいずれか上でタップしたりマウスカーソルを動かしたりすると、その生成に影響を与えた過去のトークンが視覚的に表示されます。
- 表示ロジック(簡略化への注釈):
- 「Affected(影響を受けた)」という表現は厳密ではありません。
- 可視化には、すべてのレイヤーと注意力ヘッドを横断して計算された注意ウェイトと、値ベクトルの絶対値を掛け合わせた総和値が使用されます。
- この値に基づいて過去のトークンの不透明度を制御しています(最大値を持つトークンのみ不透明度 1 に固定され、他は補間表示)。
留意点: 各過去トークンに単一の数値を割り当てることで多くの情報は失われていますが、直感的ではない懸念とは裏腹に、面白いパターンが見えてくるのが実情です。
具体的な観察例
1. Office Move Summary プロンプト
デフォルトのプロンプトにおける「住所」や「日付」といった文字通りのコピー行為について。
- 現象: 元データをコピーされたテキスト部分(例:住所や日付)にカーソルを移動させると、元データが際立って表示されます。
- 理由: 生成トークンが源データを多く取り入れているためです。
2. 「Debugging an Average Function」の例
小型モデル(約 6 億パラメータ)による関数再構成実験の結果です。
- 成果: 意図的な変更を除けば、JavaScript の関数全体を容易に再生产出せることが確認できました。
- 限界: 問題箇所そのものを特定する能力はなく、ヒントを与える必要がありました。
3. 「Office Move Summary」内の文脈統合
フレーズ "Existing access cards and phone numbers remain" における "remain" へのカーソル合わせで確認された現象です。
- 抽出される単語:
- "Existing employee access cards will work" の "work"
- "company phone numbers will stay the same" の "stay the same"
- 洞察: 2 つの異なるフレーズから、単語レベルで情報を組み合わせている点が非常に魅力的です。
実装の詳細と技術的課題
この可視化を実現するためのアプローチと技術的制約について解説します。
アプリケーション構成
- ベース技術:
を用いた、テキスト生成のための React アプリケーション。Transformers.js - 開発手法: より多くのデータを抽出・表示する必要があるため、通常の生成ループでは対応できず、**即興コーディング(vibe coding)**でアプローチしました。
データ処理とモデル読み込み
- 容量問題: 小型モデルを使用していますが、それでも数百メガバイトに達するため、ダウンロードを待たせる現実的ではありません。
- 対策: アプリ起動時に多数のプロンプトを事前に読み込んで表示できるように準備しています。
ONNX と Transformers.js の制約
- 現状の限界:
は ONNX ファイル(全計算グラフを含む)を使用しており、モデルロジックは WebAssembly (WAS) で実装されています。これにより、定義されていない出力情報へのアクセスは困難です。Transformers.js - 解決策: 通常の ONNX モデルでは不可能な可視化を実現するため、ONNX ファイルをわずかに改修して内部値を外部化するスクリプトを作成しました。
- 動作フロー: ブラウザ上で生成機能を維持しつつ、アプリから別の「計装済みモデル(instrumented model)」をアップロードし指すように設定します(詳細は Hugging Face リポジトリ参照)。
コードの入手方法
実装コードは GitHub リポジトリより入手可能です。
[GitHub リポジトリへのリンク] (※本文に記載なし)