- こんな方におすすめ
深層学習・ディープラーニングでも必要な「Word2Vec」の基本的な内容について知りたい。
キーワード・知ってると理解がしやすい
- ニューラルネットワーク
- 分散表現
- コンテキスト / 文脈
- 事後確率
ニューラルネットワーク
yhayato1320.hatenablog.com
分散表現 yhayato1320.hatenablog.com
Index
出典
2013 年 Mikolov らによって提案された手法.
「word2vec」とは
単語 (Word) をベクトル (Vector) として表現、変換するための手法の1つ
単語に対して、文脈非依存の分散表現を学習するモデル. 単語に文脈非依存の分散表現を与えることを、単語埋め込み (Word Embedding)という.
単語の分散表現
単語を固定長のベクトルで表現することを「単語の分散表現」(Word Embedding) と呼ぶ.
word2vec も単語の分散表現を取得する手法の1つ.
分布仮説
「単語の意味は周囲の単語によって形成される」という前提・アイディア・考え.
「カウントベース」と「推論ベース」
ここでは、カウントベースについては言及しませんが、自然言語処理において、単語の分散表現を取得する手法としては、大きく分けて2つある.
1つは「カウントベース」と言われる手法で、1つは「推論ベース」と言われる手法.
word2vec は、「推論ベース」に含まれる手法.
推論ベース
推論ベースという名称なので、この手法は、
ある「入力」から何かを「出力=推論結果」するような形式をとる.
どんな入力からどんな出力を推定するモデルなのかがポイントになる.
ニューラルネットにおける単語の処理方法
ニューラルネットで単語を処理するには、それを「固定長のベクトル」に変換する必要がある.
そのための方法のひとつは、単語を one-hot 表現 / ベクトルへの変換する.
- One-Hot Encoding
word2vec のモデル
word2vec で使用されるモデルは、ニューラルネットワーク (NN) を用いられることがスタンダードで、有名なモデルは2つある.
- CBOW モデル
- skip-gram モデル
2つのモデルを紹介.
CBOW モデル
Continuous Bag-of-Words (CBOW) は、「コンテキスト」から「ターゲット」を推測するNNモデル.
(ターゲットは文章中の一単語、その周囲の単語がコンテキスト)
CBOW モデルへの入力は、コンテキストの one-hot ベクトル集合で、出力は単語の予測スコア. 以下の図のようなイメージ.
しかし、入力が複数ある場合は、入力を複数にする.
入力層から中間層への変換に利用している重み が分散表現となる. は (語彙の数) x (変換後のベクトルの次元数) となり、この分散表現を利用すれば、語彙に含まれる 単語 one-hot ベクトルが 変換したい次元のベクトルに変換できることがわかる.
事後確率を利用して、確率モデルとして考えると以下のようになる.
skip-gram モデル
skip-gram モデルは、CBOW モデルとは逆で、「ターゲット」から「コンテキスト」を推測するNNモデル. つまり、ある単語(ターゲット)から周囲の単語(例えば前後の単語など = コンテキスト)を予測するモデル.
入力は、ターゲットとなる単語の one-hot ベクトルで、 出力は、コンテキストとなる複数の単語 の one-hot ベクトルの集合となる.
出力が複数ある場合は、出力を複数にする.
事後確率を利用して、確率モデルとして考えると以下のようになる.
分散表現としての利用
二つのモデルとも目的は、単語の分散表現を取得すること.
では、上のモデルで学習を行い、パラメータ (上図での W_in と W_out)が最適化されたとして、どのように分散表現と利用するのか?
それは、、、W_in (または W_out と両方)を分散表現のベクトルして利用する.
問題点
Word2Vec の「各単語に対して一意に分散表現を与える」という性質は、 多義語を扱う際に問題になる.
- 彼は舞台の上手に立った。
- 彼は料理が上手だ。
また、単語の分散表現を利用して、文章をベクトルで表現することを考える.
その場合、文中の単語の分散表現の(重み付き)平均を利用することがあるが、
そうなると、文章の語順が考慮されないことになる.
- ジョンはボブに本を貸した。
- ボブはジョンに本を貸した。
そこで、ELMo のような文脈化単語埋め込み (Contextualized Word Embedding)が利用される.
参考
ゼロから作るDeep Learning 2
BERTによる自然言語処理入門
- 2.3 Word2Vec