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