Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Word2Vec

 Word2Vec

長岡技術科学大学
自然言語処理研究室
B3ゼミ発表(第8回)

66cc992074ab4522374e429c11fef225?s=128

youichiro

March 22, 2017
Tweet

More Decks by youichiro

Other Decks in Technology

Transcript

  1. Word2Vec 平成29年3月23日 長岡技術科学大学 自然言語処理研究室 小川耀一朗

  2. 発表内容 l Word2Vecとは - 局所表現 - 分散表現 l Word2Vecのアルゴリズム -

    Skip-gram - Negative Sampling 2/24
  3. Word2Vecとは l 単語の意味や文法を捉えるために単語をベクトル表現か して次元を圧縮する手法 l 日本人が日常的に使う語彙数は数万から数十万と言わ れる l Word2Vecでは各単語を200次元程度の次元ベクトルとし て表現する

    3/24
  4. 局所表現 “programmer”= { 0 0 0 1 0 0 0

    } “like” = { 0 0 0 0 1 0 0 } “dog” = { 0 0 0 0 0 1 0 } 語彙サイズと同じ次元数のベクトルとして各要素を各単語に 割り当てる one-hotベクトル 4 { I, am, a, programmer, like, dog, cat } /24
  5. 分散表現 l 局所表現では同一単語かどうかの比較しか使えない → 表現豊かなベクトルにしよう 局所表現 { 0, … 0,

    1, 0, 0, 0, … 0 } 高次元・離散型 分散表現 { 0.05, … -0.32, 1.83, … 0.49 } 低次元・連続値 5 語彙サイズと 同じ次元数 数百次元 Word2Vec /24
  6. Word2Vecのアルゴリズム Word2Vecのアルゴリズム l CBoW(Countinuous Bag-of-Words) l Skip-gram 学習を高速化するテクニック l Hierarchical

    Softmax(階層型ソフトマックス) l Negative Sampling 6/24
  7. Word2Vecのアルゴリズム Word2Vecのアルゴリズム l CBoW(Countinuous Bag-of-Words) l Skip-gram 学習を高速化するテクニック l Hierarchical

    Softmax(階層型ソフトマックス) l Negative Sampling 7/24
  8. Skip-gram I という単語に注目すると、次に現れる単語は I → am, like → a →

    programmer, dog, cat しかし I の次にいきなり programmer や dog は現れない 8 { I, am, a, programmer, like, dog, cat } /24
  9. Skip-gram I という単語に注目すると、次に現れる単語は I → am, like → a →

    programmer, dog, cat しかし I の次にいきなり programmer や dog は現れない I という単語の周囲にはどういった単語が出現しやすいかと いう確率を考える 9 { I, am, a, programmer, like, dog, cat } /24
  10. Skip-gram 注目する単語の周辺に、関連する単語が現れる確率は ソフ トマックス関数で表すことができる # $ = exp *+ ,

    ・-. ∑ exp *0 , ・*. *0∈3 • $ :注目する単語 • # : $ の周辺の単語 • -. : $ の意味を表すベクトル • -+ : # の意味を表すベクトル • :ボキャブラリ 10/24
  11. Skip-gram 注目する単語の周辺に、関連する単語が現れる確率は ソフ トマックス関数で表すことができる # $ = exp *+ ,

    ・-. ∑ exp *0 , ・*. *0∈3 例えば$ が I であるとき • # が am ならば は高くなってほしい • # が like ならば は高くなってほしい • # が dog ならば は低くなってほしい 11/24
  12. Skip-gram ある単語の周辺の単語は、関連性のある単語とみなす 周囲何単語までを関連性のある単語とみなすか? → コンテキストC #,A , #,B , …

    , #,D $ = E exp *+,F , ・*. ∑ exp *0 , ・*. *0∈3 D GHA 「I am a programmer 」という文章で前後1単語ずつ考える(C=1) • $ が I の時、Cは{ am } • $ が am の時、Cは{ I, a } • $ が a の時、Cは{ am, programmer } • $ が programmer の時、Cは{ a } 12/24
  13. Skip-gram 前後のコンテキストまで含めた確率 #,A , #,B , … , #,D $

    を考えた時、その確率が最大となるようなベクトルが、良い 分散表現であるだろう 13/24
  14. Skip-gram 前後のコンテキストまで含めた確率 #,A , #,B , … , #,D $

    を考えた時、その確率が最大となるようなベクトルが、良い 分散表現であるだろう Word2Vecが出力する単語ベクトル argmax -,-M (#,A , #,B , … , #,D |$ ) 14/24
  15. Skip-gram 前後のコンテキストまで含めた確率 #,A , #,B , … , #,D $

    を考えた時、その確率が最大となるようなベクトルが、良い 分散表現であるだろう Word2Vecが出力する単語ベクトル argmax -,-M (#,A , #,B , … , #,D |$ ) しかし!! 15/24
  16. Skip-gram 周辺単語の関連性の確率 #,A , #,B , … , #,D $

    = E exp *+,F , ・*. ∑ exp *0 , ・*. *0∈3 D GHA 16 一般的な語彙数Vは数万〜数十万 計算量が多すぎて学習が終わらない! /24
  17. Skip-gram 周辺単語の関連性の確率 #,A , #,B , … , #,D $

    = E exp *+,F , ・*. ∑ exp *0 , ・*. *0∈3 D GHA 計算の高速化のテクニック Negative Sampling 17 一般的な語彙数Vは数万〜数十万 計算量が多すぎて学習が終わらない! /24
  18. Negative Sampling …コンテキストの範囲内にある単語については関連性の確 率を高く、それ以外のランダムに選ばれた単語については確 率を低くするように学習している手法 18/24

  19. Negative Sampling …コンテキストの範囲内にある単語については関連性の確 率を高く、それ以外のランダムに選ばれた単語については確 率を低くするように学習している手法 注目する単語を$ 、選ばれた単語を# とすると # が$

    の関連する単語である確率 → (# |$ ) # が$ の関連しない単語である確率 → 1 − (# |$ ) 19/24
  20. Negative Sampling …コンテキストの範囲内にある単語については関連性の確 率を高く、それ以外のランダムに選ばれた単語については確 率を低くするように学習している手法 注目する単語を$ 、選ばれた単語を# とすると # が$

    の関連する単語である確率 → (# |$ ) # が$ の関連しない単語である確率 → 1 − (# |$ ) ここで(# |$ )の数式をシグモイド関数とする # $ = -+ , ・-. = 1 1 + exp −-+ , ・*. 20/24
  21. Negative Sampling 損失関数 = − log # $ E 1

    − # $ X∈ 21/24
  22. Negative Sampling 損失関数 = − log # $ E 1

    − # $ X∈ は関連性のない単語の集合(コンテキスト以外 の単語) k 個サンプリング →通常 k = 5〜20程度で十分 この目的関数の値を最小にする単語ベクトルを求め ていく 22/24
  23. Negative Sampling まとめ Skip-gram • 注目する単語の周辺に、関連する単語が現れる確率を定 義 • ボキャブラリ数の計算を繰り返すソフトマックス関数は計算 量が非常に多い

    Negative sampling • コンテキストの範囲内にある単語は関連性の確率を高く、 それ以外のランダムに選ばれた単語については確率を低 くする関数を定義 • シグモイド関数を使ってソフトマックス関数を近似 • k+1回の計算の繰り返しのため計算量を抑えることができ る 23/24
  24. まとめ l Word2Vecとは(局所表現、分散表現) l Word2Vecのアルゴリズム - Skip-gram - Negative Sampling

    参考文献 • 「Word2Vec のニューラルネットワーク学習過程を理解する」 (http://tkengo.github.io/blog/2016/05/09/understand-how-to-learn- word2vec/) • 「word2vecのソースを読んでみた」 (http://qiita.com/mash0510/items/347964f3eb2e080ea7a4) • 「Word2Vec:発明した本人も驚く単語ベクトルの驚異的な力」 (https://deepage.net/bigdata/machine_learning/2016/09/02/word2ve c_power_of_word_vector.html) • 「Chainerによる実装深層学習」 新納浩幸 著 オーム社 24/24
  25. None
  26. 予備資料

  27. W2Vのニューラルネット 27/26

  28. W2Vのニューラルネット 28/26 入力層(one-hotベクトル) $ = 2の場合の入力ベクトル = A B `

    a b c d = 0 … 1 … 0 … 0 … 0 … 0 … 0 …
  29. W2Vのニューラルネット 入力層から隠れ層への重み W (N:単語ベクトルの次元) = A B ` a b

    c d = AA BA `A aA bA cA dA AB BB `B aB bB cB dB ⋮ Aj Bj `j aj bj cj dj 隠れ層の出力(活性化関数なし) = A B ` a b c d 0 1 0 ⋮ 0 = B → 注目する単語の単語ベクトルそのものになる ℎ = -. = -. 29/26
  30. W2Vニューラルネット 隠れ層から出力層への重み W’ 今度は各単語ベクトルを転置したもの 出力層にはコンテキストCの分だけユニットがあり、W’を共有 出力層の各ユニット D = M-. 30/26

  31. W2Vのニューラルネット 出力層での活性化関数はsoftmax関数 出力層の出力 D,o = exp D,o ∑ exp D,X

    3 XHA = exp o M・-. ∑ exp X M・*. 3 XHA = o $ 31/26
  32. W2Vのニューラルネット 出力層での活性化関数はsoftmax関数 出力層の出力 D,o = exp D,o ∑ exp D,X

    3 XHA = exp o M・-. ∑ exp X M・*. 3 XHA = o $ Skip-gramモデル # $ = exp *+ M, ・-. ∑ exp *0 M, ・*. *0∈3 32/26
  33. W2Vのニューラルネット 出力層での活性化関数はsoftmax関数 出力層の出力 D,o = exp D,o ∑ exp D,X

    3 XHA = exp o M・-. ∑ exp X M・*. 3 XHA = o $ Skip-gramモデル # $ = exp *+ M, ・-. ∑ exp *0 M, ・*. *0∈3 → Word2Vecの正体は隠れ層と出力層の2層からなる単純 なニューラルネットワーク 33/26
  34. 損失関数 SGDの損失関数 = − log A , B , …

    , D $ = − log E exp D,o ∑ exp D,X 3 XHA D GHA = − p D,*F − p exp D,q 3 XHA D GHA 34/26
  35. Negative Sampling = − log = 1 $ , #

    E = 0 $ , X∈ ボキャブラリVの中からノイズ分布に従って単語をラ ンダムにk個サンプリングしたもの t = ` a ∑ X ` a 3 XHA ():学習データ中に単語 w が出現する回数 35/26