なぜ「数字に変える」のか

コンピュータは文字列を直接扱えません。「猫」と「犬」を見せても、それが似た意味の単語だなんて分かりません。文字コード上では「猫」(U+732B)と「犬」(U+72AC)は単なる数字の羅列で、両者の意味的な近さは表現されていないのです。

Attentionが「単語同士の関係性」を計算するためには、まず単語を「意味を含んだ数値ベクトル」に変換する必要があります。これがAttentionに入る前の最初のステップ、Embedding(埋め込み)です。

graph LR
  A[文章\n猫が好き] --> B[Tokenizer\n断片化]
  B --> C[トークンID\n猫=1234\nが=87\n好き=5678]
  C --> D[Embedding\n各IDを\n512次元\nベクトルに]
  D --> E[Attention\n次章以降]

  style A fill:#3b82f6,stroke:#1d4ed8,color:#fff
  style B fill:#8b5cf6,stroke:#6d28d9,color:#fff
  style C fill:#f97316,stroke:#ea580c,color:#fff
  style D fill:#14b8a6,stroke:#0d9488,color:#fff
  style E fill:#3b82f6,stroke:#1d4ed8,color:#fff
文字列→トークン→ID→ベクトル。Attentionが扱うのは最後のベクトル表現

Tokenizer — 文章を「トークン」に分割する

Tokenizer(トークナイザ) は、文章をAIが扱いやすい小さな単位(トークン)に分割するプログラムです。

最も素朴な方法は「単語ごとに分割する」ですが、これだと未知の単語(造語、固有名詞)に対応できません。「unhappiness」を学習データで見たことがないと処理できない、というわけです。

そこで現代のLLMは BPE(Byte-Pair Encoding) という方式を使います。BPEは頻出する文字ペアを繰り返し統合し、サブワード(単語の部品)の辞書を作る方法です。

文字列 トークン例(GPT-4の場合) トークン数
I love AI ["I", " love", " AI"] 3
Hello, world! ["Hello", ",", " world", "!"] 4
機械学習 ["機", "械", "学", "習"] または ["機械", "学習"] 2〜4
unbelievable ["un", "bel", "iev", "able"] 4
Tokyo ["Tokyo"] 1(1単語=1トークン)
東京 ["東", "京"] 2(2文字=2トークン)

Vocabulary — モデルが知っている全トークンの辞書

Tokenizerが分割するトークンの全集合を Vocabulary(語彙) と呼びます。各トークンには固有の整数ID(語彙ID)が振られます。

モデル Vocabulary数 対応言語
GPT-2 約50,000 英語中心
BERT (multilingual) 約110,000 104言語
GPT-4 約100,000 多言語対応強化
Llama 3 約128,000 多言語
Claude 3 非公開 多言語

「猫」というトークンが語彙ID 1234に対応する、というように、文章はまず「整数の列」に変換されます。

Embedding — 意味を持つベクトルに変える

整数IDになった次は、いよいよ Embedding(埋め込み) です。各トークンIDを、数百〜数千次元の実数ベクトル に変換します。

# 例: GPT-2 (d_model = 768) の場合
"猫" (ID=1234) → [0.12, -0.45, 0.78, ..., 0.23]  # 768個の実数
"犬" (ID=2345) → [0.15, -0.40, 0.81, ..., 0.20]  # 似ている
"車" (ID=3456) → [-0.83, 0.62, -0.11, ..., 0.95] # 全然違う

ここで重要なのは、意味の近い単語は、ベクトル空間で近い位置に配置される ということです。これは人間が手で決めるのではなく、大量のテキストで学習した結果として 自動的に獲得される 性質です。

分布仮説 — 「単語の意味はその周囲で決まる」

なぜ機械が単語の意味を学習できるのでしょうか? その理論的根拠が、1957年の言語学者 J.R. Firth による有名な格言です。

"You shall know a word by the company it keeps."(単語はその周囲の単語によって特徴づけられる)

「猫」と「犬」は、似たような文脈で使われます(「ペットの○○」「○○を飼う」「○○がかわいい」など)。だから、周囲の単語の出現パターンから、「猫」と「犬」が意味的に近いと機械が判断できる、というわけです。これを 分布仮説(Distributional Hypothesis) と呼びます。

驚きの性質 — king - man + woman ≒ queen

Embeddingが獲得する最も有名な性質が、次の式です。

vec("king") - vec("man") + vec("woman") ≒ vec("queen")

ベクトルの足し引きが、なんと 「意味の演算」 に対応するのです。これは2013年のWord2Vec(Mikolov et al.)で広く知られるようになった性質で、Embeddingが単語間の関係性を 幾何学的な構造 として学習している証拠です。

graph LR
  K[king\n王] -- 男→女 --> Q[queen\n女王]
  M[man\n男] -- 男→女 --> W[woman\n女]

  style K fill:#3b82f6,stroke:#1d4ed8,color:#fff
  style Q fill:#ec4899,stroke:#be185d,color:#fff
  style M fill:#3b82f6,stroke:#1d4ed8,color:#fff
  style W fill:#ec4899,stroke:#be185d,color:#fff
king→queen と man→woman の「方向」が一致する。ベクトル空間に「性別の軸」が学習されている

同様に、vec("Tokyo") - vec("Japan") + vec("France") ≒ vec("Paris")(首都の関係)といった例も成り立ちます。Embeddingは、人間が教えなくても「性別」「首都-国」「単数-複数」などの抽象的な関係を自動で見つける のです。

なぜ「512次元」もあるのか

「512次元」と聞くと身構えるかもしれませんが、要するに「512個の数字を並べたもの」です。1次元なら数直線、2次元なら平面、3次元なら立体、それ以上は人間には視覚化できませんが、計算規則は同じ(内積も同じ式 Σxi·yi で定義されます)。

モデル Embedding次元 (d_model) 備考
Word2Vec 300 2013年、現代の基礎
BERT base 768 2018年
GPT-2 768〜1600 サイズによる
GPT-3 12,288 175Bパラメータ
Llama 3 8B 4,096 2024年
DeepSeek V3 7,168 2024年末

この章のまとめ

Attentionが扱うのは文字列ではなく、Embeddingによって 「意味を含むベクトル」 に変換されたトークン列です。意味の近い単語は近くに、意味の方向(性別、首都-国など)は一定のベクトル差として、空間内に整理されています。

次の第4章では、これらのベクトル同士の「似ている度」を測る道具——内積——を高校数学から呼び戻し、Attentionの核心であるQ・Kの内積につなげていきます。

理解度チェック

問題 0 / 50%
Q1

Tokenizerの主な役割は何ですか?

キーボード: 1〜4 で選択、Enter で回答