Published on

transformersでT5,MT5,BYT5の文章要約比較

Author
株式会社イエローバックの機械学習エンジニアです

はじめに

huggingface transformers で使える日本語モデルのまとめで、日本語の特化の T5 モデル(sonoisa/t5-base-japanese)と日本語も扱える多言語モデル MT5(google/mt5-base)を取り上げました。

今回は、いくつかの T5 系モデルで日本語の要約を試してみます。

環境

  • python: 3.8
  • CuDA: 11.1
  • pytorch: 1.8.1
  • transformers: 4.6.1 (4.7.0.dev0 for byt5)
  • deepspeed: 0.3.16

比較モデル

今回用いたのは以下のモデルです。byt5 は、バイトベースの t5 モデルで transformers 4.7.0(まだリリースされていない)に含まれる予定のモデルです。キャラクタベースよりもさらに語彙が細かくなっています。

  • 日本語 T5
    • 日本語に特化したモデル
  • MT5(base,small)
    • 多言語用モデル
  • BYT5(base,small)
    • バイトベースのモデル。多言語データセット mc4 で学習されているので日本語でも動作する

| モデル | layers | hidden_size | attn heads | vocabs | params | | ------------------------ | -----: | ----------: | ---------: | -----: | -----: | | sonoisa/t5-base-japanese | 12 | 768 | 12 | 32128 | 222 M | | google/mt5-base | 12 | 768 | 12 | 250112 | 390 M | | google/mt5-small | 8 | 512 | 6 | 250112 | 172 M | | google/byt5-base | 18 | 1536 | 12 | 384 | 581 M | | google/byt5-small | 12 | 1472 | 6 | 384 | 299 M |

データセット

文章分類の実験でも使ったlivedoor ニュースコーパスを使います。

今回は、本文(body)とタイトル(title)を使用して、本文からタイトルを生成するタスクとしました。

モデル毎にトークナイズを行った際の平均トークン長を計算してみました。 使用したコードはここです。

| モデル | 平均トークン数(本文) | 平均トークン数(タイトル) | | ---------------- | -------------------: | -----------------------: | | t5-base-japanese | 616.0 | 21.8 | | mt5-base | 588.6 | 20.3 | | byt5-base | 3287.7 | 99.5 |

学習

mt5-base や byt5-base などは、RTX2080Ti では batch size 1 でも Out Of Memory になるため、deepspeed を用いました。deepsize の設定ファイルはds_config_zero2.jsonを用いました。

以下のように学習(ファインチューニング)しました。

$ BS=2
$ SLEN=256
$ TLEN=64
$ MODEL=sonoisa/t5-base-japanese
$ OUTDIR=./output-t5-base-japanese
$ DATADIR=../data
$ DSCONFIG=./ds_config_zero2.json
$ EPOCH=3
$ deepspeed ./transformers/examples/pytorch/summarization/run_summarization.py \
    --model_name_or_path $MODEL \
    --do_train \
    --do_eval \
	--do_predict \
    --train_file $DATADIR/train.csv \
    --validation_file $DATADIR/dev.csv \
    --test_file $DATADIR/dev.csv \
    --source_prefix "summarize: " \
    --output_dir $OUTDIR \
    --overwrite_output_dir \
    --per_device_train_batch_size=$BS \
    --per_device_eval_batch_size=$BS \
    --predict_with_generate \
    --text_column text \
    --summary_column label \
    --logging_dir $OUTDIR/runs \
    --logging_steps 10 \
    --num_train_epochs $EPOCH \
    --max_source_length $SLEN \
    --max_target_length $TLEN \
    --deepspeed $DSCONFIG \
    --fp16

前述の平均トークン長を参考に max_source_length,max_target_length はモデル毎に以下のようにしました。

| モデル | BS | SLEN | TLEN | | ---------------- | --: | ---: | ---: | | t5-base-japanese | 2 | 256 | 64 | | mt5-base | 2 | 256 | 64 | | mt5-small | 8 | 256 | 64 | | byt5-base | 2 | 512 | 128 | | byt5-small | 8 | 512 | 128 |

ROUGE スコアの計算

上記の学習の際に--do_predictオプションを付加しているので、学習後に dev データに対する要約生成をおこない、生成結果はgenerated_predictions.txtとして出力ディレクトリに保存されます。生成結果に対して、正解との比較をおこない ROUGE スコアを算出します。

