『単語埋め込み』について調べたのでまとめてみた
単語埋め込み(Word Embedding)について調べたのでメモを簡単にまとめる。
ここ最近の自分の興味が自然言語処理に向いていて、その基礎となる概念として調べる必要があった。
単語の分散表現とは
単語の分散表現とも言われる。
深層学習ベースの自然言語処理で単語を表現する手法。
語彙の特徴を表現するベクトル空間に、単語の特徴量を表すベクトルを埋め込むことで語彙を表現する。
なにが嬉しいのか
単語同士のベクトルの距離を比較することで類似度や関連性を計算できるようになる。
図1の例を利用すると...
- 「ネコ」と「ペルシャネコ」は距離が近いため、類似度も高く関連性も高いと言えそうだ
- 「ネコ」と「犬」は距離が遠いため、類似度は低めっぽいが「ぞうきん」に比べれば近いので関連性はありそう
- 「ぞうきん」と「犬」「ネコ」は類似度も低いし関連性も低そう
分散表現はどうやって獲得するの?
言語モデルを通して学習することによって獲得できる。
代表的なモデル
- ニューラル言語モデル
- CBoWモデル
- skip-gramモデル
特にCBoWやskip-gramは、word2vecで使われている。
そもそも「単語埋め込み」や「単語の分散表現」の由来ってなに?
「単語埋め込み」の由来
最初の説明に書いたものをそのままコピペするようだけれど...
「語彙の特徴を表現するベクトル空間に、単語の特徴量を表すベクトルを埋め込むことで語彙を表現する。」ことが由来。
「単語の分散表現」の由来
以下の2つの概念が組み合わさって「単語の分散表現」という概念を構成している。
【ニューラルネットワーク方面からの由来】
そもそも「分散表現」という用語は、認知心理学とニューラルネットワークの研究が起源。
脳のモデル化をする際に事象や概念といった離散的なモノを特徴量のベクトルとして表現するために登場した。
【自然言語処理方面からの由来】
自然言語処理には、1950年代から「分布仮説」という考えがある。
これは「単語の意味はその単語が使われた周囲の文脈によって決まる」という仮説。
この仮説に基づいて得られたベクトル表現も「分散表現」とも呼ばれた。
【2つの概念が組み合わさる】
初期のニューラル言語モデルが分散仮説の考え方をそのまま利用している考えれるようなモデルだった。
そのため、ニューラルネットワークの分散表現を獲得するのに分布仮説を用いてると解釈でき、両者の考えが統合されていった。
最後に
間違ってることがあったら指摘してください、早急に修正します :dogeza: