LLM基礎

トークナイザー とーくないざー

トークナイザーTokenizerテキスト分割BPESentencePiece語彙
トークナイザーについて教えて

簡単に言うとこんな感じ!

「人間が書いた文章」をAIが処理できる「数字の列(トークンID)」に変換する翻訳機だよ!「こんにちは」→[12345, 6789, …]みたいに変換するんだ。同じ文章でもトークナイザーが違うと分割の仕方が変わって、処理効率やコストが変わってくるよ!


トークナイザーとは

トークナイザー(Tokenizer) とは、生のテキスト文字列を、LLMが処理できるトークンIDの数値列に変換するプログラムです。逆に、LLMが出力した数値列をテキストに戻すデコードも担当します。各LLMは専用のトークナイザーを持ち、モデルと一緒に配布されます。

トークナイザーはまず大量のテキストから語彙(Vocabulary) を構築します。語彙は「頻繁に出現する文字列のパターン」の集合で、GPT-4のGPT2トークナイザーは約50,000〜100,000の語彙を持ちます。テキストが入力されると、語彙に基づいてサブワード分割を行い、各部分に対応するIDを返します。


トークナイズの流れ

入力テキスト: 「機械学習は楽しい!」

ステップ1: 正規化・前処理
  → 「機械学習は楽しい!」(Unicode正規化等)

ステップ2: サブワード分割(BPEの場合)
  → 「機械」「学習」「は」「楽し」「い」「!」

ステップ3: トークンIDへの変換
  → [5432, 2891, 12, 7654, 89, 2]

この数値列がLLMへの入力になる
出力も数値列 → デコードでテキストに変換

主要なトークナイザーの種類

種類特徴採用例
WordPiece語彙効率が良い、BERTBERT、ALBERT
BPE高頻度パターンを結合GPT-2/3/4、LLaMA
SentencePiece言語非依存、多言語対応T5、mT5、LLaMA 2
TiktokenOpenAI独自の高速BPEGPT-4o、o1

歴史と背景

  • 2016年:Googleが「SentencePiece」を公開、多言語対応が向上
  • 2018年:BERTのWordPieceが広く普及
  • 2019年:GPT-2でBPEが大規模LLMに採用
  • 2022年:OpenAIが「tiktoken」を公開し、高速・軽量な実装が標準化
  • 現在:日本語の効率的なトークナイズは引き続き課題(英語比で2〜3倍のトークンが必要)

日本語処理での注意点

英語: "machine learning" → 2〜3トークン
日本語: 「機械学習」→ 4〜6トークン

日本語は英語より多くのトークンを消費するため:
  1. APIコストが英語より高くなる
  2. 同じコンテキスト長でも格納できる文字数が少ない
  3. 日本語特化モデル(Rinna、PLaMoなど)は日本語効率が改善

関連用語