Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

数式からみるWord2Vec

7.050 visualizaciones

Publicado el

名渡山 夏子, 岡本 一志: 数式からみるWord2Vec, パーティクルフィルタ研究会1月実践セミナー, 2017.01.07

Publicado en: Ciencias
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... .........................................................................................................................
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí

数式からみるWord2Vec

  1. 1. パーティクルフィルタ研究会2016/1/7 / 321 数式からみるWord2Vec ○名渡山 夏子 岡本一志 電気通信大学
  2. 2. パーティクルフィルタ研究会2016/1/7 / 32 (0, …, 0, 1, 0, …, 0) はじめに 2 • 複数の次元で1つの単語を表す • 単語数が増えても,次元は固定長のまま 分散表現 局所表現 • 各概念(単語)に1つずつ次元を割り当てる(1-of-k表現など) • 単語数が増えると次元が大きくなる (0, 1, 0, …, 0, 0) 350,134番目
  3. 3. パーティクルフィルタ研究会2016/1/7 / 32 2013年、Googleが開発した単語の分散表現の手法 単語の「意味」を表現するベクトルを低次元で作れる 学習には,たくさんの文章(例えばWikipedia)を使用 2層のフィードフォワードニューラルネットワークのモデルで学習 Word2Vec とは 3 入力層 出力層 隠れ層
  4. 4. パーティクルフィルタ研究会2016/1/7 / 32 単語の「意味」を表現するベクトルを低次元で作る 1.ベクトルを使って、単語の「意味」の足し算ができた vec(Berilin) - vec(German) + vec(France) = vec(Paris) 2.フレーズ(複合語)まで対応できた New York Times(新聞社), Air Canada(カナダの航空会社) Word2Vec のすごいところ 4 計算が異常に速い なぜか精度が良い
  5. 5. パーティクルフィルタ研究会2016/1/7 / 32 学習したい単語:コーヒー コーヒーと同時に使われる単語から,コーヒーに合う単語を学習 合う単語:砂糖,ミルク,喫茶店,ブラック
 合わない単語:コンピュータ,赤ちゃん,ゲーム Word2Vec の学習概要 5 合う単語には条件付き確率が高く 合わない単語には条件付き確率が低くなるように学習する p(milk|coffee) > p(baby|coffee)
  6. 6. パーティクルフィルタ研究会2016/1/7 / 32 ネットワークアーキテクチャ ・CBOW(Continuous Bag-of-Words) ・Skip-gram 
 高速化 ・Negative Sampling ・Hierarchical Softmax 今回の説明では 6 こっち こっち
  7. 7. Skip-gram でモデル化
  8. 8. パーティクルフィルタ研究会2016/1/7 / 32 Skip-gram とは 8 普通のbigram skip-bigram Skip-gramは隣の単語だけではなく,
 周辺の単語までのペア(セット)を考える 文章 etc..
  9. 9. パーティクルフィルタ研究会2016/1/7 / 32 Skip-gram モデル 9 良い感じに I に合う単語を学習 →○ →○ →☓ V = { } の中から に合う単語とは? に合う単語は, と一緒に使われる → が出ると の出現確率が高いと学習して欲しい
  10. 10. パーティクルフィルタ研究会2016/1/7 / 32 Softmax 関数を使ってモデル化 10 結局、 が与えられた時にどんな単語が合うのか?を
 考える条件付き確率と一緒! 注目単語
 ( ) 周辺単語
 ( ) ボキャブラリーの集合
 (全単語=105 〜107 ) vp(wO|wI) = exp(v0T wO · vwI ) P wv2V exp(v0T wv · vwI ) :入力ベクトル
 :出力ベクトル p(wO|wI) = exp(v0T wOc · vwI ) X wv2V exp(v0T wv · vwI )
  11. 11. パーティクルフィルタ研究会2016/1/7 / 32 単語と単語の関係から,コンテキスト(文脈)まで拡張する 例文: 注目単語: / コンテキストサイズ=2 周辺単語: 単語からコンテキスト(文脈)に 11 注目単語
