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

Word2Vec

 Word2Vec

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

youichiro

March 22, 2017
Tweet

More Decks by youichiro

Other Decks in Technology

Transcript

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

    View Slide

  2. 発表内容
    l Word2Vecとは
    - 局所表現
    - 分散表現
    l Word2Vecのアルゴリズム
    - Skip-gram
    - Negative Sampling
    2/24

    View Slide

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

    View Slide

  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

    View Slide

  5. 分散表現
    l 局所表現では同一単語かどうかの比較しか使えない
    → 表現豊かなベクトルにしよう
    局所表現 { 0, … 0, 1, 0, 0, 0, … 0 }
    高次元・離散型
    分散表現 { 0.05, … -0.32, 1.83, … 0.49 }
    低次元・連続値
    5
    語彙サイズと
    同じ次元数
    数百次元
    Word2Vec
    /24

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. Skip-gram
    I という単語に注目すると、次に現れる単語は
    I → am, like → a → programmer, dog, cat
    しかし I の次にいきなり programmer や dog は現れない
    I という単語の周囲にはどういった単語が出現しやすいかと
    いう確率を考える
    9
    { I, am, a, programmer, like, dog, cat }
    /24

    View Slide

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

    View Slide

  11. Skip-gram
    注目する単語の周辺に、関連する単語が現れる確率は ソフ
    トマックス関数で表すことができる
    #
    $
    =
    exp *+
    , ・-.
    ∑ exp *0
    , ・*.
    *0∈3
    例えば$
    が I であるとき
    • #
    が am ならば は高くなってほしい
    • #
    が like ならば は高くなってほしい
    • #
    が dog ならば は低くなってほしい
    11/24

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    は関連性のない単語の集合(コンテキスト以外
    の単語)
    k 個サンプリング →通常 k = 5〜20程度で十分
    この目的関数の値を最小にする単語ベクトルを求め
    ていく
    22/24

    View Slide

  23. Negative Sampling まとめ
    Skip-gram
    • 注目する単語の周辺に、関連する単語が現れる確率を定

    • ボキャブラリ数の計算を繰り返すソフトマックス関数は計算
    量が非常に多い
    Negative sampling
    • コンテキストの範囲内にある単語は関連性の確率を高く、
    それ以外のランダムに選ばれた単語については確率を低
    くする関数を定義
    • シグモイド関数を使ってソフトマックス関数を近似
    • k+1回の計算の繰り返しのため計算量を抑えることができ

    23/24

    View Slide

  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

    View Slide

  25. View Slide

  26. 予備資料

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  30. W2Vニューラルネット
    隠れ層から出力層への重み W’
    今度は各単語ベクトルを転置したもの
    出力層にはコンテキストCの分だけユニットがあり、W’を共有
    出力層の各ユニット
    D
    = M-.
    30/26

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  35. Negative Sampling
    = − log = 1 $
    , #
    E = 0 $
    ,
    X∈
    ボキャブラリVの中からノイズ分布に従って単語をラ
    ンダムにk個サンプリングしたもの
    t
    =

    `
    a
    ∑ X
    `
    a
    3
    XHA
    ():学習データ中に単語 w が出現する回数
    35/26

    View Slide