ChatGPTの仕組みから学ぶG検定対策講座②
文章はどのように数値へ変換されるのか?Transformerの入力埋め込み
こんにちは。ゆうせいです。
前回は、ChatGPTなどの文章生成AIが、次に続くトークンを一つずつ予測して文章を作っていることを説明しました。
しかし、コンピュータは「データ」「猫」「便利」といった文字を、そのまま計算することはできません。
Transformerで文章を処理するには、最初に文字を数値へ変換する必要があります。この処理を担当するのが、Embedding(埋め込み)です。
今回は、Transformer Explainerの「Embedding」を操作しながら、文章が数値ベクトルへ変換される流れを確認します。
Transformer Explainerでは、Embeddingを次の4段階に分けて表示しています。
- Tokenization
- Token Embedding
- Positional Encoding
- Final Embedding
Transformer ExplainerのEmbeddingを開く
Transformer Explainerを開き、画面を「Embedding」までスクロールしてください。
「Embedding」と書かれた部分をクリックすると、入力された文章が数値へ変換される過程が展開されます。

初期状態では、次の英文が入力されています。
Data visualization empowers users to
日本語にすると、次のような意味です。
データの可視化は、利用者が~することを可能にする
この文章が、Transformerで計算できる形式へ変換されます。
ステップ1:文章をトークンに分割する
最初に行われるのが、Tokenization(トークン化)です。
トークン化とは、入力された文章を、モデルが処理できる小さな単位に分割することです。
Transformer Explainerの「Tokenization」を開くと、入力された英文が複数のトークンに分割されていることを確認できます。
ここで重要なのは、トークンと単語は必ずしも一致しないという点です。
例えば、次の英文には5つの単語があります。
Data visualization empowers users to
しかし、「empowers」は内部で複数のトークンに分割されるため、Transformer Explainer上では文章全体が6つのトークンとして扱われます。
イメージとしては、次のような分割です。
| 単語 | トークン数 |
|---|---|
| Data | 1 |
| visualization | 1 |
| empowers | 2 |
| users | 1 |
| to | 1 |
英単語だけでなく、日本語も文字、単語の一部、記号などの単位に分割されます。
例えば、次の文章を考えてみましょう。
生成AIは便利です。
説明を単純化すると、次のような単位に分割されるイメージです。
「生成」/「AI」/「は」/「便利」/「です」/「。」
実際の分割結果は、使用するモデルやトークナイザーによって異なります。
なぜ単語をそのまま使わないのか
すべての単語を一つずつ登録する方法では、未知の単語や新しい固有名詞に対応しにくくなります。
例えば、次のような言葉は新しく作られる可能性があります。
- 新しい製品名
- 人名や地名
- 専門用語
- 略語
- 複合語
単語をより小さな単位に分割できれば、学習時に存在しなかった単語でも、既知のトークンの組み合わせとして扱えます。
トークン化には、語彙数を一定の範囲に抑えながら、さまざまな文章を表現できるという利点があります。
トークンには固有のIDが付けられる
トークン化された各トークンには、固有の番号が割り当てられています。
この番号をトークンIDと呼びます。
| トークン | トークンIDのイメージ |
|---|---|
| Data | 6060 |
| visualization | 19783 |
| users | 2985 |
表の番号は説明用のイメージですが、実際のモデルでも、各トークンと整数のIDが対応しています。
Transformer Explainerで使われているGPT-2 smallには、50,257種類のトークンが登録されています。
トークンIDは、トークンの意味そのものを表しているわけではありません。
IDが近いからといって、意味も近いとは限りません。
例えば、トークンIDが100番と101番であっても、その二つが似た意味を持つとは限らないということです。
トークンIDは、埋め込みベクトルを取り出すための識別番号として使用されます。
ステップ2:トークンを768個の数値に変換する
次に、「Token Embedding」を開いてください。
トークンIDを使って、それぞれのトークンに対応する数値ベクトルを取り出します。
Transformer Explainerで使用されているGPT-2 smallでは、一つのトークンを768次元のベクトルで表現します。
768次元のベクトルとは、768個の数値が並んだものです。
[0.12, -0.37, 0.84, 0.05, …… , -0.21]
実際には、このような数値が768個並んでいます。
文字を数値の集まりとして表現する処理が、Token Embedding(トークン埋め込み)です。
768個の数値は何を表しているのか
768個の各数値に、「動物らしさ」「食べ物らしさ」「明るさ」といった分かりやすい名前が付いているわけではありません。
モデルは学習を通じて、次のトークンを正しく予測するために役立つ数値表現を自動的に獲得します。
その結果、文章の中で似た使われ方をするトークンは、埋め込み空間でも比較的近い位置に配置されます。
例えば、次のような言葉は、似た文脈に登場します。
- 犬と猫
- 東京と大阪
- 走ると歩く
- 赤と青
そのため、それぞれの埋め込みベクトルにも一定の類似性が生まれます。
ただし、埋め込みベクトルは人間が意味を直接入力したものではありません。大量の文章を使った学習の結果として形成された数値表現です。
埋め込み行列からベクトルを取り出す
GPT-2 smallでは、50,257種類のトークンそれぞれに、768次元のベクトルが用意されています。
そのため、埋め込みを保存する行列の大きさは、次のようになります。
50,257 × 768
この行列には、約3,900万個の学習可能なパラメータが含まれています。
処理の流れは次のとおりです。
- 文章をトークンに分割する
- 各トークンのIDを調べる
- IDに対応する行を埋め込み行列から取り出す
- 768次元のベクトルとして使用する
例えば、あるトークンのIDが3145だった場合、埋め込み行列の3145番目に対応するベクトルを取り出します。
トークンID自体が768次元のベクトルになるのではありません。
トークンIDを索引として使い、対応する埋め込みベクトルを取得するという関係です。
文章全体は行列で表される
入力された文章が6個のトークンに分割され、それぞれが768次元のベクトルになった場合、文章全体は次の大きさの行列になります。
6 × 768
| 行 | 内容 |
|---|---|
| 1行目 | 1番目のトークンを表す768個の数値 |
| 2行目 | 2番目のトークンを表す768個の数値 |
| 3行目 | 3番目のトークンを表す768個の数値 |
| …… | …… |
| 6行目 | 6番目のトークンを表す768個の数値 |
Transformerは、この数値行列を使って、その後のAttentionなどの計算を行います。
ステップ3:トークンの位置を数値で表す
次に、「Positional Encoding」を開いてください。
Token Embeddingだけでは、トークンの意味に関する情報は表現できますが、文章中の順番を十分に区別できません。
次の二つの文章を比べてみましょう。
すべての犬は動物です。
すべての動物は犬です。
使われている言葉はほぼ同じですが、順番が変わることで意味も変わっています。
文章を理解するには、トークンそのものだけでなく、次のような位置情報も必要です。
- 何番目に登場したトークンか
- どのトークンより前にあるか
- どのトークンより後ろにあるか
この位置情報を数値で表現したものが、Positional Encodingです。
GPT-2は位置ベクトルも学習する
位置情報の表現方法は、Transformerモデルによって異なります。
GPT-2では、各位置に対応するベクトルを学習によって獲得します。Transformer Explainerでは、トークンの埋め込みと同じ768次元の位置ベクトルとして表示されます。
例えば、文章中の位置ごとに次のようなベクトルが用意されているイメージです。
| 位置 | 位置ベクトル |
|---|---|
| 0番目 | 位置0を表す768個の数値 |
| 1番目 | 位置1を表す768個の数値 |
| 2番目 | 位置2を表す768個の数値 |
多くのプログラミング言語と同様に、位置は0から数えます。
最初のトークンは0番目、次のトークンは1番目となります。
ステップ4:トークンと位置のベクトルを足す
最後に、「Final Embedding」を開いてください。
最終的な入力ベクトルは、次の二つを要素ごとに足し合わせて作ります。
- Token Embedding
- Positional Encoding
最終埋め込み
= トークン埋め込み
+ 位置エンコーディング
どちらも768次元なので、同じ位置にある数値同士を加算できます。
簡単な3次元の例で考えてみましょう。
| 種類 | ベクトル |
|---|---|
| トークン埋め込み | [0.2, 0.5, -0.1] |
| 位置エンコーディング | [0.1, -0.2, 0.4] |
| 最終埋め込み | [0.3, 0.3, 0.3] |
実際のGPT-2 smallでは、この計算を768個の成分について行います。
こうして作られた最終埋め込みには、次の二つの情報が含まれます。
- そのトークンが何であるか
- そのトークンが文章のどこにあるか
Transformer Explainerでは、Token EmbeddingとPositional Encodingが加算され、Final Embeddingになる様子を視覚的に確認できます。
名札と座席番号で考える
入力埋め込みは、「名札」と「座席番号」に例えると理解しやすくなります。
Token Embeddingは、トークンの名札です。
私は「犬」というトークンです。
Positional Encodingは、文章中の座席番号です。
私は文章の3番目にいます。
最終埋め込みには、この二つの情報がまとめて含まれます。
私は「犬」というトークンで、文章の3番目にいます。
同じ「犬」というトークンでも、文章中の位置が違えば、最終埋め込みの値も変わります。
埋め込みだけで文脈を理解できるのか
Embeddingは、Transformerに入力するための出発点です。
この段階では、各トークンについて、基本的な意味と位置の情報が用意された状態です。
しかし、文章中のほかのトークンとの関係は、まだ十分に反映されていません。
例えば、次の二つの文では「高い」の意味が異なります。
この山は高い。
この商品は高い。
一つ目の「高い」は高さを表し、二つ目の「高い」は価格を表します。
どちらの意味なのかを判断するには、「山」や「商品」との関係を調べる必要があります。
このトークン同士の関係を処理するのが、次に登場するSelf-Attentionです。
Transformer Explainerで確認するポイント
Transformer ExplainerのEmbeddingを操作し、次の点を確認してください。
- 入力文が単語数と同じトークン数になるとは限らない
- 各トークンには固有のトークンIDがある
- トークンIDから768次元の埋め込みベクトルを取得する
- 各位置にも768次元の位置ベクトルがある
- 二つのベクトルを足してFinal Embeddingを作る
- 入力した文章を変更すると数値も更新される
Transformer Explainerでは、数値が入力内容に応じてブラウザ上で更新されます。画面に表示される小さな四角や数値へマウスポインターを合わせながら、各トークンの変換を確認してみてください。
今回のまとめ
- コンピュータは文章をそのまま計算できないため、最初に数値へ変換する
- 文章を小さな単位に分割する処理をTokenizationと呼ぶ
- トークンと単語は必ずしも一致しない
- 各トークンには固有のトークンIDがある
- トークンIDを使って埋め込み行列からベクトルを取り出す
- GPT-2 smallでは、一つのトークンを768次元のベクトルで表現する
- 位置エンコーディングによって、文章中の順番を表現する
- トークン埋め込みと位置エンコーディングを足して、最終埋め込みを作る
- 文章全体は「トークン数 × 768」の数値行列として表現される
次回は、Transformerの中心的な仕組みであるMulti-Head Self-Attentionを取り上げます。
Transformer Explainerを操作しながら、Query、Key、Valueがどのような役割を持ち、トークン同士の関係をどのように計算するのかを解説します。
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。
最新の投稿
山崎講師2026年7月26日ChatGPTの仕組みから学ぶG検定対策講座②
山崎講師2026年7月26日ChatGPTの仕組みから学ぶG検定対策講座①
山崎講師2026年7月21日残差学習とは?ResNetの仕組みを新人エンジニア向けにやさしく解説
山崎講師2026年7月21日新人エンジニア向け:オートエンコーダの仕組みをインスタントコーヒーで理解する
