#はじめに
以前、日本語のBERT事前学習済モデルやXLNet事前学習済モデル等の紹介記事を投稿しましたストックマークの森長です。
モデル公開の記事を多くの皆様に読んでいただき、ありがとうございます。
今回は、ALBERTの日本語事前学習済モデルを公開します。
さて、様々な事前学習済モデルが多数提案されている中、なぜALBERT日本語モデルを公開するかといいますと、ALBERTが、A Lite BERTと記載されるように、ただSOTAを突き詰めたものではなく、精度を維持・向上させつつもBERTを軽量化しているモデルのためです。
事前学習済モデルのサイズを大きくすると性能が向上する傾向にありますが、学習時間が長くなったりメモリにのらなくなったり、作成の上での制約が(費用面の制約も)増えてきます。そのため、比較的短時間でモデルを作成でき、モデルサイズが小さいALBERTは、とても使いやすいです。
#ALBERTとは
ALBERTとは、BERTを以下の手法を用いて、軽量かつ高速に学習できるよう提案されたモデルです。
- 因数分解とパラメータ共有を利用したパラメータ削減
- モデルサイズの縮小、学習時間の低減に寄与
- BertのNext Sentence PredictionタスクをSentence Order Predictionタスクに変更
- モデルの精度向上に寄与
ここでは作成したモデルのパラメータ/実験設定を述べるに留め、ALBERTというモデルの詳細説明については割愛させていただきます。
弊社のALBERT事前学習済モデルの特徴
学習元データ
以前公開しましたBERTの事前学習済モデルと同様に学習用データを日本語ビジネスニュース記事としています。そのため、本モデルは、主にビジネスに関するドメインで効果を発揮します。
tokenizer
弊社では、tokenizerにMeCab + NEologd及びSentencepieceを利用して、文章をトークン化しています。
まず、MeCabを利用することで形態素として正しく分割し、その上でSentencepieceを行うことで、語彙のカバー範囲を広げています。
事前学習済モデルの詳細
事前学習用データ | トークナイザー | 語彙数 | 正規化 | シーケンス長 |
---|---|---|---|---|
日本語ビジネスニュース記事(300万記事) | MeCab + NEologd 及び Sentencepiece | 32,000語 | NFKD ※ | 128 |
※正規化がNFKDである理由は、公式実装がNFKDのためNFKCにするとライブラリの修正やメソッドのオーバライドが必要になることと、弊社でXLNetのモデルを作成した際にNFKDとNFKCで結果に明確な差異が無かったためです。
#ダウンロード
公式(TensorFlow)とPyTorch版で利用可能なモデルを公開します。
ダウンロードリンク
モデルの内訳は以下の通りです。
- TensorFLow版
- model.ckpt.meta、 model.ckpt.index、 model.ckpt.data-00000-of-00001、 checkpoint
- config.json
- spiece.model (Sentencepieceのモデル)
- PyTorch版
- pytorch_model.bin
- config.json
- spiece.model (Sentencepieceのモデル)
#利用方法
事前学習済モデルの使用にあたっては、TensorFlow版及びPyTorch版で公開されているサンプルスクリプトで動作しますが、入力データ(入力文章)をMeCab+NEologdでわかち書きしてください。
ALBERTの日本語事前学習済モデルを利用した所感
BERTとの比較
弊社の検証用タスク(記事の分類)においては、ALBERT-baseがBERT-baseを1%程度下回る性能となっていましたが、ALBERTはパラメータ数がBERTに比べ大幅に削減されている中で、この精度は十分実用的です。
論文でも同様にbaseモデルの比較ではALBERTの性能が少しだけ低く報告されていますが、ALBERTの凄いところは、BERT-baseモデルよりも少ないパラメータ数(モデルサイズ)のALBERT-largeで、BERT-baseの性能を越えています。
(具体的な数値は論文のTable 2をご参照ください。)
今後はALBERT-large、xlarge、xxlargeと同等のパラメータサイズのALBERTモデルを作成して利用していきます。
モデルサイズについて
リソースが限られている中で、モデルサイズが50〜500MB程度に抑えられることは以下の点でとても使いやすかったです。(モデルサイズが大きいと何かと待ち時間が増えてしまいます…)
- 事前学習・検証・推論時のHDD,SSDの容量削減
- デプロイ(モデルのダウンロード速度等)の高速化
#まとめ
最後までお読みいただき、ありがとうございました。
BERT、XLNet等と同様に公開したALBERT事前学習済モデルが、自然言語処理の盛り上がりに少しでも貢献ができると大変嬉しいです。