Pretraining Sentiment Classifiers with Unlabeled Dialog Dataを読んだ

論文読み会をやるので久しぶりに論文を読みました。久しぶりじゃダメなんだけど...。今年のACL2018でYahoo! JAPAN Researchの方が発表された内容です。

以下は雑なメモです。

問題点

  • 教師あり学習である程度いい精度を出すには教師データが10万件程度必要だけど、集めるのが大変
    • 3値分類、3人のアノテーターでmajority voting
    • 大体300人月
    • 24Kドル(240万くらいを高いと見るか安いと見るか)
    • 8時間 * 300日 * 時給1000円
    • もっとスキルのあるアノテータにやってもらうともっとかかる
    • アノテーション基準を勉強してもらう時間などは含んでいない
  • 実験データではラベル付きが8万件、ラベルなしが2000万件
    • 8万件じゃ精度はまだまだサチらない

提案法

  • 提案法は2段階
  • 1: pretrainingとして教師なしの対話データから(tweet-reply pairs)対話モデルを作る
    • encoder-decoder
  • 2: sentiment classifier(encoder-labeler)を教師ありデータを使って学習
    • 1で作ったencoder-decoderモデルのencoderパートを初期値として与え、pretrainingとして生かす
  • 言語モデルをベースにした既存手法もあるが、replyが付くようなtweetは感情に基づくことが多いのではないか?という仮説

モデル

  • dialog modelのベースラインはencoder-decoder
    • 入力は単語レベルじゃなくて文字レベル(絵文字とか顔文字とか多いからこっちのほうが性能高い)

比較した手法

  • 事前学習あり
    • Dial: 提案法(pretrainあり)
    • Lang: tweetのペアなしで言語モデルとして学習したLSTMをpretrainとして使う
    • SeqAE: sequence autoencoderをpretrainとして使う
    • Emo2M, Emo6M: この絵文字/顔文字が入っていたら正例/負例と見なすという一種のdistant supervisionで疑似的な学習データを使ったもの
  • 事前学習なし
    • Default: pretrainなし
    • LogReg, LinSVM: unigramとbigramのbag-of-words

実験結果

  • 学習データを5000件から8万件に変化させたときのF値の変化を見る
  • 学習データ量のサイズに関わらず、提案手法のDialが一貫して他の方法よりよい性能
  • Emo2Mは学習データにノイズが入るためDefaultより低い精度になっているっぽい
    • 例: うらやましいです。おめでとうございます orzがorzが入ってるので負例になってしまう
  • 古典的な機械学習のLogRegLinSVMはデータ量が少ないときにはDefaultよりもよい性能を出している
    • とはいえ、事前学習したDialLangのほうが性能が高い
  • 事前学習されたencoder-decoderの生成結果も感情に基づいている感じで、結果がよくなるのも納得

ゼロから作るDeep Learning ? ―自然言語処理編

ゼロから作るDeep Learning ? ―自然言語処理編