言語モデルがテキストを読み取るには、まずテキストを数えられる単位に分割する必要があります。これらの単位はトークンと呼ばれ、トークン化とはまさにその分割作業のことです。トークンは単語全体、例えば「ing」や「pre」のような断片、句読点、あるいは単一の文字である場合もあります。モデルは生のテキストを直接見ることはなく、トークンにマッピングされた一連の整数IDを見るだけです。
異なる方式にはそれぞれ異なるトレードオフがあります。単語レベルのトークン化は意味を損ないませんが、数百万もの珍しい単語が生成され、タイプミスが発生しやすくなります。文字レベルのトークン化は語彙は小さいものの、非常に長いシーケンスを生成します。バイトペアエンコーディングなどのサブワード方式は、その中間に位置します。文字から始めて、最も頻繁に出現するペアを繰り返し結合し、目標の語彙サイズに達するまで続けます。
なぜそれが重要なのか
- 語彙サイズによって、モデルの埋め込みテーブルとメモリ使用量が決まります。
- トークン数によってコンテキストウィンドウと各API呼び出しのコストが決まります
- トークン化が不十分だと、単語が分割されて多言語処理のパフォーマンスが低下する。
- ラテン文字以外の文字体系を持つ言語では、文あたりのトークン数がはるかに多く必要となることが多い。
英語の文は20トークン程度で済むかもしれないが、同じ文でもタイ語やヒンディー語では、欧米中心のトークナイザーでは60トークン以上必要になることがある。この不均衡は、何十億もの話者にとって、処理速度、コスト、そして精度に影響を与える。
Comments
No comments yet. Be the first to share a thought.
Leave a comment