メモ帳

python, juliaで機械学習をやっていく

自然言語処理のData Augmentation手法 (Easy Data Augmentation)

自然言語処理 Advent Calendar 2019の10日目です。昨日は、ktr_wtbさん形態素解析ツールインストール(MeCab,Juman++,Janome,GiNZA)と、plantarumさん自然言語処理を始める準備でした。

本記事では、以下の論文の概要をまとめます。(技術系の記事が多いのでちょっと気がひけますが)

EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks [Jason W. Wei, Kai Zou; 2019]

以下、すべての画像はこの論文からの引用です。

TL;DR

  • 英語の5つの文書分類タスクで以下の処理により、Data Augmentationを行った。
    • (先行研究あり) 同義語で置換
    • (New!) randomな同義語の挿入
    • (New!) randomなワードの移動
    • (New!) randomなワードの削除
  • 半分程度のデータ量だけ学習させて同等な精度をだせた
  • convolutionとRNNの両方で効果が出た
  • 著者の実装はこちら

Data Augmentation

特に、画像分野で成功を収めている手法で、画像の反転、拡大縮小、など様々な方法でデータをかさ増しします。これにより、以下のような利点があると言われています。

  • 汎化性能の向上
  • 少量データセットでの精度の向上

参考: (あまりにも一般的すぎてまとまった資料が見つかりにくいです)

一方、自然言語処理ではData Augmentationはあまり一般的ではなく、いまだ確立された手法は見つかっていないのが現状です。

Easy Data Augmentation

本論では、以下のような処理を組み合わせた自然言語処理のData Augmentationの手法が提案されています。

アルゴリズム
同義語置換 センテンス中のワードをランダムに選択し、同義語のうちの1つをランダムに選び、変換する。この作業をn回繰り返す。ただし、ストップワードは除く
ランダムな同義語挿入 センテンス中のランダムなワードの同義語をランダムに選び、センテンス中のランダムな位置に挿入する。この作業をn回繰り返す。ただし、ストップワードは除く
ランダムなワード移動 センテンス中の2つのワードをランダムに選び位置を交換する。この作業をn回繰り返す
ランダムなワード削除 確率pでセンテンス中のワードを削除

ここで、n=\alpha lを満たすこととする。なお、lはセンテンスの長さをさす。また、\alphaはパラメータであり、センテンス中のDAを行うワードの割合を表す。ただし、「ランダムな削除」ではp = \alphaとする。この制限により、長いセンテンスはたくさんDAを行い、短いセンテンスは少ししかDAしないように調節する。

また、同義語の取得はWordnetを使用しています。(なので日本語でも使える手法)

以上の4つを行うのが本論で提案されているEasy Data Augmentation (EDA)です。

Dataset

以下の5種のデータセットにより5つの文書分類タスクをといて検証を行っています。ここで、データセットの量を制限しながらEDAすることで、少ないデータセットに対してEDAが精度に及ぼす影響を確かめています。

  1. (極性分類) SST-2: Stanford Sentiment Treebank (Socher et al., 2013)
  2. (レビュー推定) CR: customer reviews (Hu and Liu, 2004; Liu et al., 2015)
  3. () SUBJ: subjectivity/objectivity dataset (Pang and Lee, 2004)
  4. (質問分類) TREC: question type dataset (Li and Roth, 2002)
  5. () PC: Pro-Con dataset (Ganapathibhotla and Liu, 2008)

f:id:atelier-0213:20191202225045p:plain:w300
dataset

英語の自然言語のデータセットではよくあるサイズ感だと思います。しかし、日本語の自然言語のオープンなデータセットでこの分量は非常に少ないですし、企業においても結構ハードルが高い量ではないかと思います。

Architecture

よく知られた以下のニューラルネットワークモデルを使用して検証が行なわれています。

  • LSTM
  • CNN

結果

f:id:atelier-0213:20191202224843p:plain
result
データセット毎に、横軸を学習に使ったデータの割合、縦軸をaccuracyとした結果がプロットされている。赤線がEDAを行った場合、青線が標準の学習を行った場合の結果になっている。

