LoginSignup
5

More than 1 year has passed since last update.

日本語版Easy Data Augmentation の効果検証(実装コードあり)

Posted at

やったこと

先日公開した下記の記事の続編となります。
自然言語処理のかさ増し手法 Easy Data Augmentation の日本語版を実装する

前回はEasy Data Augmentation(以下、EDA)という手法を使用して日本語の文章をかさ増しする関数を実装しました。今回はその関数を使ってデータセットかさ増しすることによって、実際にモデルの精度が向上するかを検証します。

検証方法

livedoorニュース分類モデルの作成を通じて検証しました。

流れ

  • 500件/1000件/2000件のtrainデータを用意
  • それぞれでEDAなしモデル、EDAありモデルを作成
  • 予め確保しておいたtestデータ(1471件、全体の2割)に当てはめ、accuracyを比較

備考

  • EDAパラメータはα=[0.05,0.1]、aug_num=[1,2,4,8,16]の組み合わせを試す
  • モデルはBERTを使用し、パラメータはepoch数をearly stoppingにより決定する以外は全て固定

結果

全てにおいて、EDAありがEDAなしを精度を上回る結果となりました。(※差分は丸め込み誤差あり)
元データの件数が少ないほど効果は大きく、件数が多くなるにつれて効果は小さくなりました。

データ件数 EDAなし EDAあり 差分 パラメータ
500 0.793 0.844 +0.050 α=0.1、n=16
1000 0.840 0.871 +0.031 α=0.1、n=8
2000 0.876 0.901 +0.024 α=0.1、n=16

EDAのパラメータ別結果

【500件】

alpha num_agg accuracy 差分
EDAなし EDAなし 0.793
0.05 1 0.818 +0.024
0.05 4 0.816 +0.023
0.05 8 0.840 +0.047
0.05 16 0.827 +0.033
0.1 1 0.816 +0.023
0.1 4 0.828 +0.035
0.1 8 0.840 +0.046
0.1 16 0.844 +0.050

【1000件】

alpha num_agg accuracy 差分
EDAなし EDAなし 0.840
0.05 1 0.861 +0.022
0.05 4 0.853 +0.014
0.05 8 0.865 +0.026
0.05 16 0.867 +0.027
0.1 1 0.859 +0.019
0.1 4 0.863 +0.023
0.1 8 0.871 +0.031
0.1 16 0.861 +0.022

【2000件】

alpha num_agg accuracy 差分
EDAなし EDAなし 0.876
0.05 1 0.888 +0.012
0.05 4 0.894 +0.018
0.05 8 0.891 +0.014
0.05 16 0.893 +0.016
0.1 1 0.891 +0.014
0.1 4 0.885 +0.009
0.1 8 0.895 +0.018
0.1 16 0.901 +0.024

実装コード

使用したコードを下記になります。
https://github.com/tchih11/qiita_eda

  • 01_make_dataset.ipynb → livedoorニュースデータの前処理
  • 02_make_eda_dataset.ipynb → EDAの実行
  • 03_eda_verification.ipynb → モデリング及び効果検証

環境はgoogle colaboratoryです。
おかしな点があれば、ご指摘いただけますと大変ありがたいです。

感想

今回の検証では、EDAによるモデルの精度向上が確認できました。
前回実装時には文意が変わってしまうことを懸念していましたが、今回の検証においては許容範囲内だったようです。
若干出来すぎ感は否めないものの、データが少なく精度が上がらない場面で試してみる価値ありかなと思います。
アノテーション、めっちゃ大変ですからね(経験者)。

参考

https://github.com/Bjarten/early-stopping-pytorch
文書分類で自然言語処理に触れる
【実装解説】日本語版BERTをGoogle Colaboratoryで使う方法(PyTorch)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5