Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Tokenization

トークナイゼーションでは、テキスト、画像、音声をトークンに分割し、モデルがそれらを埋め込みに変換します。BPEなどのサブワード手法、画像パッチ、トークンのコストについて解説します。

トークン化とは、未加工の入力を、モデルが読み取る離散単位であるtokensのシーケンスに変換し、各トークンに固定語彙から整数IDを割り当てる処理です。テキストトークナイザーは「The bus stopped.」を4つのIDに変換し、モデルはそれぞれの埋め込みベクトルを参照します。そのため、トークナイザーによって大規模言語モデル(LLM)が何を1つの単位として扱うかが決まります。トークンはモデルのコンテキストウィンドウ、テキスト生成中の推論レイテンシ、API料金の単位でもあります。同じ考え方はテキスト以外にも当てはまります。Vision Transformer(ViT)は画像をパッチにトークン化し、音声モデルは音声を短いフレームにトークン化します。

サブワードトークン化の仕組み#

初期の自然言語処理(NLP)では、テキストを空白や句読点で分割していたため、まれな単語や新語を語彙に含められませんでした。一方、文字単位のトークン化ではシーケンスが非常に長くなります。現代のTransformerは、頻出語はそのまま保持し、まれな語は再利用可能な部分に分割するサブワードトークナイザーを使います。バイトペアエンコーディング(BPE)は、Sennrichらが2015年に機械翻訳向けに応用した手法で、学習コーパスから語彙を構築します。単一の文字またはバイトから始め、語彙が目標サイズに達するまで、隣接するペアのうち最も頻度の高いものを新しいトークンに繰り返し統合します。新しいテキストのエンコードでは、学習済みの統合を順番に適用します。

GPT-2以降に使われているバイトレベルBPEは、256通りのバイト値から始めるため、未知トークンを使わずに任意の文字列、絵文字、ソースファイルをエンコードできます。他のアルゴリズムでは異なる方法で部分文字列を選択します。BERTで使われるWordPieceは、学習データの尤度を最も高めるペアを統合します。GoogleのSentencePieceライブラリにあるUnigram方式は、大きな候補語彙から始めて候補を削除していきます。空白を通常の記号として扱うため、空白を使わずに書く言語にも1つのトークナイザーを使用できます。語彙は時代とともに拡大してきました。BERTは30,522トークン、GPT-2とGPT-3は50,257トークン、Llama 3は128,256トークン、OpenAIのo200k_baseは約200,000トークンを使用します。OpenAIのtiktokenライブラリで、これらの語彙のうち最も古いものと新しいものを比較します。

import tiktoken

# Byte-level BPE vocabularies from GPT-2 (2019) and GPT-4o (2024)
for name in ["gpt2", "o200k_base"]:
    encoding = tiktoken.get_encoding(name)
    print(f"{name}: {encoding.n_vocab:,} tokens in the vocabulary")
    for text in ["Ultralytics YOLO26 detects buses.", "バスが止まった。"]:
        ids = encoding.encode(text)

        # Decode each ID on its own to see where the tokenizer split the text
        pieces = [encoding.decode([i]) for i in ids]
        print(f"  {len(ids)} tokens: {pieces}")

GPT-2の語彙では英語の文に11トークンが必要です。「Ultralytics」はUlt、ral、y、ticsに分割されます。一方、o200k_baseでは9トークンで済みます。日本語の文「the bus stopped」では、GPT-2は9トークンを必要とし、文字「止」を2つのバイトレベルトークンに分割します。それぞれ単独でデコードすると置換文字�になります。一方、o200k_baseでは7トークンで済みます。

  • トークン: トークン化によって生成される単位で、単語、サブワード、バイト、画像パッチ、音声フレームなどがあります。
  • 埋め込み: トークナイザーが事前に定めた語彙内の各トークンIDに対してモデルが参照する学習済みベクトルであり、ネットワークの他の部分とともに学習されます。
  • 従来のNLPにおける単語分割: spaCyやNLTKなどのライブラリは、構文解析や品詞タグ付けのためにテキストを単語と句読点に分割します。その後、言語分析のために語幹化や見出し語化を行うこともよくあります。
  • データセキュリティにおけるトークン化: 決済やデータ保護では、トークン化によってカード番号などの機密値を、保護された保管庫に保存されるランダムな代替値に置き換えます。

トークン数が重要な理由#

英語のテキストでは、OpenAIのトークナイザーは平均して1トークンあたり約4文字ですが、他の言語やコードでは、はるかに多くのトークンが必要になる場合があります。Petrov et al. (2023)は、同じテキストでも言語によってトークン化後の長さが最大15倍異なることを示しました。そのため、APIコストが増加し、これらの言語で利用できるコンテキストが狭まります。トークンの境界は、モデルが認識できる内容にも影響します。「strawberry」を複数の複数文字トークンとして読むLLMは、各文字を直接認識できません。また、o200k_baseでは「3.14159」が3、.、141、59に分割されるため、桁単位の算術処理が難しくなります。MetaのByte Latent Transformerなど、トークナイザーを使わない設計では、固定語彙を使わず、次のバイトの予測しやすさに応じたサイズのパッチに生バイトをまとめます。

画像、音声、動画のトークン化#

ViTは画像を固定サイズのパッチに分割します。たとえば、16×16ピクセルのパッチを使うと、224×224の画像は196個のパッチトークンになります。各パッチはフラット化され、セルフアテンションの前に線形射影によって埋め込みに変換されます。視覚言語モデル(VLMs)は、パッチの埋め込みをテキストトークンとともにLLMに渡すため、画像解像度が高いほどリクエストあたりのトークン数が増えます。画像生成モデルでは、代わりに離散的な視覚トークンがよく使われます。ベクトル量子化のコードブックは、各パッチを最も近いコードベクトルのIDに置き換えます。これにより、視覚的自己回帰モデルはテキストと同様にトークン単位で画像を生成でき、トークンマージは類似するトークンを統合して、長い画像・動画シーケンスのトークン数を削減します。

ビジョンモデルもテキストをトークン化します。YOLOE-26がset_classesを通じてクラス名を受け取ると、Ultralyticsは各名前をCLIPのバイトレベルBPEトークナイザーに通し、77トークンになるようパディングまたは切り詰めます。次に、AppleのMobileCLIP2テキストエンコーダーが結果を埋め込みに変換し、検出ヘッドが画像領域との照合に使用します。音声認識では、OpenAIのWhisperが30秒ごとの音声ウィンドウを対数メルスペクトログラムのフレームに変換し、エンコーダーが1,500位置のシーケンスとして処理します。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう