Word2Vec

2022/04/12

AI

Word2Vecとは

ニューラルネットワークを用いた単語ベクトル化手法。

Word2Vecによる単語ベクトル化では、ある偽のタスクを解かせることで3層のニューラルネットワークを学習し、学習後の重みを単語ベクトルとして取り出して利用する。偽のタスクとは「ある単語が与えられたときその周辺の単語を予測する」タスクで、ニューラルネットワークは下記のような穴埋め問題を解くことで文脈から単語の意味を学習する。

Notion Image

Word2Vecには「CBOW」と「skip-gram」の2種類あり、解いているタスクがわずかに異なっている。

CBOW

COBWでは「前後の単語からその間の単語を予測する」というタスクを解く。

Notion Image

入力値として前後の単語(your, have)をOne-hotベクトル化したものを、正解値として間の単語(shoelaces)をOne-hotベクトル化したものを使用する。今回の例ではウィンドウサイズが1(前後合わせて2単語)のため、入力層は2つになっているが、ウィンドウサイズが大きくなると、その分入力層の数も大きくなる。

Notion Image

実際には、大量の文章から入力値と正解値の組を作り、フィードバックをかけながらモデル内の重みを更新していく。更新を続けることで、「前後の単語からその間の単語を予測する」という偽のタスクを解けるようにモデルを学習する。このモデルは単語間の関係を学習しており、モデルの重みWV×NW_{V \times N}は単語ベクトルとして利用できる。

skip-gram

skip-gramでは「ある単語から前後の単語を予測する」というタスクを解く。

Notion Image

入力値としてある単語(shoelaces)をOne-hotベクトル化したものを、正解値として前後の単語(your, have)をOne-hotベクトル化したものを使用する。今回の例ではウィンドウサイズが1(前後合わせて2単語)のため、出力層は2つになっているが、ウィンドウサイズが大きくなると、その分出力層の数も大きくなる。

Notion Image

実際には、大量の文章から入力値と正解値の組を作り、フィードバックをかけながらモデル内の重みを更新していく。更新を続けることで、「ある単語から前後の単語を予測する」という偽のタスクを解けるようにモデルを学習する。このモデルは単語間の関係を学習しており、モデルの重みWV×NW_{V \times N}は単語ベクトルとして利用できる。


著者画像

ゆうき

2018/04からITエンジニアとして活動、2021/11から独立。主な使用言語はPython, TypeScript, SAS, etc.