Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

自然言語処理 Word2vec

10,405 views

Published on

word2vecについての概要説明

Published in: Technology
  • Be the first to comment

自然言語処理 Word2vec

  1. 1. word2vec ー動作と内部アルゴリズムー 森山 直人
  2. 2. word2vecは計算コストの低さと、性能の高さから自然言語処理 の分野で大きな注目を浴びているが、その本質は多次元ベクトル の圧縮とベクトル空間の埋め込みである。 そのため、自然言語処理のみならず、各分野で利用可能である。 本資料を通じて、word2vecの動作原理を学ぶことで、自然言語 処理領域での活用とその他領域での応用イメージの持つことを目 的とする。 2 はじめに
  3. 3. word2vec a1 a2 a3 a4 a5 Continuous Bag–of–Words 周囲の単語から中心の単語を予測する Skip-Gram 中心の単語から周囲の単語を予測する • 2014年にGoogleより発表され、性能の高さから瞬く間に世界中に広がった • 文中で連続する5つの単語(シーケンス)をベースに、2つのアルゴリズムで実装 ベースは2つのアルゴリズムで構成 ・・・ ・・・ 3
  4. 4. word2vec-注目すべきデータ構造 • 右図は200次元のベクトルを特別に2次 元にプロットしたもの • 「中国+北京」のベクトルが「ロシア+モ スクワ」及びその他の国+首都のベクトル とかなり近い • その他、「王様ー男+女=女王」といった 演算ができる • つまり、ベクトル化さえすれば、広い範囲 の処理が可能に! • 前述の処理により、単語を任意の次元ベクトルに変換(100〜200次元くらい) (多次元空間に、単語を埋め込む) • 単語ベクトル同士で、ベクトル演算が可能(足し引き) 4
  5. 5. word2vec-注目すべきデータ構造 • 右図は200次元のベクトルを特別に2次 元にプロットしたもの • 「中国+北京」のベクトルが「ロシア+モ スクワ」及びその他の国+首都のベクトル とかなり近い • その他、「王様ー男+女=女王」といった 演算ができる • つまり、ベクトル化さえすれば、広い範囲 の処理が可能に! • 前述の処理により、単語を任意の次元ベクトルに変換(100〜200次元くらい) (多次元空間に、単語を埋め込む) • 単語ベクトル同士で、ベクトル演算が可能(足し引き) 5
  6. 6. 〜基礎知識〜 6 • 文章を構成する複数の単語にそれぞれIDをつけて計算 • 無秩序なID付では、計算を逆に妨げる(※) • 後述のBOWと呼ばれる方法で”意味を持たない“ID付を行う
  7. 7. Bug-Of-Words(BOW) ※ここからベクトル(線形代数)の話が入ります ① 予め、処理する単語の総ユニーク数を算出 ② ①の数字を次元としたゼロベクトル配列を用意 ③ 各単語の出現順に、その単語が位置が1となるベクトルを付与 パソコン インターネット プログラミング エンジニア UNIX CPU ②6次元のゼロベクトル[0, 0, 0, 0, 0, 0] ①6次元 ⇒ [1, 0, 0, 0, 0, 0] ⇒ [0, 1, 0, 0, 0, 0] ⇒ [0, 0, 1, 0, 0, 0] ⇒ [0, 0, 0, 1, 0, 0] ⇒ [0, 0, 0, 0, 1, 0] ⇒ [0, 0, 0, 0, 0, 1] ※これの何がうれしいか • 各ベクトルの値が違うにもかかわらず、 • すべて互いの距離が等しい(ノルム距離)!! • つまり、独自性を保ちつつ、無駄な相対関係を 持たない • 機械学習で自然言語以外でもよく使われる ③ 7 例)
  8. 8. 次にすることは? 8 • 前述のBOWを日本語に対して行うと、日本語の単語が約25万(広辞苑)の ため各単語がそれぞれ25万次元のベクトル配列となる ⇒意味を持たない • 一方、BOWはのベクトルは、1つのが[1]でそれ以外はすべて[0] ⇒これを圧縮したい ⇒⇒でも、中途半端な方法では、計算を妨げるベクトルになってしまう • 以降、continuous Bog-of-Wordsと呼ばれるアルゴリズムを用いて、 意味のある、かつ短いベクトルにする方法を考える
  9. 9. タスク内容 9 ① 多次元(25万前後)のベクトルを低次元(100〜200)に落とす ② ランダムに次元を振り分けるのではなく、ニューラルネットワーク を用いて、意味を伴う次元圧縮を行う (意味を伴う==復元が可能)
  10. 10. 超訳ニューラルネットワーク 入力層 隠れ層 出力層 複数の情報を元に、“見解“を得る • どの要素がそれくらいの重要度を占めるか • それぞれの要素同士の相関関係はどんなものか • そもそも与えられた情報で、見解が得られるのか これらを自動で計算してくれるパワフル なフレームワーク ※本質的な部分をかなり省略しています。 詳細は別途説明 10
  11. 11. 省略図 入力層 隠れ層 出力層 11 3次元 4次元 2次元 入力層 隠れ層 出力層
  12. 12. Continuous Bag–of–Words 1つの単語から、前後2つの単語を予測する 12 a-2 a-1 a a+1 a+2 注目単語 これらを予測 ニューラルネットワークを 用いて学習させる
  13. 13. ネットワーク構造 13 25万次元 100次元 25万次元25万次元25万次元25万次元 a-2 a-1 a a+1 a+2 注目単語 これらを予測
  14. 14. ネットワーク構造 14 100次元 25万次元25万次元25万次元25万次元 もともと25万次元ほどある 行列ベクトルを100次元に 圧縮し、 そこからさらに周辺の単語 25万次元を予測している この圧縮こそがword2vec のメインの動作であり、如 何にこのモデルをうまく構 築することが重要となる。 ここでの重みが前述の各単 語のベクトル配列となる
  15. 15. 基礎に振り返ると • word2vecの学習がうまくいくのは、単語が文章内にて、意味に沿っ て連続的に並んでいるから • 逆に、一定の規則を持ちながら、連続的に並んでいるものであれば 学習できる 例)ウェブページを単語に擬え、ページ遷移を連続性に擬えれば各ページをベク トル化できる⇒リクルートがこれを使ってレコメンドエンジンを実装した • 現在、この仕組みを利用して、様々なものをベクトル化することが 流行っている 例)doc2vec, item2vec, image2vecなどなど。※ただし性能が低い・・・ 15
  16. 16. appendix • 高度な数学知識が必要なため、学習の際に使用されるネガティブサン プリング、階層的ソフトマックスのアルゴリズム説明は割愛した • 中間層の次元数選択は、学習データの量に応じて変化するため、 ベストな数値を選定するロジックは確立されていない ■よくある勘違い • word2vecはリカレントニューラルネットワークではない • 近い動作として、オートエンコーダがあるが、中身は違う 16

×