単語分散表現としての埋め込みベクトル
埋め込みベクトル
単語や画像、ユーザーなどのモノを、コンピュータが扱える数値の配列(ベクトル)に変換したものを埋め込みベクト(Embedding Vector)と呼びます。
one-hot ベクトルは以下の課題があります。
- 語彙数と同じ次元数が必要(非常に巨大な次元数が必要)
- 意味の関連性を表現できない
埋め込みベクトルを低次元の密なベクトルで表現することで課課を解決します。
| 課題 | 原因 | 決する仕組み |
|---|---|---|
| 高次元で非効率 | 語彙数と同じ次元数が必要 | 低次元化(次元数を自由に小さく設定) |
| 意味の関連性を表現できない | 各次元が0か1のどちらか(疎:sparse) | 密(dense)な値にする + 学習によって値を調整する |
適切な埋め込みベクトルは以下の性質を持ちます。
- 意味が近いものは、ベクトル空間上でも近くに配置される
- 例:
王様 - 男 + 女 ≈ 女王のようなベクトル演算が成立することもある - word2vec、GloVe、BERT/GPTの中間層出力、画像埋め込み、ユーザー埋め込みなど、幅広く応用される概念
Embeddingレイヤの仕組み
Embeddingレイヤの実態は重み行列を使ったックアップテーブルです。
語彙サイズ V, 埋め込み次元 D とすると
Embeddingレイヤの重み行列 W の形は (V, D)
単語 ID = 5 が入力されると
→ W の 5 行目をそのまま取り出すだけ
- 初期値はランダム
- 学習(誤差逆伝播)によって、意味的な情報を持つ分散表現へと変化していく
単語の分散表現
単語の分散表現(Distributed Representation)と局所表現(one-hot)の違いをまとめます。
| 局所表現(one-hot) | 分散表現 | |
|---|---|---|
| 次元数 | 語彙数と同じ(巨大) | 自由に設定可能(小さい) |
| 単語間の類似度 | 表現できない | 表現できる |
| 意味の持たせ方 | 1 次元に 1 単語 | 複数次元の組み合わせ |
| 獲得方法 | 手動で割り当て | データから学習 |
分布仮説
単語の分散表現の背景にあるのは分布仮説(distributional hypothesis)です。
分布仮説は、単語の意味は、その単語が使われる文脈によって決まるという仮設です(例:似た文脈で使われる単語(例:「猫」「犬」)は、似たベクトルになるように学習される)。
Transformer ブロックへの入力
Transformer ブロックに実際に渡されるのは、単語埋め込みそのものではなく、位置エンコーディングを加算したものした埋め込みベクトルです。
Transformer への入力 = 単語埋め込み + 位置エンコーディング
Transformer は系列を順番に処理しないため、位置情報を別途補う必要があります。
| 段階 | 呼び方 |
|---|---|
| Embedding レイヤ直後の単語ベクトル | 単語埋め込み(word embedding)、分散表現 |
| 位置エンコーディングを加算した後 | 入力埋め込み(input embedding) |
| Transformer ブロック通過後 | 文脈化された埋め込み(contextualized embedding) |
- Embeddingレイヤの出力:常に同じベクトル(文脈非依存)
- Transformerブロック通過後:文脈によって値が変わる(文脈依存)
word2vec と Embedding レイヤの違い
| word2vec | 一般的な Embedding レイヤ | |
|---|---|---|
| 位置づけ | 学習アルゴリズム(手法) | ニューラルネットの部品(構造) |
| 学習の目的 | 単語ベクトルを作ることそのものが目的 | タスク(分類、翻訳など)を解く過程で学習される |
| 学習後の使い方 | ベクトルを取り出して他のモデルに流用できる | 通常そのモデル専用 |
| 文脈依存性 | 非依存(1 単語 = 1 ベクトル固定) | モデル設計次第 |
- Embeddingレイヤ = 入れ物(構造)
- word2vec = その入れ物に良い中身を詰めるための特定の方法の一つ
現在の主流
現在の LLM(GPT系、BERT系など)の Embedding レイヤは、
ランダムな重み行列で初期化
↓
モデル全体(Transformerブロック含む)と一緒に
↓
事前学習タスク(次単語予測、マスク単語予測など)の誤差を逆伝播
↓
End-to-Endで学習
という流れが主流。word2vec のように単語ベクトル作成だけを目的とした別プロセスを事前に走らせる方式は減っています。
- タスクに最適化された表現が得られる
- 大規模データ・計算資源が前提となり、分業(事前学習→流用)の必要性が薄れた
LLM の Embedding レイヤと分布仮説
LLM の Embedding レイヤも分布仮説を反映しています。
ただし wod2vec とは文脈の捉え方の深さが異なります。
| word2vec | LLMのEmbedding レイヤ | |
|---|---|---|
| 分布仮説を使っているか | Yes | Yes |
| 文脈の範囲 | 前後数単語(狭い窓) | 文全体・文脈全体(Attentionで広範囲) |
| 文脈の扱い方 | 浅い(1層で直接予測) | 深い(多層Transformerを通して間接的に反映) |
LLM の事前学習タスク(次単語予測・マスク単語予測)自体が分布仮説そのものであり、その誤差が Transformer ブロックを経由して Embedding レイヤまで逆伝播されることで、Embedding レイヤの重みにも文脈情報が反映されます。
出力層での予測誤差
↓ 逆伝播
最終 Transformer ブロックの誤差
↓ 逆伝播(各層を遡る)
最初の Transformer ブロックの誤差
↓ 逆伝播
Embedding レイヤの重み更新
Embedding レイヤ自体は文脈非依存の固定ベクトルを出力するが、その値の獲得過程では Transformer 全体を通じたより広く深い分布仮説が反映されます。