Stop sequences (language models) — ストップシーケンス

From Systems analysis wiki
Jump to navigation Jump to search

Stop Sequence (停止シーケンス) は、大規模言語モデル (LLM)の文脈において、テキスト生成を停止する必要があることをモデルに知らせる、特殊な文字またはトークンのシーケンスです[1]。このメカニズムは、自己回帰言語モデルの重要な構成要素であり、応答の制御可能で予測可能な完了を保証します。

ストップシーケンスを使用すると、モデルは生成の各ステップで、生成済みのテキストが指定されたシーケンスのいずれかで終わっていないかを確認します。一致が見つかった場合、プロセスは即座に停止され、ストップシーケンス自体は最終的な出力に含まれません[2]。これにより、開発者はプロンプト自体を変更することなく、応答の境界を正確に制御できます。

機能の基本原則

自己回帰言語モデルでは、テキスト生成はトークンごとに逐次的に行われます。各ステップで、モデルは先行するすべてのシーケンス(入力プロンプトと既に生成されたテキスト)に基づいて次のトークンを予測します。数学的には、これは条件付き確率として次のように表されます。

P(yty<t,x)

ここで、yt は現在生成中のトークン、y<t はそれ以前に生成されたトークンのシーケンス、x は入力シーケンスです[3]

ストップシーケンスのメカニズムは、この反復プロセスを中断するための外部基準として機能します。

ストップシーケンスの種類

個別にも組み合わせても使用できる、いくつかの主要な停止メカニズムの種類が存在します。

1. End-of-Sequence (EOS) tokens - シーケンス終了 (EOS) トークン

End-of-Sequence (EOS) は、モデルの語彙に組み込まれた特殊なトークン(例:`<|endoftext|>`)であり、テキストの論理的な断片の終わりを示すために設計されています。モデルは、トレーニングデータセット内のすべてのテキストがこのトークンで終わるため、応答が完了したと判断したときにEOSトークンを生成するように学習します[4]。EOSトークンが検出されると、生成は自動的に停止します。

研究によれば、EOSトークンの存在はアテンションアーキテクチャに影響を与え、モデルは内部的な位置カウントメカニズムを発達させます。しかし、これはトレーニング例の長さを大幅に超えるシーケンスに対するモデルの外挿能力を制限する可能性があります[5]

2. ユーザー定義シーケンス

これらは、開発者が特定のタスクのために設定する任意の文字列です。これらはモデルの語彙の一部ではありませんが、文字レベルで追跡されます。例は次のとおりです。

  • 改行文字: 段落の後に停止するための `\n` または `\n\n`。
  • コンテキストマーカー: 対話での発話を区切るための `Human:`、`User:`、または `Q:`。
  • 特殊マーカー: `###`、`</output>`、または `END`。

3. 構造的シーケンス

これらは、特定の構造的要素を完了するために使用される特殊なマーカーであり、フォーマットされたコンテンツを生成する際に非常に重要です[1]

  • コード: コードブロックを終了するためのトリプルバッククォート (```)。
  • JSON/XML: 閉じ括弧 (`}`) またはタグ (`</element>`)。

技術的実装と課題

ストップシーケンスの効果的な検出は、多くの複雑さを伴う簡単な課題ではありません。

検出アルゴリズムと最適化

実際のシステムにおける検出プロセスには、以下が含まれます。

  1. 各ステップでのチェック: 新しいトークンが生成されるたびに、システムは現在の出力が指定されたストップシーケンスのいずれかで終わっていないかを確認します。
  2. 部分一致の処理: システムは、シーケンスの一部が生成されたが、完全な一致がまだない状況を追跡する必要があります。
  3. 複数基準のチェック: ほとんどのシステム(例:OpenAI API)では、複数(最大4つ)のストップシーケンスを同時に追跡できます[2]

Hugging Face Transformersフレームワークでは、このために抽象クラス `StoppingCriteria` が実装されており、`MaxLengthCriteria`(長さによる)や `EosTokenCriteria`(EOSトークンによる)などのカスタム停止基準を作成できます[4]

課題と制限

  • トークン化の問題: これが主要な技術的課題です。同じ文字シーケンス(例:`\nUser:`)が、文脈によって異なる方法でトークンに分割されることがあります。ストップシーケンスが複数のトークンにまたがってしまう可能性があるため、信頼性の高い検出が困難になります[5]
  • パフォーマンス: 各ステップで多数の長いストップシーケンスをチェックすると、特にリアルタイムで長いシーケンスを扱う場合に生成が遅くなる可能性があります。
  • 誤検出: 指定されたシーケンスが意図した応答の途中で偶然出現し、早期終了を引き起こす可能性があります。そのため、十分にユニークで特定のマーカー(例:`\n###\n`)を選択することが重要です[6]

