🚀 BERT base 日本語モデル
このリポジトリには、日本語のウィキペディアデータセットで学習されたBERTベースモデルが含まれています。このモデルは、マスク付き言語モデルのタスクに適しており、日本語の文章における欠損部分の予測に役立ちます。
🚀 クイックスタート
まずは依存関係をインストールします。
$ pip install torch==1.8.0 transformers==4.8.2 sentencepiece==0.1.95
次に、transformers.pipeline
を使ってマスク埋めタスクを試してみましょう。
>>> import transformers
>>> pipeline = transformers.pipeline("fill-mask", "colorfulscoop/bert-base-ja", revision="v1.0")
>>> pipeline("専門として[MASK]を専攻しています")
[{'sequence': '専門として工学を専攻しています', 'score': 0.03630176931619644, 'token': 3988, 'token_str': '工学'}, {'sequence': '専門として政治学を専攻しています', 'score': 0.03547220677137375, 'token': 22307, 'token_str': '政治学'}, {'sequence': '専門として教育を専攻しています', 'score': 0.03162326663732529, 'token': 414, 'token_str': '教育'}, {'sequence': '専門として経済学を専攻しています', 'score': 0.026036914438009262, 'token': 6814, 'token_str': '経済学'}, {'sequence': '専門として法学を専攻しています', 'score': 0.02561848610639572, 'token': 10810, 'token_str': '法学'}]
⚠️ 重要提示
transformers.pipeline
またはtransformers.AutoModel.from_pretrained
を介してモデルをダウンロードする際に再現性を保つために、revision
オプションを指定することをおすすめします。
✨ 主な機能
- 日本語のウィキペディアデータセットで学習されたBERTベースモデル。
- マスク付き言語モデルのタスクに適している。
transformers.pipeline
を使って簡単にマスク埋めタスクを実行できる。
📦 インストール
依存関係をインストールするには、以下のコマンドを実行します。
$ pip install torch==1.8.0 transformers==4.8.2 sentencepiece==0.1.95
💻 使用例
基本的な使用法
import transformers
pipeline = transformers.pipeline("fill-mask", "colorfulscoop/bert-base-ja", revision="v1.0")
result = pipeline("専門として[MASK]を専攻しています")
print(result)
📚 ドキュメント
学習データ
2021年6月20日時点の日本語ウィキペディアデータセットが学習に使用されています。このデータセットはCreative Commons Attribution-ShareAlike 3.0の下で公開されています。データセットは学習セット、検証セット、テストセットの3つのサブセットに分割されています。トークナイザーとモデルは学習セットで学習されています。
モデルの説明
モデルのアーキテクチャは、語彙サイズを除いてBERTベースモデル(隠れ層のサイズ: 768、隠れ層の数: 12、注意ヘッドの数: 12、最大位置埋め込み: 512)と同じです。語彙サイズは元の30,522ではなく32,000に設定されています。モデルにはtransformers.BertForPreTraining
が使用されています。
トークナイザーの説明
このモデルのトークナイザーにはSentencePieceが使用されています。学習中、トークナイザーモデルは学習セットから抽出された1,000,000サンプルで学習されました。語彙サイズは32,000に設定されています。日本語では単語が空白で区切られていないため、add_dummy_prefix
オプションはTrue
に設定されています。学習後、モデルはtransformers.DebertaV2Tokenizer
にインポートされます。これはSentencePieceモデルをサポートしており、use_fast
オプションをTrue
またはFalse
に設定した場合の動作が一貫しているためです。
学習
学習の詳細は以下の通りです。
- 勾配更新は256サンプルごとに行われます(バッチサイズ: 8、勾配蓄積バッチ数: 32)。
- 勾配クリップノルムは1.0です。
- 学習率は0から始まり、最初の10,000ステップで線形に0.0001まで増加します。
- 学習セットには約20Mのサンプルが含まれています。80k * 256 ~ 20Mなので、1エポックには約80kのステップがあります。
学習はUbuntu 18.04.5 LTSで1台のRTX 2080 Tiを使用して行われました。学習は検証損失が悪化するまで続けられ、合計で約214kの学習ステップが行われました。テストセットの損失は2.80でした。学習コードはGitHubリポジトリで入手できます。
🔧 技術詳細
- モデルアーキテクチャ: BERTベースモデル(隠れ層のサイズ: 768、隠れ層の数: 12、注意ヘッドの数: 12、最大位置埋め込み: 512)
- 語彙サイズ: 32,000
- トークナイザー: SentencePiece
- 学習データ: 日本語ウィキペディア(2021年6月20日時点)
- 学習環境: Ubuntu 18.04.5 LTS、RTX 2080 Ti
- 学習ステップ数: 約214k
- テストセット損失: 2.80
📄 ライセンス
Copyright (c) 2021 Colorful Scoop
このリポジトリに含まれるすべてのモデルはCreative Commons Attribution-ShareAlike 3.0の下でライセンスされています。
免責事項: このモデルは学習データ内の類似テキスト、非真実なテキスト、または偏ったテキストを生成する可能性があります。モデルの使用は自己責任で行ってください。Colorful Scoopはモデルからの出力についていかなる保証も行いません。Colorful Scoopはモデルの出力に起因するいかなる問題、損失、または損害に対して責任を負いません。
このモデルは以下のデータを学習データとして利用しています。