powered by TechFeed
表示モード
Deep Dive

LLMはプロンプトを「命令」として読んでいない — 確率分布の操作として捉え直すと、なぜ指示が無視されるかがわかる

6月26日、Silicon Operaが「Your LLM Prompt Isn't Being Read the Way You Think」と題した記事を公開した。LLMがプロンプトをトークンの確率分布として処理する仕組みを踏まえた、実践的なプロンプト設計の考え方について詳しく紹介されている。

6月26日、Silicon Operaが「Your LLM Prompt Isn't Being Read the Way You Think」と題した記事を公開した。LLMがプロンプトをトークンの確率分布として処理する仕組みを踏まえた、実践的なプロンプト設計の考え方について詳しく紹介されている。


プロンプトは「命令」ではなく「確率分布の操作」である

多くの人はプロンプトを「指示を書いて出力を得る」ものとして捉えている。人間への指示や関数呼び出しと同じ感覚だ。しかしLLMの動作原理はそれとは根本的に異なる。

GPT-4やClaudeはプロンプトを読む際、人間のように「意図を解釈」しているわけではない。テキストをトークン(単語や単語の断片に相当する数値列)に変換し、「この文脈の次に来る可能性が高いトークンはどれか」を予測している。モデルはあなたが「何をしたいか」を理解していない。あなたのテキストに似た文脈の後に何が続くかを、統計的に推定しているだけだ。

この違いは、うまくいっているときは気にならない。問題は失敗したときで、原因の診断がまるで変わってくる

「Think step by step」がなぜ効くのか

記事が端的な例として挙げているのが、この有名なプロンプトフレーズだ。

「Think step by step(ステップ・バイ・ステップで考えてください)」という指示が機能するのは、モデルが「丁寧に推論することの価値を理解した」からではない。学習データの中でこのフレーズの後に続くテキストが、慎重で体系的な内容であることが多かったからだ。あなたは命令を発したのではなく、出力の確率分布を特定の方向に動かしたのである。

逆に言えば、「箇条書きを使うな」と明示しても無視されることがあるのも同じ理由だ。学習データ上で「親切なアシスタント」は箇条書きを多用する傾向があり、その統計的な重みが明示的な指示を上回ることがある。モデルはあなたに反抗しているのではなく、単に確率のバランスが指示に勝っているだけだ。

「プロンプトの位置」は意外なほど重要

Transformerモデルのアテンション機構に関する研究が、重要な事実を示している。プロンプトの先頭と末尾に置かれた情報は、中間に埋め込まれた情報より信頼性高く処理される

この現象は「Lost in the Middle問題」と呼ばれており、情報が全く同一であっても、長いコンテキストの中間に置かれると検索タスクでの性能が著しく低下することが示されている。(※元記事では「Lost in the Middle」として言及されているが、Stanford研究者による特定論文への帰属は元記事の記述に基づいている。編集部では出典の詳細を独立して確認できていないため、学術的な引用として扱う場合は原論文の確認を推奨する)

実務上の含意はシンプルだ。

  • 長いシステムプロンプトの中間に重要な制約を書くのはリスクが高い
  • 絶対に守ってほしい指示は先頭か末尾に置く

コンテキストウィンドウが拡大するにつれて、この問題は軽減されるどころかより顕在化していると記事は指摘する。

「具体的に書け」は正しいが、半分しか説明できていない

よく言われる「プロンプトは具体的に書け」というアドバイスは正しい。ただし、なぜ効果があるのかの説明としては不十分だ。

  • 「商品説明を書いて」
  • 「トレイルランナー向けウォーターボトルの商品説明を100字以内で、直接的かつ気取りのないトーンで書いて」

2番目が優れているのは「意図を明確に伝えた」からではなく、そのトークンの組み合わせがモデルの出力空間の中で適切な領域を活性化するからだ。欲しいドキュメントに似たコンテキストを組み上げている、という方が実態に近い。

Few-shotプロンプティング(例示を与える手法)が強力なのも同じ理由だ。例示は「補足説明」ではなく、ターゲットとする出力分布のサンプルそのものだ。「統計的に言えば、こういうものが欲しい」と伝えている。

出力がおかしいとき、何を問うべきか

モデルが指示の一部を無視した出力を返したとき、多くの人は「モデルが理解できなかった」と判断する。しかし実際は、学習データによる統計的な引力がプロンプトの指示を上回ったケースも多い。

この視点から見ると、プロンプトの言い回しを変えることで問題が解決するのも説明できる。意味を明確にしたのではなく、プロンプトが属する統計的な近傍が変わったのだ。専門的なドキュメントの文体で書けば、そのような出力に引き寄せられる。くだけた会話調で書けば、別の分布に引き寄せられる。

記事の結論はこうだ。モデルはプログラムを実行しているのではなく、プロンプトが形作る確率分布からサンプリングしている。安定した出力を得るには、例示・制約・具体的な言い回しで分布を積極的に絞り込むか、確率的なシステムとして割り切って設計するかのどちらかだ。

何かがうまくいかないとき、問うべきは「何を誤解したのか」ではなく、「どの分布に誤って照準を合わせたのか」である。


詳細はYour LLM Prompt Isn't Being Read the Way You Thinkを参照していただきたい。