ここから以下のことがわかる。

  • 軒並みEDAを行っている方が精度がよい
  • 特にデータセットの10~20%しか学習に使っていないケースで、差が顕著
  • EDAをした場合は10%のデータセットのみ使ったあたりから精度がサチってきている

つまり、従来手法で必要とされたデータセットの半分以下の分量しかない場合でもEDAを行うことで従来手法と同じ水準の精度が得られる可能性が示唆されている。 従来は5000 ~ 10000程度のデータセットがないと達成できなかった精度が、EDAを使うだけで500 ~ 1000程度のデータセットで再現できるのは実用上非常に有用だと思います。

best parameter

f:id:atelier-0213:20191202225148p:plain
parameter comparison

parameter \alphaの大きさ(EDAを行う割合)についても調べられています。上図は、縦軸がEDAによる精度の上昇率、横軸は \alphaの大きさになっており、データセットのサイズを変えて異なる色でプロットしている。

上図からわかるように、\alphaは大きい値をとると、却って精度を下げてしまうため、著者は以下のパラメータが最適であると結論づけている。

f:id:atelier-0213:20191202225023p:plain:w200
best parameter

考察.1 DAにより文意が大きく歪められ、ラベルに属さないようにならないのか

画像でのDAは、反転や拡大縮小であれば、直感的にはラベルに属さなくなるほどの大きな問題は起こらないように思えますが、自然言語のDA (ワードの入れ替えや順番)は文章に重大な変更を加えてしまうことが懸念されます。画像データのもつ最小単位であるピクセルは、全体に影響するほどの変更を加えるにはあまりにも多くのピクセルに手を加える必要があると思います。一方、自然言語の最小単位であるワードは (特に、名詞や動詞の場合) 一つ一つがすごく重要な役割を果たしており繊細な扱いが必要とされそうです。

そこで、本論では、EDAによりデータはどれだけの変更を受けているか調べられています。 2クラス分類タスクであるpro-con datasetをt-SNEによりクラスタリングを行った結果が以下の図です。EDAを行ったデータは小さい記号、行っていないオリジナルのデータは大きい記号でプロットされています。この図からわかるようにEDAの有無で大きな差異は見られません。

f:id:atelier-0213:20191202231734p:plain:w300
クラスタリング

上図の結果に加えて、データ量が大きいと、ラベルノイズの影響は小さくなることが経験的に知られているため、「DAにより文意が大きく歪められ、ラベルに属さないようにならないのか」という疑問に対する答えは、十分その可能性はありため注意する必要はあるが、少なくとも今回の結果では顕著には起きておらず、悪影響も与えていなさそうであるという風に結論づけられています。

考察.2 先行研究との優位性は何か

先行研究では大規模データセットを用いたモデルを必要とするものが多いです。一方、本手法は非常にシンプルな手法です。簡単にダウンロードできて、実装に組み込めるWordnetと、簡単な置換等だけで成果がでているため手軽に多くのケースでの使用が期待できます。

考察.3 適するケース・不適なケース

本手法は汎用的で強力な手法に思えますが、(原論のFAQで書かれているように) 十分なデータ量があって、一般的なディープラーニングが可能であればEDAは不必要だと言っていいと思います。

適するケース 不適なケース
小規模データセット 大規模データセット

(個人的に) 期待できる応用

以下、追って検証していきたい項目です。

  • 日本語データセットへの応用
  • 自然言語における不均衡データへの応用
  • 対話生成型モデルの汎用性向上

まとめ

自然言語処理のData Augmentation手法である、Easy Data Augmentation (EDA)についての論文をまとめました。 著者の実装も公開されているので日本語用にアレンジして試してみたいと思っています。

この記事は少しでもお役に立てば嬉しいです。 また、原論文も短くて読みやすいのでオススメです。

明日は、 o3c9さんshinochinさんです。

Refs