Word2Vec
単語をベクトルに変える出発点
Word2Vecは2013年にGoogleのMikolovが発表したモデルだ。核心は単純 — 似た文脈に出現する単語は似た意味を持つ。
2つの方式がある。CBOWは周辺語を入力として中心語を予測する構造。Skip-gramはその逆で、1つの単語から周辺語を予測する。
構造: 2層の浅いニューラルネットワーク
Word2Vecはディープラーニングと呼ぶには浅いが、れっきとしたニューラルネットだ。入力層 → 隠れ層(1つ) → 出力層、これで全部。
入力に「猫」(one-hotベクトル)を入れると、隠れ層を経て出力で「かわいい」「動物」などの周辺語を予測する。学習が終わったら隠れ層の重み行列を取り出す — それがそのまま単語ベクトルになる。
隠れ層のサイズが300なら、全ての単語が300次元ベクトルで表現される。ベクトル同士のコサイン類似度を求めれば意味的な距離が出る。
自前学習 vs 事前学習済みモデル
Word2Vecは自分のデータでニューラルネットを直接学習させる方式だ。数万〜数十万件のデータが必要で、GPUがあると良い。その代わりドメインに最適化されたベクトルが得られる。
一方、OpenAIのtext-embedding-3-smallのような事前学習済みモデルは、既にインターネットの膨大なテキストで学習済みだ。APIを呼んでベクトルを受け取るだけ。データが少なくても使えて多言語も自動対応するが、ドメイン特化はされない。
なぜ推薦システムに重要か
真の価値は「king - man + woman = queen」のようなベクトル演算が成立する点だ。このアイデアをアイテムに適用するとItem2Vecになる。
学習されたベクトル空間で類似度を計算すれば、明示的なタグやカテゴリなしでも「このアイテムに似たアイテム」を見つけられる。
動作原理
大量テキストから単語-文脈ペアを抽出
浅いニューラルネット(1隠れ層)で予測を学習
Negative Samplingで学習を効率化
隠れ層の重みがそのまま単語埋め込みになる
メリット
- ✓ 学習が速く、数百万語も処理可能
- ✓ ベクトル演算で意味関係を捉える
デメリット
- ✗ 多義語を区別できない(bank = 銀行? 川岸?)
- ✗ コンテキストウィンドウ外の長距離依存を無視