LoginSignup
2
4

More than 5 years have passed since last update.

論文: Convolutional Neural Networks for Sentence Classification

Last updated at Posted at 2017-06-28

論文: Convolutional Neural Networks for Sentence Classification

概要

  • CNNを使ってdocument classificationをやってみた
  • word2vecが予想以上にうまくいっていることがわかった

内容

CNN for Text

テキストは単語の並び。まず、単語のその分散表現で表してその上でCNNをする。

I have a dream .

という文章に対して、windowが3のCNNを行うと<BOS> I haveI have ahave a dreama dream .dream . <EOS>それぞれに対して同じフィルターがかかり、非線形の活性化関数を通る。式で書けば

$${\bf c_i} = f(W{\bf x_{i:i+h}}+{\bf b})$$

ここで、${\bf x}$はword2vecで学習された単語の分散表現。

この結果
$$
{\bf c} = [{\bf c_1}, {\bf c_2}, {\bf c_3}, \cdots, {\bf c_{T-h+1}}]
$$
がこの層の出力になる。プーリングをして一つのベクトルにする。
プーリングは各特徴量に対してその最大のものをとるmax-over-timeを使う。

モデルの種類

  • CNN-rand: 単語の分散表現を全てランダムに初期化して学習する。
  • CNN-static: 単語の分散表現をword2vecで初期化して、学習はしない。word2vecにない単語はランダムに初期化
  • CNN-non-static: 単語の分散表現をword2vecで初期化して、fine-turningする。word2vecにない単語はランダムに初期化
  • CNN-multichannel: 単語の分散表現はword2vecで初期化して、二つにコピーする。一つはfine-turningして、もう一つは学習しない。二つを両方とも入力として扱う。

これらを比較して、word2vecの汎用性、fine-turningの効果、multichannelの効き具合を検証する。

結果と議論

ランダムに初期化されて学習したCNN-randはword2vecで初期化されて学習しなかったCNN-staticよりも結果がよくない。word2vecは特定のタスクのみではなく多様なタスクで使えるものなのではないか?
fine-turningにより、もっと精度が上がる。

Multichannel vs. Single Channel

思ったよりもmultichannelの効果がなかった。
もっと実験が必要。

Static vs. non-Static

staticとnon-staticの比較では、non-staticの方が全体的にいい。
タスクによって最適な単語の表現は変わる。例えば、元々の分散表現ではbadgoodに近い。これは、文法的に近いから。これに対して、感情分析のタスクではこれらの単語は遠くになければならない。感情表現のタスクの中でfine-turningされた分散表現では、badterribleなど、goodniceなどに近くなる。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4