Top Banner
word2vec ーーーーーーーーーーーーー ーー ーー
16

自然言語処理 Word2vec

Jan 06, 2017

Download

Technology

naoto moriyama
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 自然言語処理 Word2vec

word2vecー動作と内部アルゴリズムー森山 直人

Page 2: 自然言語処理 Word2vec

2

word2vecは計算コストの低さと、性能の高さから自然言語処理の分野で大きな注目を浴びているが、その本質は多次元ベクトルの圧縮とベクトル空間の埋め込みである。そのため、自然言語処理のみならず、各分野で利用可能である。本資料を通じて、word2vecの動作原理を学ぶことで、自然言語処理領域での活用とその他領域での応用イメージの持つことを目的とする。

はじめに

Page 3: 自然言語処理 Word2vec

3word2vec

a1

a2

a3

a4

a5

Continuous Bag–of–Words周囲の単語から中心の単語を予測するSkip-Gram中心の単語から周囲の単語を予測する

• 2014年に Googleより発表され、性能の高さから瞬く間に世界中に広がった• 文中で連続する 5つの単語(シーケンス)をベースに、 2つのアルゴリズムで実装

ベースは 2つのアルゴリズムで構成・・・

・・・

Page 4: 自然言語処理 Word2vec

4word2vec-注目すべきデータ構造

• 右図は200次元のベクトルを特別に2次元にプロットしたもの• 「中国+北京」のベクトルが「ロシア+モスクワ」及びその他の国+首都のベクトルとかなり近い• その他、「王様ー男+女=女王」といった演算ができる• つまり、ベクトル化さえすれば、広い範囲の処理が可能に!

• 前述の処理により、単語を任意の次元ベクトルに変換( 100〜 200次元くらい)(多次元空間に、単語を埋め込む)• 単語ベクトル同士で、ベクトル演算が可能(足し引き)

Page 5: 自然言語処理 Word2vec

5word2vec-注目すべきデータ構造

• 右図は200次元のベクトルを特別に2次元にプロットしたもの• 「中国+北京」のベクトルが「ロシア+モスクワ」及びその他の国+首都のベクトルとかなり近い• その他、「王様ー男+女=女王」といった演算ができる• つまり、ベクトル化さえすれば、広い範囲の処理が可能に!

• 前述の処理により、単語を任意の次元ベクトルに変換( 100〜 200次元くらい)(多次元空間に、単語を埋め込む)• 単語ベクトル同士で、ベクトル演算が可能(足し引き)デモ

Page 6: 自然言語処理 Word2vec

6〜基礎知識〜• 文章を構成する複数の単語にそれぞれ IDをつけて計算• 無秩序な ID付では、計算を逆に妨げる(※)• 後述の BOWと呼ばれる方法で”意味を持たない“ ID付を行う

Page 7: 自然言語処理 Word2vec

7Bug-Of-Words( BOW)※ここからベクトル(線形代数)の話が入ります① 予め、処理する単語の総ユニーク数を算出② ①の数字を次元としたゼロベクトル配列を用意③ 各単語の出現順に、その単語が位置が1となるベクトルを付与

パソコンインターネットプログラミングエンジニアUNIXCPU

  ② 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]

※これの何がうれしいか• 各ベクトルの値が違うにもかかわらず、• すべて互いの距離が等しい(ノルム距離)!!• つまり、独自性を保ちつつ、無駄な相対関係を持たない• 機械学習で自然言語以外でもよく使われる

③例)

Page 8: 自然言語処理 Word2vec

8次にすることは?• 前述の BOWを日本語に対して行うと、日本語の単語が約 25万 (広辞苑 )のため各単語がそれぞれ 25万次元のベクトル配列となる⇒意味を持たない• 一方、 BOWはのベクトルは、 1つのが [1]でそれ以外はすべて [0]

⇒これを圧縮したい⇒⇒でも、中途半端な方法では、計算を妨げるベクトルになってしまう• 以降、 continuous Bog-of-Wordsと呼ばれるアルゴリズムを用いて、意味のある、かつ短いベクトルにする方法を考える

Page 9: 自然言語処理 Word2vec

9タスク内容① 多次元( 25万前後)のベクトルを低次元( 100〜 200)に落とす② ランダムに次元を振り分けるのではなく、ニューラルネットワークを用いて、意味を伴う次元圧縮を行う(意味を伴う==復元が可能)

Page 10: 自然言語処理 Word2vec

10超訳ニューラルネットワーク

入力層 隠れ層 出力層

複数の情報を元に、“見解“を得る• どの要素がそれくらいの重要度を占めるか• それぞれの要素同士の相関関係はどんなものか• そもそも与えられた情報で、見解が得られるのかこれらを自動で計算してくれるパワフルなフレームワーク※本質的な部分をかなり省略しています。 詳細は別途説明

Page 11: 自然言語処理 Word2vec

11省略図

入力層 隠れ層 出力層

3次元

4次元

2次元

入力層 隠れ層 出力層

Page 12: 自然言語処理 Word2vec

12Continuous Bag–of–Words1つの単語から、前後 2つの単語を予測する

a-2

a-1

a

a+1

a+2

注目単語

これらを予測

ニューラルネットワークを用いて学習させる

Page 13: 自然言語処理 Word2vec

13ネットワーク構造

25万次元

100次元

25万次 元

25万次 元

25万次 元

25万次 元

a-2

a-1

a

a+1

a+2

注目単語

これらを予測

Page 14: 自然言語処理 Word2vec

14ネットワーク構造25万次元

100次元

25万次 元

25万次 元

25万次 元

25万次 元

もともと 25万次元ほどある行列ベクトルを 100次元に圧縮し、そこからさらに周辺の単語25万次元を予測している

この圧縮こそがword2vecのメインの動作であり、如何にこのモデルをうまく構築することが重要となる。ここでの重みが前述の各単語のベクトル配列となる

Page 15: 自然言語処理 Word2vec

15基礎に振り返ると• word2vecの学習がうまくいくのは、単語が文章内にて、意味に沿って連続的に並んでいるから• 逆に、一定の規則を持ちながら、連続的に並んでいるものであれば学習できる例)ウェブページを単語に擬え、ページ遷移を連続性に擬えれば各ページをベクトル化できる⇒リクルートがこれを使ってレコメンドエンジンを実装した• 現在、この仕組みを利用して、様々なものをベクトル化することが流行っている例) doc2vec, item2vec, image2vecなどなど。※ただし性能が低い・・・

Page 16: 自然言語処理 Word2vec

16appendix

• 高度な数学知識が必要なため、学習の際に使用されるネガティブサンプリング、階層的ソフトマックスのアルゴリズム説明は割愛した• 中間層の次元数選択は、学習データの量に応じて変化するため、ベストな数値を選定するロジックは確立されていない■よくある勘違い• word2vecはリカレントニューラルネットワークではない• 近い動作として、オートエンコーダがあるが、中身は違う