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

Token

トークンとは、サブワードや画像パッチなど、モデルが処理する入力の単位です。テキストを分割するトークナイザー、視覚トークン、トークンのコストについて解説します。

トークンは、AIモデルが処理する入出力の基本単位です。テキストでは単語、単語の一部、文字、バイト、画像ではピクセルのパッチなどを指します。Transformerが文や画像を読み取る前に、トークナイザーが入力をトークンに分割し、それぞれを整数IDに対応付けます。モデルは各IDに対応する埋め込みベクトルを参照します。トークン数によって、モデルが処理できる量と料金が決まります。コンテキストウィンドウはトークン単位で測定され、大規模言語モデル (LLMs)は一度に1トークンずつテキストを生成し、商用APIは入力トークンと出力トークンごとに課金します。

  • トークン化: 生の入力をトークンに分割する処理です。トークンは、その処理で出力される単位の1つです。
  • 語彙とトークンID: トークナイザーの語彙は、認識できるトークンの固定集合であり、各トークンに整数IDが割り当てられています。BERTは30,522個、GPT-2は50,257個、Llama 3は128,256個、Gemma 3は約262,000個のトークンを使用します。
  • 特殊トークン: シーケンスの構造を示すマーカーで、テキスト開始、テキスト終了、パディングの各トークンなどがあります。また、分類にBERTが最終埋め込みを使う [CLS] トークンも含まれます。
  • 埋め込み: モデルの最初のレイヤーが各トークンIDに対して参照する学習済みベクトルで、トークンの意味をネットワークに伝えます。

テキストトークン#

単語全体を使う語彙では、あらゆる名前、誤字、新語を網羅できず、文字単位ではシーケンスが非常に長くなります。そのため、最新のトークナイザーではサブワードを使います。頻出語は1つのトークンになり、まれな単語は再利用可能な部分に分割されます。2016年にSennrichらがニューラル機械翻訳向けに応用したバイトペアエンコーディング (BPE)は、単一文字から始め、語彙が目標サイズに達するまで、隣接する最頻出ペアを繰り返し結合します。GPTモデルはBPEをバイトに適用するため、コードや絵文字を含むあらゆるテキストをエンコードできます。BERTで使われるWordPieceや、SentencePieceのUnigramモデルも、関連するサブワード方式です。ここではHugging Face Hubから読み込んだCLIPのBPEトークナイザーを使って、単語の分割方法を確認します。

from transformers import AutoTokenizer

# Load CLIP's byte-pair-encoding (BPE) tokenizer from the Hugging Face Hub
tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")

for text in ["bus", "double-decker bus", "unhappiness", "Ultralytics"]:
    tokens = tokenizer.tokenize(text)
    print(f"{text!r} -> {tokens} -> {tokenizer.convert_tokens_to_ids(tokens)}")

「bus」はID 2840の単一トークンです。「unhappiness」は un と happiness に分割され、まれな単語「Ultralytics」は ultr、aly、tics の3つに分かれます。</w> という接尾辞は、CLIPの49,408個のトークンからなる語彙で単語の終わりを示します。CLIPのテキストエンコーダーは、プロンプトごとに最大77トークンを読み取ります。

視覚トークン#

論文An Image Is Worth 16x16 Wordsで紹介されたVision Transformer (ViT)は、画像を固定サイズのパッチに分割します。ViT-B/16の場合、パッチは16 × 16ピクセルです。各パッチを埋め込みに射影するため、224 × 224の画像は196個のトークンになります。位置埋め込みで各パッチの位置を記録し、追加のクラス・トークンで分類に使う情報を集約します。射影は通常、ストライドがカーネルサイズと等しい畳み込みとして実装されます。

import torch

# ViT-B/16 patch embedding: a 16x16 convolution with stride 16 turns each patch into one 768-dim token
patch_embed = torch.nn.Conv2d(3, 768, kernel_size=16, stride=16)

for size in (224, 448):
    image = torch.rand(1, 3, size, size)
    tokens = patch_embed(image).flatten(2).transpose(1, 2)  # (batch, tokens, dims)
    print(f"{size}x{size} image -> {tuple(tokens.shape)}")

224 × 224の画像は、768個の値を持つトークンを196個生成します。辺の長さを448ピクセルに倍増するとトークン数は784個になり、4倍に増えます。セルフアテンションでは各トークンが他のすべてのトークンと比較されるため、トークン数が4倍になるとアテンションのコストは約16倍になります。そのため、高解像度モデルではSw​in Transformerのようなウィンドウ型アテンションを使うか、トークンマージで類似トークンを統合します。

視覚言語モデルは、画像エンコーダーから得た視覚トークンをテキストトークンとともにLLMに渡します。すると1つのTransformerが両方にアテンションを適用し、テキストトークンを一度に1つずつ生成して回答します。

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

  • コンテキストの上限: プロンプト、取得した文書や画像、生成する回答のすべてをモデルのコンテキストウィンドウに収める必要があります。
  • コストとレイテンシ: APIでは入力トークンと出力トークンが別々に課金されます。また、出力トークンごとにモデルのKVキャッシュを読み込むデコードステップが必要なため、生成時間は出力トークン数とともに増加します。
  • 言語と形式: 主に英語で学習したトークナイザーは、他の言語、コード、長い数値を単語あたりより多くのトークンに分割します。そのため、同じ内容でもコストが増え、コンテキストウィンドウが早く埋まります。
  • 文字レベルのタスク: モデルが認識するのはサブワードトークンです。そのため、単語の文字数を数えたり、単語を逆順にしたりするような個々の文字に依存するタスクは、見た目より難しくなります。

実際のアプリケーション#

  • テキスト生成: LLMは語彙内の各トークンに確率を割り当て、1つをサンプリングしてシーケンスに追加し、この処理を繰り返します。nucleus samplingなどのサンプリング手法では、確率の高いトークンから選択します。
  • 画像生成: 自己回帰型画像モデルは、ベクトル量子化で構築した学習済みコードブックから、離散的な視覚トークンを予測します。これはLLMが単語を予測する方法に似ています。
  • オープン語彙検出: Ultralyticsパッケージに含まれる、清華大学のYOLOEをベースにしたYOLO26版であるYOLOE-26は、入力したクラス名から物体を検出します。その set_classes() メソッドはCLIPのBPEトークナイザーで各名前をトークン化し、AppleのMobileCLIP2テキストエンコーダーがトークンを埋め込みに変換します。モデルはその埋め込みと画像領域を照合するため、COCOデータセットに含まれない「二階建てバス」のようなクラスも、単語だけから検出できます。

ソリューションを見る

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

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

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の未来を一緒に築きましょう!

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