応用と利用シナリオ

ストップシーケンスは、LLMの振る舞いを制御するための強力なツールです。

  • 長さとコストの制御: 応答の最大サイズを制限し、結果としてトークンの消費を削減できます。これは有料APIを使用する際に重要です。
  • 対話システム: 対話者の発話を明確に区切るために使用され、アシスタントモデルがユーザーの代わりに応答を生成するのを防ぎます。
  • 構造化コンテンツの生成: JSON、XML形式での正しい出力やコード記述において不可欠であり、構造の完了後に追加情報が付加されるのを防ぎます[7]
  • 望ましくない振る舞いの防止: 繰り返しや不正確なコンテンツ(ハルシネーション)が出現した場合に生成を中断するのに役立ちます。
  • 学習とファインチューニング: トレーニングデータセットでは、モデルが適切な場所で応答を終了することを学習できるように、ユニークなマーカー(例:`###`)がストップシーケンスとして頻繁に使用されます[6]

現代の研究動向

  • 適応的停止基準: コンテキストと生成されたテキストの品質に基づいて、終了点を動的に決定する手法の開発。
  • エントロピーに基づくアプローチ: トークン分布のエントロピーを基準として使用します。高いエントロピーはモデルの不確実性を示す可能性があり、生成を停止する信号として機能します。

外部リンク

参考文献

  • Sutskever, I.; Vinyals, O.; Le, Q. V. (2014). Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215.
  • Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
  • Keskar, N. S. et al. (2019). CTRL: A Conditional Transformer Language Model for Controllable Generation. arXiv:1909.05858.
  • Holtzman, A. et al. (2020). The Curious Case of Neural Text Degeneration. arXiv:1904.09751.
  • Brown, T. et al. (2020). Language Models are Few-Shot Learners. arXiv:2005.14165.
  • Zong, M.; Krishnamachari, B. (2022). A Survey on GPT-3. arXiv:2212.00857.
  • Zhao, Y. et al. (2022). Calibrating Sequence Likelihood Improves Conditional Language Generation. arXiv:2210.00045.
  • Hu, J. C.; Cavicchioli, R.; Capotondi, A. (2023). A Request for Clarity over the End-of-Sequence Token in the Self-Critical Sequence Training. arXiv:2305.12254.
  • Zhu, W. et al. (2024). Improving Open-Ended Text Generation via Adaptive Decoding. arXiv:2402.18223.
  • Zhang, H. et al. (2024). Adaptable Logical Control for Large Language Models. arXiv:2406.13892.
  • Suh, Y. J. et al. (2025). The Curious Case of Sequentially Mis-calibrated Language Models. arXiv:2205.11916.

脚注

  1. 1.0 1.1 “Stop Sequence: Understanding & Setting It Correctly”. Promptitude.io Help Center. [1]
  2. 2.0 2.1 “How do I use stop sequences in the OpenAI API?”. OpenAI Help Center. [2]
  3. “How to use stop sequences?”. Vellum. [3]
  4. 4.0 4.1 Brown, Tom, et al. “A Survey on GPT-3”. arXiv:2212.00857 [cs.CL], 2022年12月1日. [4]
  5. 5.0 5.1 Suh, Y. J., et al. “The Curious Case of Sequentially Mis-calibrated Language Models”. arXiv:2205.11916 [cs.CL], 2022年5月24日. [5]
  6. 6.0 6.1 Eric, Mihail. “How to Finetune GPT3”. mihaileric.com. [6]
  7. Corin, Daniel. “Way Enough - Cursor Triple Backticks Stop Sequence”. danielcorin.com. [7]