cs-kb
一覧に戻る

Embedding

2026年4月16日4時間前に更新
親記事機械学習自然言語処理分散表現Word2Vecコサイン類似度深層学習

概要

埋め込みとは、言葉・画像・グラフなどの離散的なオブジェクトを、連続的なベクトル空間の点として表現する手法です。埋め込みにより、類似度計算や機械学習モデルへの入力が可能になります。なぜ埋め込みが必要なのか、どんな問題を解くのかから、埋め込み空間の性質まで、基本概念を網羅します。

なぜ埋め込みが必要か — 離散データのジレンマ

機械学習モデルのほとんどは、連続値の数値ベクトルを入力とします。しかし現実のデータは離散的です。単語「apple」、画像、ユーザーIDなど、カテゴリを持つオブジェクトはどうやって機械学習に組み込むのでしょう。

素朴な方法はワンホットエンコーディングです。語彙サイズが 100,000 語なら、1 つの単語を 100,000 次元ベクトルで表現します。ただこれは次元が膨大で、類似度計算も非効率で、重要な情報が失われます。

埋め込みの役割: 離散オブジェクトを、意味のある構造を持つ低次元の連続ベクトルで表現することで、効率的な類似度計算と学習を可能にすること。

埋め込みの直感

埋め込みは「意味の近さを距離で保存する」という発想です。

例えば「dog」と「puppy」という単語を 2 次元ベクトルで表現する場合、この 2 つが意味的に近いなら、埋め込み空間でも近い位置に配置されるべきです。同時に「dog」と「car」は遠くに配置されます。

こうして埋め込み空間を構築すれば、コサイン類似度や欧ユークリッド距離といった単純な幾何学的計算で、意味的な類似度を測れるようになります。

埋め込みの基本的な考え方

ベクトル表現の利点

埋め込みベクトル vRd\mathbf{v} \in \mathbb{R}^d は、単語や概念の意味的な特徴を捉えたエンコーディングです。特徴量エンジニアリングと異なり、埋め込みは自動的に学習時に最適化されます。

類似度の計算

埋め込み空間における 2 つのベクトル v1,v2\mathbf{v}_1, \mathbf{v}_2 の類似度は、コサイン類似度で計算できます:

similarity(v1,v2)=v1v2v1v2\text{similarity}(\mathbf{v}_1, \mathbf{v}_2) = \frac{\mathbf{v}_1 \cdot \mathbf{v}_2}{\|\mathbf{v}_1\| \|\mathbf{v}_2\|}

この値は [1,1][-1, 1] の範囲で、1 に近いほど似ているということです。

埋め込み空間の性質

埋め込みの強力さは、代数的な構造を保持することにあります。例えば Word2Vec で学習された埋め込みでは、以下のような関係が成立します:

embed("king")embed("man")+embed("woman")embed("queen")\text{embed}(\text{"king"}) - \text{embed}(\text{"man"}) + \text{embed}(\text{"woman"}) \approx \text{embed}(\text{"queen"})

これは埋め込み空間に意味的な方向性があることを示します。

また、埋め込みの次元数 dd はメモリと精度のトレードオフです。次元が大きいほど表現力が高まりますが、計算コストと学習データ量が増加します。実務では 50 ~ 300 次元が一般的です。

まとめ

  • 埋め込みは離散オブジェクトを連続ベクトル空間に変換する基本技術
  • 類似度計算と機械学習への入力を効率化する
  • 埋め込み空間は意味的な構造を保持する
  • 次元数はトレードオフを考慮して選定

関連リンク

この記事からの参照