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

Word2Vec

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 Word2Vec

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

Avatar for youichiro

youichiro

March 22, 2017
Tweet

More Decks by youichiro

Other Decks in Technology

Transcript

  1. 局所表現 “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
  2. 分散表現 l 局所表現では同一単語かどうかの比較しか使えない → 表現豊かなベクトルにしよう 局所表現 { 0, … 0,

    1, 0, 0, 0, … 0 } 高次元・離散型 分散表現 { 0.05, … -0.32, 1.83, … 0.49 } 低次元・連続値 5 語彙サイズと 同じ次元数 数百次元 Word2Vec /24
  3. Skip-gram I という単語に注目すると、次に現れる単語は I → am, like → a →

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

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

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

    ・-. ∑ exp *0 , ・*. *0∈3 例えば$ が I であるとき • # が am ならば は高くなってほしい • # が like ならば は高くなってほしい • # が dog ならば は低くなってほしい 11/24
  7. 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
  8. Skip-gram 前後のコンテキストまで含めた確率 #,A , #,B , … , #,D $

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

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

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

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

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

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

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

    Negative sampling • コンテキストの範囲内にある単語は関連性の確率を高く、 それ以外のランダムに選ばれた単語については確率を低 くする関数を定義 • シグモイド関数を使ってソフトマックス関数を近似 • k+1回の計算の繰り返しのため計算量を抑えることができ る 23/24
  16. まとめ 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
  17. 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
  18. 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
  19. 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
  20. 損失関数 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
  21. Negative Sampling = − log = 1 $ , #

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