記録帳

クラウド、データ分析、ウイスキーなど。

word2vec

ゼロから作る2の第3章「word2vec」を読んだ。
名前はよく聞くword2vecだが、具体的にどのようなものなのかを学んだ。

 

・word2vecとは?

  • 第2章のカウントベースの時と同じく、ゴールは「単語の分散表現を得ること」である。
  • 推論ベースの手法である。
  • 例えば、"I want to you, I need you"という文があった時、Iとtoの間に入る単語を推論する。今回の場合では、"want"がその単語にあたる。
  • 推論に用いる元の単語群(上の例でいうIとto)をコンテキストと呼び、推論する単語(上の例でいうとwant)をターゲットと呼ぶ。

・word2vecの2つのモデル

  • CBOWモデル
    ニューラルネットワークのモデルを考える。入力がコンテキストのone-hot表現で、出力がターゲットとなる単語の出現確率である。
    また、ゴールである単語の分散表現は、モデルの重みパラメータであるWがそれにあたる。モデルを学習させることでWがどんどん変化していく=分散表現が学習により良い表現に変化していくのである。
    (例)
    テストデータが"I want to you, I need you"だったとき、それぞれの単語は
    I, want, to, you, need
    の5つに別れる。これに通しで番号を降る。
    0:I, 1:want, 2:to, 3:you, 4:need
    この番号を用いてテストデータを表すと、
    [0,1,2,3,0,4,3]
    というリストで表せる。
    さて、モデルの入力となるのはコンテキストである。例えばIとtoをコンテキストとすると、0,2だが、oneーhot表現にするので
    [1,0,0,0,0] [0,0,1,0,0]
    となる。これがモデルの入力となる。
    そして、出力は確率なので、例えば以下のようになる。
    [0.0012, 0.7798, 0.089, 0.12, 0.01]
    つまり、1の単語(=want)の出現する確率は77.98%であることを表す。

  • skip-gramモデル
    CBOWモデルと似ているが、こちらはある単語からコンテキストを推測する。なお、CBOWモデルと比較すると、こちらのモデルの方が精度の良い分散表現が得られるらしい。こちらの方が推論が難しい分、過学習が起きない傾向にあるのだろうか。
    (例)
    "I want to you, I need you"で説明すると、wantを入力とすることで、Iとtoの出現確率を推測する。他はCBOWモデルと一緒である。

 

・カウントベースと推論ベースの比較

  カウントベース 推論ベース
精度

大量データ対応 ×
文字追加対応 ×
類似性の表現
関係性の表現 ×

 (見たままモードで表がかけないので、HTML直接いじってたらめんどくさかったので下で解説。)

・精度
どちらも変わらないとのこと。これについての論文も出ている。

・大量データ対応
推論ベースが優勢。なぜなら、カウントベースでは全ての文字について確認しないと、それぞれの単語の分散表現ができない。対して、推論ベースではコンテキスト1つでとりあえず分散表現はできる。あとはそれをたくさん繰り返して、分散表現の精度を上げていく。一気にやるか、少しずつやるかの差で、推論ベースに分がある。

・文字追加対応
推論ベースが優勢。カウントベースでは、1つ文字が追加されると全てやり直しであるのに対し、推論ベースでは再学習をすることができる。

・類似性の表現
カウントベースも推論ベースも、分散表現で単語間の類似性は表現可能である。

・関係性の表現
何を言っているのかというと、「どのような意味でそれらの単語が類似しているのか」を表せるか?ということである。
例えば、word2vecを使えば
king - man + woman = queen
ということができる。これはつまり、単語に含まれる意味を分解して数値化できているということであり、関係性が表現できていることを意味する。