単語を整数(とか1-of-Kベクトル)に写像する自然言語処理では単語の間の関係性を考えることができない。単語を密な実ベクトルに写像したら色々捗るという提案がある。しかし既存の方法は計算が重い。もっと軽い方法でやってみてどの程度の精度が出るか試してみたら意外といい精度が出た。これでいいんじゃね。という話
モデルは2つあるけど結論から言えばSkip-gramがよいってこと。
-
CBOW: フィードフォワードのニューラルネットから、エイヤッと中間層を取り除いてみる。入力層には複数の単語を入れるのだけど、この単語ごとの入力から出力層への重みは共有する。(これは画像処理系のニューラルネットでよく知られた手法)
-
Skip-gram: CBOWをエイヤッとひっくり返してみたもの。ちなみに"same sentence"と書いているとおり、文の区切りの情報を使っている。
モデルについての詳しいことはあんまり書いていない。次回「Distributed Representations of Words and Phrases and their Compositionality」に乞うご期待。
出典
さいごに
この記事はDeep Learningに興味を持った著者が、関連論文を読んで勉強しながら書いているものです。そのため間違いなどが含まれている可能性があります。もしなにか気になる点がありましたらご指摘いただけるとありがたいです。