doc2vec
やってみた
どんなものか ( 要約、システムのI/Oなど)
word2vecの仕組みを応用して、可変長な文章そのものの、固定長なコンテクストベクトルを獲得する。
PV-DV(word2vecのCBOWと似ている), PV-DBOW(word2vecのskip-gramと似ている)という2種類のモデルが提案されている。
先行研究と比べてすごいところ、貢献
既存のテキスト埋め込みアルゴリズム(Bag-Of-Wordsなど)はテキストの語順が考慮されていない
考慮されているBag-Of-n-gramなどは埋め込み後のデータの疎性が高く、高次元化しやすい
doc2vecは文章内で語順が考慮された単語ベクトルW(w1,w2...wt)を文章ベクトルとともに用いることで語順を考慮した埋め込みを実現している。
手法
word2vecの手法とほとんど同じ
出力ではなく、入力層→中間層の重み行列Wの獲得を目指す
PV-DMモデル
周辺語彙とparagraph-idから、ターゲットとなる単語を予測するモデル
https://gyazo.com/e0ede7713c642a7f281dc8e20a690100
CBOWの入力層にparagraph-id(文章ベクトル)Dを追加。
dはN(埋め込みたい次元数)×U(文章の総数)の行列
文脈を保持するメモリのように振る舞う
https://gyazo.com/62c2f27f831dd2fd18f272ae3acfcfba
先にWを学習してからDを学習する。
PV-DBOWモデルhttps://gyazo.com/17e1a7e8119429942644520c28617e32
入力層はparagraph-idのみ。
入力層が1個なのでPV-DMより計算コストが低い
単語ベクトルWの重み行列を学習する必要がない
出力は、paragraph-idに対応する文章中の全単語w1,w2...wn
https://gyazo.com/f7dc484da1b2af72b61cf65196fd4888
検証方法
感情分析タスクを短文、長文それぞれで実施。分析(ロジスティック回帰)の際の文章の入力として埋め込み済みベクトルを利用。
ナイーブベイズバイグラムベイズなどのアルゴリズム(BOWを利用)による埋め込みよりも、NNを利用した方が精度が上がっている。
そのなかでもdoc2vecは不正解率が低い。
window-sizeは交差エントロピーで決定。
短文(SSTB)
https://gyazo.com/672b92edc4e981ac11d419db78a19bda
長文(IMDb)
https://gyazo.com/aa44ce704fd376fa46d192ad27f86d77
議論、課題
PV-DMの方が性能が高い場合が多い。
window幅は交差エントロピーで決めるのが良い(?)らしいが、だいたい5~12でうまくいく。
word2vecもそうだが、形態素解析ができる文章という条件が伴う。
結局は形態素解析の精度によるのではないか?
次に読むべき論文
fastText
Word2Vecを作った天才Mikolovが作ったfastText。とにかく学習が早い。形態素を考慮するために各単語を文字ngramで表現し、それらのベクトル表現を学習している。
Glove
word2vecより性能がいいと原論文に書いてある。
コメント
visualから離れている気がしますが、石井実装パートの作品の予習だと思って勉強中ですのでご容赦ください。。。(石井)
線形代数の勉強しなければ。。。(石井)
参考文献