Stop sequences (language models) — ストップシーケンス
Stop Sequence (停止シーケンス) は、大規模言語モデル (LLM)の文脈において、テキスト生成を停止する必要があることをモデルに知らせる、特殊な文字またはトークンのシーケンスです[1]。このメカニズムは、自己回帰言語モデルの重要な構成要素であり、応答の制御可能で予測可能な完了を保証します。
ストップシーケンスを使用すると、モデルは生成の各ステップで、生成済みのテキストが指定されたシーケンスのいずれかで終わっていないかを確認します。一致が見つかった場合、プロセスは即座に停止され、ストップシーケンス自体は最終的な出力に含まれません[2]。これにより、開発者はプロンプト自体を変更することなく、応答の境界を正確に制御できます。
機能の基本原則
自己回帰言語モデルでは、テキスト生成はトークンごとに逐次的に行われます。各ステップで、モデルは先行するすべてのシーケンス(入力プロンプトと既に生成されたテキスト)に基づいて次のトークンを予測します。数学的には、これは条件付き確率として次のように表されます。
ここで、 は現在生成中のトークン、 はそれ以前に生成されたトークンのシーケンス、 は入力シーケンスです[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>`)。
技術的実装と課題
ストップシーケンスの効果的な検出は、多くの複雑さを伴う簡単な課題ではありません。
検出アルゴリズムと最適化
実際のシステムにおける検出プロセスには、以下が含まれます。
- 各ステップでのチェック: 新しいトークンが生成されるたびに、システムは現在の出力が指定されたストップシーケンスのいずれかで終わっていないかを確認します。
- 部分一致の処理: システムは、シーケンスの一部が生成されたが、完全な一致がまだない状況を追跡する必要があります。
- 複数基準のチェック: ほとんどのシステム(例: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.0 1.1 “Stop Sequence: Understanding & Setting It Correctly”. Promptitude.io Help Center. [1]
- ↑ 2.0 2.1 “How do I use stop sequences in the OpenAI API?”. OpenAI Help Center. [2]
- ↑ “How to use stop sequences?”. Vellum. [3]
- ↑ 4.0 4.1 Brown, Tom, et al. “A Survey on GPT-3”. arXiv:2212.00857 [cs.CL], 2022年12月1日. [4]
- ↑ 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.0 6.1 Eric, Mihail. “How to Finetune GPT3”. mihaileric.com. [6]
- ↑ Corin, Daniel. “Way Enough - Cursor Triple Backticks Stop Sequence”. danielcorin.com. [7]