Word2Vecを理解する

AI・機械学習

さて、今日はみんな大好きWord2Vecを解説したいと思います。

Word2Vecの結果を見たり、遊んでみたりするのは、非常に楽しいですので、まずはざっくり概要を解説したいと思います。

Word2Vecとは

Word2Vecとは、2013年に当時GoogleにいたThomas Mikolovらが書いた以下の論文による、単語の埋め込み表現を計算するモデルです。

Efficient Estimation of Word Representations in Vector Space
We propose two novel model architectures for computing continuous vector representations of words from very large data sets. The quality of these representation...

単語の埋め込み表現とは、単語をその単語の意味を表現する低次元のベクトルに変換することを言います。

例えば、「犬」や「猫」をある128次元のベクトル(数字の列)で表すことを言います。

このとき、「犬」と「猫」は同じ動物ですので、これらの単語の埋め込み表現は似ているようになります。

一方で、それらと例えば「パソコン」といった関連性の低い単語は、「犬」、「猫」の埋め込み表現とは大きく違ってきます。

では、この埋め込み表現はどうやって得るのでしょうか?

Word2Vecでは、これを非常にシンプルなニューラルネットワークで獲得しています。

埋め込み表現の計算

Word2Vecでは、文章の単語の並びから、間にある単語を予測する(CBOWモデル)、もしくはある単語から回りにある単語を予測する(Skipgramモデル)というタスクを解くことで、獲得することができます。

これはラベルを必要としない教師なし学習になります。

CBOWモデル

CBOWモデルは、周辺の単語から間にある単語を予測します。

周辺の単語数を“ウィンドウ”と呼び、下の例ですとそれぞれ左右で2個ずつ取っていることから、ウィンドウは2となります。

また、ここでの周辺の単語を“コンテキスト”、間の当てる単語を“ターゲット”といいます。

Skipgramモデル

Skipgramモデルは、CBOWモデルとは逆である単語から周辺の単語を予測します。

何となくCBOWモデルより難しそうですよね。

後述しますが、実はこれが精度にも影響してきます。

では、具体的にどうやって分散表現を獲得するかというと、非常にシンプルなニューラル・ネットワークを使用します。

CBOWモデルでざっくり説明しますと、インプットは、単語を表すone-hotベクトルです。

例えば、「スタッフ」「親切」がコンテキストで、「非常に」がターゲットの場合、インプットは「スタッフ」「親切」を表すone-hotベクトルです。

つまり、「スタッフ」を表す箇所だけ1でそれ以外は0のベクトルです。

そして、この2つのベクトルに、\(W_{in}\)という行列をかけて、平均を取ります。

これがいわゆるエンコーディングです。

そして、そのエンコーディングされたものに対し、\(W_{out}\)をまたかけて、ソフトマックス関数で、間の単語を予測します。

このときの、\( W_{in} \)が単語の分散表現になります。

本当はもう少し議論があり、ソフトマックス関数の計算量を減らすための工夫や、 \( W_{in}\)と\(W_{out}\)のどちらを分散表現とすべきかといった議論もありますが、ここでは割愛したいと思います。

興味がある方は論文や記事の最後に紹介している書籍を参考にしていただければと思います。

Word2Vecで遊んでみる

本記事ではWord2Vecの理論的な面を解説していますが、以下の記事でキャンプ場の口コミを使ってWord2Vecにより埋め込み表現を求め、似たような単語を見てみたり、単語マップを作製したりして遊んでいます。

イメージがわきやすいと思いますので、ぜひご覧ください!

Word2Vecの利用方法

Word2Vecで獲得した単語の埋め込み表現は主に、特定のタスクを解くための埋め込みレイヤ(Embedding layer)の初期値として使われることが多いです。

つまり、Wikipediaやニュースコーパスなどの大きな(たくさんの単語が網羅される)データをもとに単語の埋め込み表現を学習させます。

そして、そういった埋め込み表現は公開されています。

その後、例えばセンチメント分析など特定のタスクを解くために利用します。

これによって、あらかじめ単語の精度の高い埋め込み表現がわかっているので、収束がはやく、学習データにはなくて、テストデータにのみ出てくる単語の埋め込み表現もわかっているため、予測モデルの精度が上がることが期待されます。

まとめ

今回はWord2Vecを簡単に解説しました。

もっと詳しく知りたいという方は以下の書籍を参考にしていただければと思います。

こちらはスクラッチでWord2Vecを実装したり、再帰的ニューラルネットワークやアテンション・メカニズムを実装していますので、細かいところまでしっかり理解できると思います。

説明も非常に丁寧なので、そこまで苦労することなく楽しく読むことができると思いますので、入門者にはすごくオススメの一冊です。

mm0824

システム開発会社や金融機関で統計や金融工学を使ったモデリング・分析業務を長く担当してきました。

現在はコンサルティング会社のデータ・サイエンティストとして機械学習、自然言語処理技術を使ったモデル構築・データ分析を担当しています。

皆様の業務や勉強のお役に立てれば嬉しいです。

mm0824をフォローする
AI・機械学習 自然言語処理
mm0824をフォローする
楽しみながら理解する自然言語処理入門

コメント

タイトルとURLをコピーしました