word2vec

Screenshot of ja.wikipedia.org

word2vec は tensorflow を使って構築された2層のRNN(再帰型ニューラルネットワーク)です。vecは vector ベクトル、次元数のことです。自然言語処理で、単語の穴埋め問題で驚異的な正解率を達成しています。wikipediaなどの膨大な量の文章を機械学習することにより、単語の穴埋めタスクを正確に処理することができます。文脈中の他の単語から当該部分に表れるべき単語の性質を計算することができます。単語の性質は、100~1000次元のパラメーターで表現されます。

例えば、apple という単語を300次元のベクトルで表現すると、

apple=[d1, d2, d3 ,d4 ,d5 ,,,d300]

というように、アップルという単語を300個のパラメーターで機械学習することになります。コンピューターは、リンゴを食べたことはありませんが、膨大な文章を読み込んで、apple という単語が現れる位置関係から、300次元のパラメーターを数値化して記憶します。次元数は何次元でも良いのですが、通常100から1000次元に設定されます。

それぞれの次元は、例えば、d1=名詞かどうか、d2=動詞かどうか、d3=固有名詞かどうか、d4=食べれるかどうか、d5=甘いかどうか、d6=楽しいかどうか、d7=赤いかどうか、d8=高価か安価か、など様々な情報を示します。その単語について、多数の次元(事項)の情報を集積することにより、word2vecはその単語を「理解した」状態になるのです。

良く考えると人間だって同じです。当該単語についての多数の情報を記憶しています。それは、脳内のニューロンの接続状況(情報の伝わりやすさ、軸索の太さ)として保存されているわけです。

この手法を取り入れた機械翻訳ソフトが翻訳の正答率を飛躍的に高めています。コンピューターはリンゴを食べたことも見たことも食べたことも無いのに、膨大な文章を機械学習することにより、とにかくその300次元の特性を記憶することができ、文脈の中で同義語を類推することができるのです。

※参考書籍

高木聡、TensorFlowを使ったニューラルネットワークの構築法

コメントする

メールアドレスが公開されることはありません。