BERTモデル自体は自分で作る必要はない
BERTモデルのプログラミング自体は、既にあるものを利用すればOKです。最も有名で確実なものは下記になります。
Googleがオフィシャルに公開しているもの(Tensorflow版のみ)
https://github.com/google-research/bert
huggingfaceが公開しているもの(こちらはTensorflowとPyTorch版両方ある)
https://github.com/huggingface/transformers/
こちらのBERTには学習にコストのかかる日本語学習済みモデルが内包されていますので(プレトレーニング済み)、ファインチューニングするなどして直ぐに利用可能です。
東北大学が作った日本語プレトレーニングモデル
https://github.com/cl-tohoku/bert-japanese
日本語プレトレーニング済みモデルの種類
BERTのプレトレーニングは多くの計算リソースを必要とする為、特に理由がなければ既に学習済みのものを活用したい。公開されている日本語プレトレーニング済みモデルは下記の4種類がある。
- bert-base-japanese
- bert-base-japanese-whole-word-masking
- bert-base-japanese-char
- bert-base-japanese-char-whole-word-masking
huggingfaceのものには4種類の学習済みモデルが既に内包されている。1と2は形態素ベースで処理するもの、3と4は文字単位で処理するものです。
whole-word-maskingとは
whole-word-maskingとは、新方式のプレトレーニング手法の事です。下記に具体的なトレーニング例の違いを示します。
学習対象文字列
the man jumped up , put his basket on phil ##am ##mon ‘ s head
従来方式の学習(マスキングの仕方がランダム)
[MASK] man [MASK] up , put his [MASK] on phil [MASK] ##mon ‘ s head
新方式whole-word-masking での学習(一連の単語は連続してマスキング)
the man [MASK] up , put his basket on [MASK] [MASK] [MASK] ‘ s head
whole-word-maskingという新方式のプレトレーニングの方が、ファインチューニング後も精度が高いという事のようです。よって特に理由がなければwhole-word-maskingを使う方が良いという事になります。理由というのは例えば比較対象とAppleToAppleにする必要があるとか、そういう場合は従来の方式のものを使うことになるかと思います。