自然言語処理(NLP)において、単語の表現方法はモデルの性能に大きな影響を与えます。以前は、単語を「局所表現」で表す方法が一般的でしたが、現在では「分散表現」として単語ベクトル(Word Embedding)を利用することが標準となっています。この2つのアプローチには、それぞれ異なる特徴があり、特に分散表現がどのように自然言語理解を飛躍的に向上させたのかが重要なポイントです。
局所表現とは
局所表現(One-Hot Encoding)は、各単語をそれ自身固有のベクトルで表す非常にシンプルな方法です。具体的には、単語を語彙内のインデックスに対応する位置だけが1で、他の位置がすべて0となるベクトルに変換します。
例:One-Hot Encoding
語彙に「猫」「犬」「鳥」がある場合、それぞれの単語は以下のように表現されます。
- 「猫」:
[1, 0, 0]
- 「犬」:
[0, 1, 0]
- 「鳥」:
[0, 0, 1]
この方法の大きな特徴は、単語間の関連性や意味的な類似性を全く考慮していないことです。「猫」と「犬」は両方とも動物であり、意味的に類似しているはずですが、局所表現ではこれらの単語は完全に独立して扱われます。
局所表現の課題
局所表現にはいくつかの問題点があります。
- ベクトルのスパース性:ベクトルのほとんどが0であるため、データが非常に疎になる(スパース性が高い)。
- 語彙の大きさ:語彙が増えるとベクトルの次元が高くなり、メモリ効率が悪くなる。
- 意味的関係を捉えられない:単語の間の意味的な類似性や関係性を学習できない。
分散表現とは
分散表現(Distributed Representation)は、単語を意味的な特徴に基づいた低次元の密なベクトル(埋め込み)で表現する手法です。この方法では、単語の意味が多次元ベクトル空間に埋め込まれ、ベクトル間の距離や方向が意味的な類似性を反映します。
例:Word2VecやGloVe
分散表現を学習するための有名なモデルとして、Word2VecやGloVeがあります。これらのモデルは、大量のコーパスから単語間の共起情報を利用して、単語をベクトル空間に配置します。このベクトル空間では、意味の近い単語が互いに近い位置に配置されます。
例えば、Word2Vecで学習されたベクトル空間では、「猫」と「犬」は類似した意味を持つため、ベクトルが近い位置にあります。また、ベクトル演算によって意味的な関係も捉えられます。例えば、
- 「王」 – 「男性」 + 「女性」 ≈ 「女王」
のように、ベクトルの加減算で語義的な関係をモデル化できます。
分散表現の特徴
分散表現は、次のような利点を持っています。
- 密なベクトル:高次元でスパースな局所表現に対し、低次元で密なベクトルを用いるため、計算効率が高い。
- 意味の類似性の捉え方:意味が近い単語はベクトル空間上でも近くに配置されるため、文脈や語彙の関係性を学習できる。
- 語彙の拡張性:新しい単語が出現しても、学習済みの語彙との関係性から近似的に表現できる。
分散表現の応用
分散表現は、機械翻訳、文書分類、感情分析など、さまざまなNLPタスクに応用されています。特に最近のモデルでは、単語ベクトルに基づく意味的な理解が、文全体や対話の文脈理解に活かされています。たとえば、BERTやGPTといった大規模な事前学習モデルも、このような分散表現を進化させた形で、単語や文脈間の関係を学習します。
局所表現と分散表現の比較
局所表現 | 分散表現 | |
---|---|---|
次元数 | 語彙数に依存(高次元) | 固定された低次元 |
スパース性 | 高い | 低い(密なベクトル) |
意味的な関係性 | なし | あり(意味的類似性を反映) |
計算効率 | 非効率 | 効率的 |
応用範囲 | 限定的 | 広範囲(NLP全般) |
まとめ
単語ベクトルのエンベッディングは、単語の意味をベクトル空間上に表現し、計算機が言語データを理解するための基礎技術です。局所表現は簡単で理解しやすい反面、意味的な情報を全く捉えないのに対し、分散表現は単語間の意味的な関係を自然に学習できるため、NLPのさまざまなタスクにおいて非常に有効です。