【論文要約】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.