ROUGE スコアは要約でよく使われる指標です。ROUGE スコアの計算はトークナイズをおこない、トークンを比較することで行われます。 今回はモデル間のトークナイザの差異がないように、モデル毎のトークナイザでなく、全てのモデルで MeCab(=BertJapaneseTokenizer)を用いました。コードはここです。

ROUGE スコア評価結果

| モデル | ROUGE 1 | ROUGE 2 | ROUGE L | | ---------------- | ------: | ------: | ------: | | t5-base-japanese | 35.8 | 19.2 | 31.4 | | mt5-base | 36.6 | 20.7 | 32.3 | | mt5-small | 28.1 | 14.5 | 25.0 | | byt5-base | 34.2 | 18.7 | 30.0 | | byt5-small | 29.8 | 15.1 | 25.5 |

所感

  • 比較したなかでは mt5-base がベストな結果となりました。
  • base モデル間ではそれほど差異はなさそうです。
  • mt5-base vs byt5-base や mt5-small vs byt5-small で、byt5 はもっと悪いと思いましたが意外に検討しているようです。

生成タイトルサンプル

ランダムに 3 記事を選び、モデル毎の生成タイトルをならべてみました。

| モデル | タイトル | | ---------------- | ------------------------------------------------------------------------------ | | オリジナル | 【Sports Watch】キム・ヨナ、泥沼の訴訟合戦で人気にかげり | | t5-base-japanese | キム・ヨナ、スポーツに「銭ゲバ訴訟」勃発 | | mt5-base | キム・ヨナが前所属事務所を銭ゲバ訴訟 | | mt5-small | キム・ヨナが前所属事務所に「銭ゲバ訴訟」 | | byt5-base | 【Sports Watch】キム・ヨナの母親が自らの収益配分をめぐる訴訟 | | byt5-small | キム・ヨナが収益配分をめぐる訴訟を起こした「ヨナの母親が収益配分をめぐる訴訟」 |

| モデル | タイトル | | ---------------- | ------------------------------------------------------------------------------------------------------------- | | オリジナル | ソフトバンク、放射線測定機能搭載スマホ「PANTONE 5 107SH」を 6 月 22 日から事前予約開始 | | t5-base-japanese | ソフトバンク、ndroid スマートフォン「 5 107」を 6 月 22 日に事前予約開始 | | mt5-base | ソフトバンク、放射線測定機能搭載 Android スマートフォン「PANTONE 5 107SH」を 6 月 22 日に事前予約開始 | | mt5-small | ソフトバンクモバイル、放射線測定機能搭載 Android スマートフォン「PANTONE 5 107SH」を 6 月 22 日に事前予約開始 | | byt5-base | ソフトバンク、放射線測定機能搭載スマートフォン「PANTONE 5 107SH」を 6 月 22 日に事前予約開始 | | byt5-small | ソフトバンクモバイル、放射線測定機能を搭載する Android スマホ「PANTONE 5 107SH」を 6 月 22 日に事前 |

| モデル | タイトル | | ---------------- | ------------------------------------------------------------------------------------------------------- | | オリジナル | 恋愛マニュアル本って本当に使える? | | t5-base-japanese | モテテクニック系恋愛マニュアル本は読んだことがある? モテテクニック系恋愛マニュアル本は読んだことがある? | | mt5-base | 恋愛マニュアル本を読んだ人は? | | mt5-small | 恋愛マニュアル本を読んだのは? | | byt5-base | 【恋愛マニュアル】男の気持ちがわからない、復縁したいのは『The Rules』 | | byt5-small | 【モテテクニック系】モテテクニック系の恋愛マニュアル本「The Rules」の恋愛マニュアル本【 |

それっぽいタイトルが生成されていて面白いです。byt5 系は【】が多いなどそれぞれ特徴がでています。 t5-base-japanse モデルでは英大文字が消えてしまう傾向にあるようです。実際に使うにはチューニングが必要そうです。

おわりに

T5 系モデルで日本語の要約を試しました。 本文からのタイトル生成はチューニングしていない状態でもそこそこ使えそうな印象です。 モデル間の比較では結果になんとなく特徴がでている印象を受けました。