Visualizing and Understanding Curriculum Learning for Long Short-Term Memory Networksを読んだ

Curriculum Learning(簡単なやつから学習して、難しいのは後のほうがうまく行きそう)の方法をLSTMで試してみた報告っぽい内容。要約は以下の通り。

  • One-Pass CurriculumとBaby Steps Curriculumの2種類があるけど、Baby Steps Curriculumのほうがお勧めできる
  • シャッフルなどに比べるとCurriculum LearningはHidden Unitの数が少なくても安定して性能が出ている
  • 学習データが多いとどれもあまり変わらないが、学習データが少ないときほどCurriculum Learningは有効に働く

Curriculum Learning

学習するときは簡単なやつから学習して、難しいのは後のほうがうまく行きそうじゃん?というアイディアがベースにある。今回の場合はLSTMでどうこうやるので、系列系のタスクで簡単とか難しいは単純に系列の長さが短かければ簡単、長ければ難しい、という感じ。細かい設定で以下の2種類がある。

One-Pass Curriculum

  • データセットを難しさによってk個のバケット(D1, D2, ..., Dk)に分割する
  • 最初は一番簡単なデータ集合D1のみで学習させる
  • 収束したらその結果を元にD2のみ(=D1は捨てる)を使って学習
  • これを繰り返してDkまで学習させる
  • 論文ではdevsetを使ってearly stopさせる場合もあるとか

Baby Steps Curriculum

One-Pass Curriculumと大分似ているが、簡単なデータを途中で捨てないというのが違い。

  • データセットを難しさによってk個のバケット(D1, D2, ..., Dk)に分割する
  • 最初は一番簡単なデータ集合D1のみで学習させる
  • 収束したらその結果を元にD1 + D2を使って学習
  • これを繰り返してD1 + D2 + ... + Dkまで学習させる

実験

Digit Sum

  • {0,1,...,9}の系列が与えられたときに、その和をLSTMで出させる
  • LSTMのパラメータの設定とかは変えずに学習させる順番を主にいじる
    • No-CL: 完全にシャッフル
    • Sorted: ランダムではなく難易度順に並べる(バケットにはわかれていない)
    • Baby Steps Curriculum
    • One-Pass Curriculum
  • Baby Steps CurriculumとNo-CLはまぁまぁできてそう
  • One-Pass Curriculumは長いやつはそこそこできてるけど、短かい系列だと全然ダメ
  • Curriculum LearningはHidden Unitの数が少なくても安定して性能が出ている

Sentiment Analysis

  • 単語の列が与えられて、単語毎に1-5の極性(ポジティブ、ネガティブ)を付与していくタスク
  • Curriculum Learningがこの例でもよいが、conjunction(接続詞)が入っている難しい事例では特に性能がよい
  • 学習データが多いとどれもあまり変わらないが、学習データが少ないときほどCurriculum Learningは有効に働く
    • 下の図。論文より引用

f:id:syou6162:20161202195038p:plain

参考