前回のおさらいと今回のテーマ
こんにちは!前回は、Word2Vecの基本的な仕組みについて解説しました。Word2Vecは、単語の意味的な類似度を学習するためのモデルで、CBOWとSkip-gramという2つの学習方法がありました。Word2Vecは単語の周囲の文脈から意味を学習する手法でしたが、今回紹介するGloVe(Global Vectors for Word Representation)モデルは、異なるアプローチを用いて単語埋め込みを実現します。
今回は、GloVeモデルについて解説します。GloVeは、共起行列を用いて単語ベクトルを学習する手法で、Word2Vecとは異なる観点から意味的な関係を捉えます。この記事では、GloVeの基本概念、仕組み、そしてWord2Vecとの違いについて詳しく説明します。
GloVeモデルとは?
1. GloVeの基本概念
GloVe(Global Vectors for Word Representation)は、スタンフォード大学で開発された単語埋め込み手法で、単語間の共起情報を活用して意味的な関係を学習します。GloVeは、共起行列(ある単語が他の単語とどれくらいの頻度で共起するかを記録した行列)を基にして、単語ベクトルを生成するアプローチをとります。
GloVeの特徴は、局所的な文脈情報(個々の単語の共起関係)とグローバルな統計情報(全体の共起情報)を組み合わせることで、単語の意味を捉える点にあります。
2. 共起行列とは?
共起行列とは、テキストコーパス内の単語のペアがどれだけ頻繁に共に出現するかを記録した行列です。行と列がそれぞれ単語を表し、各セルには対応する行と列の単語が一緒に出現する頻度(共起回数)が格納されます。
例えば、次のような文章があるとします。
- “The cat sat on the mat.”
この文章から共起行列を作成する場合、ある単語が中心単語で、その周囲の単語を一定のウィンドウサイズで共起関係として計測します。
GloVeの仕組み
1. 共起確率と対数スケーリング
GloVeモデルでは、単語 ( i ) と単語 ( j ) の共起頻度(共起回数)を ( X_{ij} ) とします。ここで、GloVeは次の関係を学習します。
[
f(w_i, w_j, \tilde{w}i, \tilde{w}_j) = \log(X{ij})
]
ここで、( w_i ) と ( w_j ) は単語 ( i ) と ( j ) のベクトル、( \tilde{w}i ) と ( \tilde{w}_j ) はバイアス項を含むベクトルです。共起頻度 ( X{ij} ) は、単語 ( i ) と ( j ) の共起関係の強さを表します。
この式の基本的なアイデアは、単語ベクトルの内積がその単語ペアの共起頻度の対数に近似されるように学習することです。つまり、共起頻度が高いほど内積も大きくなり、単語同士の関係が強いと認識されるようになります。
2. 重み付き損失関数の導入
GloVeモデルの訓練には、重み付きの損失関数が使用されます。具体的には、次の損失関数を最小化します。
[
J = \sum_{i,j} f(X_{ij}) (w_i^T \tilde{w}j + b_i + \tilde{b}_j – \log(X{ij}))^2
]
ここで、
- ( f(X_{ij}) ) は共起頻度に応じた重み関数です。共起頻度が低すぎる場合は、重みを低くすることで影響を軽減します。
- ( b_i ) と ( \tilde{b}_j ) は単語 ( i ) と ( j ) に対するバイアス項です。
重み関数 ( f(X_{ij}) ) は以下のように定義されることが多いです。
[
f(X_{ij}) =
\begin{cases}
(X_{ij}/X_{\max})^\alpha & \text{if } X_{ij} < X_{\max} \
1 & \text{otherwise}
\end{cases}
]
ここで、( X_{\max} ) は重み関数の上限を定めるパラメータであり、通常は100程度に設定されます。パラメータ ( \alpha ) は通常0.75に設定され、共起頻度のスケーリングに使われます。
GloVeとWord2Vecの違い
1. 学習のアプローチの違い
- Word2Vecは、局所的な文脈(個々の単語の周辺の単語)を使って意味を学習します。Skip-gramやCBOWといった手法を使って、特定の単語とその周囲の単語との関係を学習します。
- GloVeは、全体の共起情報(グローバルな統計)を活用します。共起行列を作成し、それを基に単語ベクトルを学習するため、全体的な文脈情報を捉えることができます。
2. 訓練の効率
GloVeは共起行列の計算を必要とするため、大規模なコーパスでは計算コストが高くなる可能性があります。一方、Word2Vecは逐次的に単語ペアを生成して学習するため、オンライン学習に適しています。
3. 文脈情報の取り扱い
GloVeは全体の統計的情報を基に学習するため、文脈全体を捉えやすいという利点があります。Word2Vecは局所的な文脈に焦点を当てるため、まれに出現する単語や新しい単語の関係を学習するのに向いています。
GloVeの応用例
1. 単語の類似度計算
GloVeで学習した単語ベクトルは、単語間の類似度を計算するために利用できます。たとえば、ベクトル空間上での距離を測定することで、類似した単語を見つけることができます。
2. アナロジー推論
GloVeは、単語のベクトル演算によるアナロジー推論にも利用されます。たとえば、「king」-「man」+「woman」=「queen」という関係が成り立つことを、ベクトル演算によって確認することができます。
3. テキスト分類
GloVeで生成された単語ベクトルを使って、文書全体のベクトル表現を作成し、テキスト分類タスクに応用することができます。感情分析やニュース記事のジャンル分けなどに利用されています。
GloVeの限界と改良手法
1. 語彙外単語の問題
GloVeでは、学習データに含まれていない単語(語彙外単語)には対応できません。この問題を解決するためには、未知の単語に対して事前学習済みの埋め込みを使ったり、他の技術(例えば、FastTextのサブワードモデル)を組み合わせる必要があります。
2. 文脈依存の問題
GloVeは文脈非依存型の単語埋め込み手法です。そのため、同じ単語が異なる文脈で異なる意味を持つ場合(多義語など)、その違いを反映することができません。この問題を解決するためには、BERTなどの文脈依存型のモデルを使用する必要があります。
まとめ
今回は、GloVeモデルについて解説
しました。GloVeは、共起行列を用いて単語間の意味的な関係を捉える単語埋め込み手法であり、Word2Vecと異なるアプローチをとります。GloVeは全体的な共起情報を利用するため、文脈全体を捉えることが得意ですが、文脈依存型の問題や語彙外単語の対応に課題があります。
次回予告
次回は、FastTextの概要について解説します。FastTextはサブワード情報を活用する単語埋め込み手法で、未知の単語や語形変化に対しても柔軟に対応する技術です。お楽しみに!
注釈
- 共起行列:テキスト内の単語のペアがどの程度共に出現するかを記録した行列。
- 重み付き損失関数:共起頻度に応じて損失関数に重みをつけることで、学習効率を向上させる手法。
- 語彙外単語:訓練データに含まれていない単語のこと。
コメント