またーり くおんつ ノート

お勉強した初歩的なことを書くチラシの裏

Character-level Convolutional Networks for Text Classificationを読んだ

今日から20minくらいで論文1本ずつ斜め読みして15分くらいでメモ書いていこうと思う.

別にわざわざ俺が書くまでもないくらい有名なの多めだけど、
そんなこと言ってたら何も書けないのです.

NIPSにacceptされた奴をチマチマ読みたいけど、
その前にText classificationをちょっと勉強しておきたいので、こいつを読む.

[1509.01626] Character-level Convolutional Networks for Text Classification

よく見る文字レベルでテキスト分類する有名な奴.
構造は以下のような感じ.

f:id:aki-don:20170925085736p:plain

メリットとしては,

  • 文字レベルでConvNetに書けるので、単語の知識が不要.
  • ミススペルや顔文字っぽいのにも対応できる(?)

とか何とか.

ハイパーパラメータ

ここで主に試しているのは大きめと小さめの2種類と比較用に色々.

  • 9 layer (6 conv-layer + 3 FC-layer)
  • 1D-max pooling (temporal max-poolingと呼んでる)
  • ReLU
  • minibatch 128
  • momentum 0.9
  • initial step size 0.01 (3 epoches ごとに10倍)
  • 使用している単語は70文字
  • feature length 1014
  • FCにはdropout (p=0.5)

data augmentationもなんか試してるっぽい. (あんまちゃんと読めてない)

比較対象

  • BoW and TF-IDF
  • n-gram and TF-IDF
  • Bag of means on word embedding
  • word-base ConvNet (word2vec embedding, dimension = 300)
  • LSTM (word2vec embedding, dimension = 300)

おまけとしてアルファベットの大文字・小文字を区別したケースも試したらしいけど、
イマイチだったと書いてある.

検証結果

追試はしてない. そのうちやりたい.

f:id:aki-don:20170926083547p:plain

結論としては大規模データセットであれば強い.
(青字がベストモデル・赤字がワーストモデル)

Yelp.P が訓練データ56万、Yelp.Fが65万でちょうどn-gramあたりが優位になる境目っぽい.
100万データセットを超えるYahoo, Amazonあたりだとかなり強い.

Sogouデータセットは中国語ソースらしいが、pypinyinパッケージとjiebaという奴で、
中国語をローマ字化したらしい.
たまに出てくるローマ字化のくだりはここか.

感想

これをやるときは訓練データ100万は揃えてからが勝負感あるということで.(強い

ペーパーの最後がノーフリーランチで終わってるのなかなか趣がある.