論文読み会をやるので久しぶりに論文を読みました。久しぶりじゃダメなんだけど...。今年のACL2018でYahoo! JAPAN Researchの方が発表された内容です。
- pretrainingを教師なしの対話データを使って精度向上させる
- Y!のリアルタイム検索でも使われているっぽい
- replyが付くようなtweetは感情に関連することが多いのではないか?という仮説のもと、シンプルなencoder-decoder(のencoder側)をpretrainingとして使う
- めちゃくちゃ簡単
- 実験がきちんとしていて、はてなや他社でも使えそうな知見があったので紹介したかった
- 論文
- 発表スライド
以下は雑なメモです。
問題点
- 教師あり学習である程度いい精度を出すには教師データが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が入ってるので負例になってしまう
- 例:
- 古典的な機械学習の
LogReg
とLinSVM
はデータ量が少ないときにはDefault
よりもよい性能を出している- とはいえ、事前学習した
Dial
やLang
のほうが性能が高い
- とはいえ、事前学習した
- 事前学習されたencoder-decoderの生成結果も感情に基づいている感じで、結果がよくなるのも納得

ゼロから作るDeep Learning ? ―自然言語処理編
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/07/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る