トークン化の解説:トークンから出力まで
執筆:Wendy Frey

大規模な言語モデルが有用なものを生成する前に、まずはもっと簡単なことをしなければなりません。それは、あなたのテキストを分割することです。
そのプロセスをトークン化と呼び、これは現代のAIシステムの働きの中で最も重要かつ見落とされがちな部分の一つです。
多くの人はモデルが単語を読むと思っていますが、実際にはそうではありません。
彼らはトークンを読みます。トークンとは、完全な単語、単語の一部、句読点、空白、あるいは個々の記号を表す小さなテキストの塊です。それらのトークンは内部で処理可能な数値IDに変換されます。
トークン化を理解することで、多くのことを説明できます。
- プロンプトが料金を要する理由
- コンテキストウィンドウに制限がある理由
- なぜ一部の言語が他よりも高価なのか
- なぜモデルが時々変わった挙動をするのか
トークン化はAIパイプラインの最初の段階に位置し、その後のすべてを静かに形作ります。
トークンとは?
トークンは、モデルが扱うテキストの最小単位です。
それは必ずしも単語と同じではありません。
例えば:
| テキスト | 可能なトークンスプリット |
|---|---|
| hello | hello |
| tokenization | token + ization |
| unbelievable | un + believ + able |
| 2026! | 202 + 6 +! |
これは重要です。なぜなら、モデルは単語ではなくトークンを数えるからです。
見た目は短い文章でも、特に珍しい単語、コード、絵文字、または非英語の言語を含む場合、予想以上に多くのトークンを使用することがあります。
トークン化の仕組み
高レベルでは、トークン化は単純なパイプラインに従います。
ステップ1:テキストを分割する
トークナイザーは、生のテキストをその語彙ルールに基づいてチャンクに分けます。
現代のLLMは通常、サブワードトークナイゼーションに依存しており、フルワードトークナイゼーションではありません。
これにより、以下のような柔軟性が得られます。
- 珍しい単語
- タイポ
- 名前
- 多言語入力
- コード
ステップ2:トークンをIDに変換する
各トークンは、モデルの語彙内の番号にマッピングされます。
例:
| トークン | トークンID |
|---|---|
| The | 791 |
| model | 4382 |
| works | 2921 |
モデルはテキストを直接「見る」ことはありません。彼らはこれらの数値表現だけを見ています。
それが人間の言語と神経計算の間の架け橋です。
ステップ3:IDをエンベッディングに変換する
トークンIDが作成された後、それらはベクトルエンベッディングに変換されます。
ここから意味が現れ始めます。
この段階では:
- 類似のトークンはベクトル空間内の近くの位置を占めることができる
- 概念間の関係が測定可能になる
- コンテキストが重要になってくる
トークン化はデータをシステムに取り込みます。エンベッディングはそれを解釈可能にします。
なぜサブワードトークナイゼーションが標準になったのか
古いNLPシステムはしばしばテキストを単語単位で分割していました。
それは機能しましたが、見たことのない単語にぶつかると問題が発生しました。
現代のLLMは通常、**バイトペアエンコーディング(BPE)**や類似のサブワード戦略を使用します。
BPEは、頻繁に出現する文字パターンを再利用可能な単位に繰り返しマージすることで機能します。これにより圧縮と語彙効率が向上します。
なぜサブワードモデルが優れているのか
| 方法 | 主な問題 |
|---|---|
| 単語レベル | 未知の単語が多すぎる |
| 文字レベル | 遅すぎる、長すぎる |
| サブワードレベル | 柔軟性と効率のバランスが最良 |
これが、ほとんどの現代モデルがサブワードトークナイゼーションのバージョンを使用する理由です。
なぜトークン化がコストに影響するのか
ここでトークン化は実用的になります。
ほとんどのAI APIは以下に基づいて請求します。
- 入力トークン
- 出力トークン
つまり、トークン化が価格に直接影響します。
例えば:
| 入力タイプ | おおよそのトークン密度 |
|---|---|
| シンプルな英語 | 低 |
| コード | 中, 高 |
| 法律文書 | 高 |
| 中国語/日本語 | より高いことが多い |
| 絵文字が多いテキスト | 驚くほど高い |
同じ文字数の2つのプロンプトでも、トークン数は非常に異なることがあります。
これは、プロダクションAIシステムにおける一般的な隠れたコストドライバーの一つです。
なぜトークン化がモデルの挙動に影響を与えるのか
トークン化は多くの「奇妙な」モデルの挙動も説明します。
例えば:
- なぜモデルが文字数のカウントに苦労するのか
- なぜ珍しい単語が予測不可能に振る舞うのか
- なぜフォーマットの変更が出力に影響を与えるのか
- なぜプロンプトの順序が重要なのか
モデルは、人間のように文字や文法で考えるわけではありません。彼らはトークンのシーケンスを予測します。
その違いが、ユーザーが気づく多くの quirks を生み出します。
コミュニティの議論では、トークン構造がモデルが文字レベルの推論に失敗する理由の一つとして指摘されることがよくあります。
トークンが出力に変わる
入力がトークン化されると、
- トークンがトランスフォーマーに入ります
- モデルが次のトークンを予測します
- そのトークンが追加されます
- このプロセスが繰り返されます
これは次のいずれかが発生するまで続きます。
- 停止トークンが現れる
- トークン制限に達する
- システムが生成を中断する
これは、AI生成が基本的にはトークンごとの予測ループであり、文レベルの推論ではないことを意味します。
最後のまとめ
トークン化は小さな技術的詳細のように見えますが、現代のLLMシステムのほぼすべてを形作ります。
それは以下に影響します。
- コスト
- 速度
- コンテキスト限界
- 多言語パフォーマンス
- モデルの挙動
- 出力の品質
AIを使って構築する場合、トークン化を理解すると、システムがなぜそのように振る舞うのかについての直感が大幅に向上します。
エンベッディング、トランスフォーマー、または出力の前に、トークンがあります。
そしてすべてはそこから始まります。
慎重なプロンプト設計、語彙選択、トークン予算は、あなたのトークン使用とトークンカウントがコストと品質の目標に沿うよう助けます。その成果は、予期しない完了が少なく、APIコストが低くなり、モデルがユーザーが書く方法をよりよく理解できるようになります。