周辺単語
 単語ベクトル同士の内積 条件付き確率→同時確率の計算に拡張 p(wO,1, · · · , wO,C|wI) = CY c=1 exp(v0T wOc · vwI ) X wv2V exp(v0T wv · vwI )
  12. 12. パーティクルフィルタ研究会2016/1/7 / 32 前後のコンテキストまで含めた同時確率を考える が最大となるような単語ベクトル  = 単語の”良い表現” Skip-gramモデルの目的関数 12 vp(wO,1, · · · , wO,C|wI) = CY c=1 exp(v0T wOc · vwI ) P wv2V exp(v0T wv · vwI ) arg max W,W 0 p(wO,1, · · · , wO,C|wI) p(wO,1, · · · , wO,C|wI) = CY c=1 exp(v0T wOc · vwI ) X wv2V exp(v0T wv · vwI )
  13. 13. Word2Vec の ニューラルネットワーク
  14. 14. パーティクルフィルタ研究会2016/1/7 / 32 2層のニューラルネットワーク 14 入力層 出力層 隠れ層 いいかんじの
 WとW’を学習する W W’ 0 B B @ x1 x2 x3 x4 1 C C A 0 @ h1 h2 h3 1 AWをかけて
 圧縮 W’をかけて
 展開 0 B B @ u1 u2 u3 u4 1 C C A 106 106 200→ →dim:
  15. 15. パーティクルフィルタ研究会2016/1/7 / 32 入力層のベクトル はV次元 ある要素だけ1、それ以外は0の 1-of-k ベクトル 例: V= { }   = 入力層( ) 15 x = 0 B B B B B B @ x1 x2 x3 x4 x5 x6 1 C C C C C C A = 0 B B B B B B @ 0 · · · I 1 · · · like 0 · · · black 0 · · · coffee 0 · · · am 0 · · · cat 1 C C C C C C A x x wI
  16. 16. パーティクルフィルタ研究会2016/1/7 / 32 W はボキャブラリの全単語の単語ベクトルを横に並べた行列 隠れ層への重み( ) 16 隠 れ 層 の 次 元 W = 0 B B B @ v11 v21 v31 v41 v51 v61 v12 v22 v32 v42 v52 v62 ... ... ... ... ... ... v1N v2N v3N v4N v5N v6N 1 C C C A W = v1 v2 v3 v4 v5 v6 , の場合,W は 200 x 106 の大きさh 2 R200 x 2 R106
  17. 17. パーティクルフィルタ研究会2016/1/7 / 32 隠れ層の計算 h = Wx
 (活性化関数なし) 隠れ層( ) 17 隠れ層の出力は、複雑な計算をせずに になる ここで 1-of-k が生きてくる ( :N次元ベクトル) 各 v が単語の「意味」を表す W x = v1 v2 v3 v4 v5 v6 0 B B B B B B @ 0 1 0 0 0 0 1 C C C C C C A = v2W x = v1 v2 v3 v4 h h = W xwI = vwI vwI v
  18. 18. パーティクルフィルタ研究会2016/1/7 / 32 隠れ層から出力層への重みW′も同様に単語ベクトル v′ を並べた 出力層への重み( ) 18 W' W 0 = 0 B B B B B B B @ v0T 1 v0T 2 v0T 3 v0T 4 v0T 5 v0T 6 1 C C C C C C C A = 0 B B B B B B @ v0 11 v0 12 · · · v0 1N v0 21 v0 22 · · · v0 2N v0 31 v0 32 · · · v0 3N v0 41 v0 42 · · · v0 4N v0 51 v0 52 · · · v0 5N v0 61 v0 62 · · · v0 6N 1 C C C C C C A , の場合,W' は 106 x 200 の大きさh 2 R200 x 2 R106
  19. 19. パーティクルフィルタ研究会2016/1/7 / 32 出力層( ) 19 の各要素は,周辺単語出力ベクトルと注目単語入力ベクトルの内積 uc.i = 0 B B B B B B @ v0 11 v0 12 · · · v0 1N v0 21 v0 22 · · · v0 2N v0 31 v0 32 · · · v0 3N v0 41 v0 42 · · · v0 4N v0 51 v0 52 · · · v0 5N v0 61 v0 62 · · · v0 6N 1 C C C C C C A vwI 出力層のユニットは出力層への重み x 隠れ層 0 B B B B B B @ uc,1 uc,2 uc,3 uc,4 uc,5 uc,6 1 C C C C C C A 0 B B B B B B @ vwI 1 vwI 2 vwI 3 vwI 4 vwI 5 vwI 6 1 C C C C C C A uc = W 0 vwI uc,i = v0T i · vwI uc = W 0 vwI uc = W 0 vwI
  20. 20. パーティクルフィルタ研究会2016/1/7 / 32 出力層( ) 19 の各要素は,周辺単語出力ベクトルと注目単語入力ベクトルの内積 uc.i = 0 B B B B B B @ v0 11 v0 12 · · · v0 1N v0 21 v0 22 · · · v0 2N v0 31 v0 32 · · · v0 3N v0 41 v0 42 · · · v0 4N v0 51 v0 52 · · · v0 5N v0 61 v0 62 · · · v0 6N 1 C C C C C C A vwI 出力層のユニットは出力層への重み x 隠れ層 0 B B B B B B @ uc,1 uc,2 uc,3 uc,4 uc,5 uc,6 1 C C C C C C A 0 B B B B B B @ vwI 1 vwI 2 vwI 3 vwI 4 vwI 5 vwI 6 1 C C C C C C A uc = W 0 vwI uc,i = v0T i · vwI uc = W 0 vwI uc = W 0 vwI
  21. 21. パーティクルフィルタ研究会2016/1/7 / 32 出力層( ) 19 の各要素は,周辺単語出力ベクトルと注目単語入力ベクトルの内積 uc.i = 0 B B B B B B @ v0 11 v0 12 · · · v0 1N v0 21 v0 22 · · · v0 2N v0 31 v0 32 · · · v0 3N v0 41 v0 42 · · · v0 4N v0 51 v0 52 · · · v0 5N v0 61 v0 62 · · · v0 6N 1 C C C C C C A vwI 出力層のユニットは出力層への重み x 隠れ層 0 B B B B B B @ uc,1 uc,2 uc,3 uc,4 uc,5 uc,6 1 C C C C C C A 0 B B B B B B @ vwI 1 vwI 2 vwI 3 vwI 4 vwI 5 vwI 6 1 C C C C C C A uc = W 0 vwI uc,i = v0T i · vwI uc = W 0 vwI uc = W 0 vwI
  22. 22. パーティクルフィルタ研究会2016/1/7 / 32 はSkip-gramでモデル化したときの確率になる 最終的な出力値(softmax関数使用) 20 ニューラルネットワークの計算 skip-gram でモデル化したときの確率 x ucvwI yc,i softmax
 関数 yc,i tc,i 教師信号 uc,i xwI yc,i = exp (uc,i) PV v=1 exp (uc,v) = exp (v0T i · vwI ) PV v=1 exp (v0T v · vwI ) = p(wi|wI)
  23. 23. パーティクルフィルタ研究会2016/1/7 / 32 Word2Vecの面白いところ 21 入力層 出力層 隠れ層 入力層には注目単語の単語ベクトルをいれて,
 出力層には周辺単語の単語ベクトルを出力させる学習を行う 理想的な解 0 B B @ 0 1 0 0 1 C C A 0 B B @ 0 0 0 1 1 C C A 入力の1-of-kベクトル W’W x ucvwI
  24. 24. パーティクルフィルタ研究会2016/1/7 / 32 良い v と v’ が欲しい → 良い W と W’ が欲しい!!! 良いパラメータ(重み)を得る 22 同時確率はアンダーフローしやすいので,log をつけたものを
 目的関数とおき,SGD(確率的勾配降下法)で最適化を行う E = log p(w1, w2, · · · , wC|wI ) p(wO,1, · · · , wO,C|wI) = CY c=1 exp(v0T wOc · vwI ) X wv2V exp(v0T wv · vwI )
  25. 25. パーティクルフィルタ研究会2016/1/7 / 32 目的関数を微分して更新式を得る 23 { E = log p(w1, w2, · · · , wC|wI ) E を W,W’ の各要素で偏微分する vij := vwI i ⌘ CX c=1 VX v=1 (yc,v tc,v)v0 vi v0 ij := v0 ij ⌘ CX c=1 (yc,i tc,i)vwI j tc,i = ⇢ 1 (i = wc) 0 (otherwise) Wの更新式 W’の更新式 p(wO,1, · · · , wO,C|wI) = CY c=1 exp(v0T wOc · vwI ) X wv2V exp(v0T wv · vwI )
  26. 26. 圧倒的な高速化を行う
  27. 27. パーティクルフィルタ研究会2016/1/7 / 32 実装できそうだけど… 25 V :ボキャブラリーの集合(105 〜107 ) 計算量が爆発して学習が終わらない
 良いパラメータを得られない p(wO|wI) = exp(v0T wOc · vwI ) X wv2V exp(v0T wv · vwI )
  28. 28. パーティクルフィルタ研究会2016/1/7 / 32 実際に共起した単語と、共起しなかった単語の確率を考える 高速化:Negative Sampling 26 共起した(True) 共起しなかった(False) p(T|wI, wO) = (v 0T wo · vwI ) p(F|wI, wO) = 1 (v 0T wo · vwI ) E = log p(T|wI , wO) Y v2VNeg p(F|wI , v)
  29. 29. パーティクルフィルタ研究会2016/1/7 / 32 実際に共起した単語と、共起しなかった単語の確率を考える 高速化:Negative Sampling 26 共起した(True) 共起しなかった(False) p(T|wI, wO) = (v 0T wo · vwI ) p(F|wI, wO) = 1 (v 0T wo · vwI ) E = log p(T|wI , wO) Y v2VNeg p(F|wI , v) :シグモイド関数(x) = 1 (v0T wO · vwI ) = (v0T wO · vwI )
  30. 30. パーティクルフィルタ研究会2016/1/7 / 32 実際に共起した単語と、共起しなかった単語の確率を考える 高速化:Negative Sampling 26 共起した(True) 共起しなかった(False) p(T|wI, wO) = (v 0T wo · vwI ) p(F|wI, wO) = 1 (v 0T wo · vwI ) さっきの式の分母の役割
 Vnegからランダムにk個取る (k=5〜20) E = log p(T|wI , wO) Y v2VNeg p(F|wI , v) :シグモイド関数(x) = 1 (v0T wO · vwI ) = (v0T wO · vwI )
  31. 31. パーティクルフィルタ研究会2016/1/7 / 32 実際に共起した単語と、共起しなかった単語の確率を考える 高速化:Negative Sampling 26 共起した(True) 共起しなかった(False) p(T|wI, wO) = (v 0T wo · vwI ) p(F|wI, wO) = 1 (v 0T wo · vwI ) さっきの式の分母の役割
 Vnegからランダムにk個取る (k=5〜20) E = log p(T|wI , wO) Y v2VNeg p(F|wI , v) :シグモイド関数(x) = 1 (v0T wO · vwI ) = (v0T wO · vwI ) E = log p(T|wI, wO) Y v2VNeg p(F|wI, v)p(T|)p(T|) p(F| p(T|) p(F| p(T|) p(F| p(T|) p(F| p(T|) p(F| p(T|) E = log p(T|wI, wO) Y v2VNeg p(F|wI, v)
  32. 32. パーティクルフィルタ研究会2016/1/7 / 32 Vneg からランダムに k 個取る 27 U(w):単語の頻度 ノイズ分布Pn(w) 8 4 3 1 0.44 0.258 0.21 0.092 普通の割合 0.5 0.25 0.1875 0.0625 頻度が少ない単語も選択されやすいように補正 U(w) Pn(w)
  33. 33. パーティクルフィルタ研究会2016/1/7 / 32 高速化前後の目的関数の比較 28 ボキャブラリー数+1回の計算 VNeg(5〜15)数+1回の計算 まじめに計算しなくても問題がなかった 計算回数が圧倒的に減ったので学習ができる!! E = log p(T|wI, wO) Y v2VNeg p(F|wI, v)I) = exp(v0T wOc · vwI ) X wv2V exp(v0T wv · vwI )
  34. 34. パーティクルフィルタ研究会2016/1/7 / 32 高速化したあとの目的関数 29 Wの更新式 W’の更新式 E を W,W’ の各要素で偏微分する ti = ⇢ 1 (i = wO) 0 (otherwise) E = log (v0T wO · vwI ) X v2VNeg ( v0T v · vwI ) v0 ij := v0 ij ⌘( (v0T i · v0 wI ) ti)vwI j vij := vwI i ⌘ X v2wO[VNeg ( (v0T v · vwI ) tv)v0 vi
  35. 35. パーティクルフィルタ研究会2016/1/7 / 32 類似する単語は,ベクトル間のコサイン類似度で得る 獲得したベクトルの利用方法 30 ※学習パラメータ・データはオフィシャルサイトのチュートリアルを利用 science scientific 0.572214 sciences 0.569874 astrobiology 0.487089 pseudoscience 0.486106 physics 0.477239 pay paid 0.730617 paying 0.690467 repay 0.577326 payment 0.569318 debts 0.561721
  36. 36. パーティクルフィルタ研究会2016/1/7 / 32 2層のニューラルネットワークで、良い感じに学習したら単語の 「意味」ベクトル作れた ベクトル同士の足し算で,単語の「意味」の足し算ができた この単語と単語が共起しないだろうと考えたら高速化できた まじめに計算しなくても,意外に問題がないこともある おわりに 31
  37. 37. パーティクルフィルタ研究会2016/1/7 / 32 Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, Jeffrey Dean: Distributed Representations of Words and Phrases and their Compositionality, Neural Information Processing Systems 2013, 3111–3119, 2013. 西尾泰和: 『word2vec による自然言語処理』 株式会社オライリー・ジャパン, 2014 Yoav Goldberg and Omer Levy: word2vec Explained: Deriving Mikolov et al.’sNegative-Sampling Word-Embedding Method < https://arxiv.org/pdf/ 1402.3722v1.pdf > 2016/1/2アクセス @tkengo: 「Word2Vec のニューラルネットワーク学習過程を理解する」,
 < http://tkengo.github.io/blog/2016/05/09/understand-how-to-learn-word2vec/ > 2016/1/2アクセス 岡崎直観:「単語・句の分散表現の学習」< http://www.slideshare.net/naoakiokazaki/ ss-55494101 > 2016/1/4アクセス 参考文献 32

×