BERTのファインチューニング

時間に余裕ができたのでBERTを触ってみる。

日本語での性能が気になるのでyoheikikutaさんの学習済みモデルリポジトリを基とする。

Livedoorニュースコーパスの分類タスクのファインチューニング

コーパス

Livedoorニュースコーパスは日本語テキストコーパスで9種類のソースから収集された記事からなる。 数えたところ合計7367記事であった。

ソース 記事数
dokujo-tsushin 870
it-life-hack 870
kaden-channel 864
livedoor-homme 511
movie-enter 870
peachy 842
smax 870
sports-watch 900
topic-news 770

データセットの配布元:

検証内容

自宅のGTX1080でファインチューニングを行った。

事前学習モデルはyoheikikutaさんのモデルを使用させていただいた。

作業自体はほぼリポジトリのノートブック通りで出来た。

そのままだと芸がないので、学習データ数を全体の60%の100%, 50%, 20%, 10%, 5%に変化させ、学習データ数に関するF値の変化を調べることにした。 データ数に換算すると4421, 2210, 884, 442, 221テキスト。

なお、検証, テストデータ数は全てに共通でそれぞれ20%。

検証に用いたスクリプトはbert-japaneseをフォークして追加:

結果

転移学習は正常に進み(100%の場合は1時間半程度、5%の場合は5分弱)、次のようなグラフが得られた。

100%と5%は同一の学習データでそれぞれ2回と3回学習して平均をとっている。

f:id:lang-int:20190408041424p:plain
学習データ数とF値

感想

  • 学習データセット数が884個までは性能の劣化が小さいように見える。
  • 学習データセット数を4421個から221個に減らすと、得られるF値のばらつきも大きくなりそうである。
  • 今回はファインチューニングが再現することを確認した。これからしばらく、このモデルを使っていくつかのタスクを学習させてみたい。