【論文要約】A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification

0. 論文

A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification

https://arxiv.org/pdf/1510.03820.pdf

1. どんなもの?

1-layorのシンプルなCNNを分類タスクに使うにあたり、
ハイパーパラメータなどをどのように設定すればうまくいくのかに関する、
経験的/実践的なガイド

2. 先行研究と比べてどこがすごい?

学習の過程で確率に左右されることを認識した上で、先行研究より正確な精度比較をした。
また、どのようにハイパーパラメータを設定/探していけばよいかの指標を出した。

3. 技術や手法のキモはどこ?

  • SVMについて 入力値による精度の変わり方は
    BoW <= word2vecの平均 <= word2vecの平均とBoWの連結
    試す価値はかなりある。

  • CNN

    • 入力値:静的でない(not-static) word2vecをつかうと良い。データセットが巨大ならone-hotも良いかも。
    • リージョンサイズ(畳み込む単語数)はまずサーチして一つのベストな値を探すと良い。
      値は1〜10でまず探すと良い(長い文章のときはもっと大きくても良いかも)
      その後、見つけたベストの値の近くの値を複数使う方法を調べてい見る。(7, 7, 7)のように同じ値を複数使うと良い場合もある。
    • 特徴マップの数は100〜600で探す。増やすと訓練時間が伸びるので注意する。600がベストならもっと大きい数字も試してみると良い。
    • ドロップアウトは0.0〜0.5、正則化は大きな値を選ぶ。特徴マップが大きければもっと制約を強くしても良いかも。
    • 活性化関数はReLUかtanh。そもそもなくてもよいかもしれない。
    • 1-max-poolingを使うと良い。
    • パフォーマンスを測るときには、確率的な分散があるので、交差検証をレプリケーションして取りうる値の範囲も確認したほうが良い。

4. どうやって有効だと検証した?

  • 交差検証のレプリケーションを100回繰り返すことで、数値の振れ幅も含めて確認。
  • 複数のデータセットを用いて、ハイパーパラメータをサーチすることで、データセットに依らない部分を確認。
  • 一つのハイパーパラメータだけを変えることで、適切な値を調べる。

5. 議論はある?

  • 入力単語ベクトルは重要で、もっと工夫しても良いかも。
  • 半教師ありCNN使うとまた別の結果が出そう。
  • ハイパーパラメータのサーチにはベイズ的なアプローチもある。

6. 次に読むべき論文は?

  • 半教師ありCNN
    Semi-supervised convolutional neural networks for text categorization via region embedding.
  • シンプルなCNN
    Effective use of word order for text categorization with convolutional neural networks.
  • 深いCNN
    A convolutional neural network for modelling sentences.
  • 単語ベクトルGloVe
    Glove: Global vectors for word representation.