🚀 フィンランド語用RoBERTa largeモデル
このモデルは、マスク言語モデリング(MLM)を目的として、フィンランド語で事前学習されたRoBERTaモデルです。RoBERTaは、この論文で紹介され、このリポジトリで最初に公開されました。このモデルは大文字と小文字を区別します。
🚀 クイックスタート
このモデルは、マスク言語モデリングのために事前学習されています。主に下流タスクでのファインチューニングを目的としています。
✨ 主な機能
- フィンランド語のバイディレクショナル表現を学習し、下流タスクの特徴抽出に利用可能。
- マスク言語モデリングにより、文全体を考慮した学習が可能。
📦 インストール
このモデルは、Hugging Faceのtransformers
ライブラリを通じて利用できます。transformers
のインストール方法については、公式ドキュメントを参照してください。
💻 使用例
基本的な使用法
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='Finnish-NLP/roberta-large-finnish')
>>> unmasker("Moikka olen <mask> kielimalli.")
[{'sequence': 'Moikka olen hyvä kielimalli.',
'score': 0.1535797119140625,
'token': 767,
'token_str': ' hyvä'},
{'sequence': 'Moikka olen paras kielimalli.',
'score': 0.04795042425394058,
'token': 2888,
'token_str': ' paras'},
{'sequence': 'Moikka olen huono kielimalli.',
'score': 0.04251479730010033,
'token': 3217,
'token_str': ' huono'},
{'sequence': 'Moikka olen myös kielimalli.',
'score': 0.027469098567962646,
'token': 520,
'token_str': ' myös'},
{'sequence': 'Moikka olen se kielimalli.',
'score': 0.013878575526177883,
'token': 358,
'token_str': ' se'}]
高度な使用法
PyTorchでの特徴抽出
from transformers import RobertaTokenizer, RobertaModel
tokenizer = RobertaTokenizer.from_pretrained('Finnish-NLP/roberta-large-finnish')
model = RobertaModel.from_pretrained('Finnish-NLP/roberta-large-finnish')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
TensorFlowでの特徴抽出
from transformers import RobertaTokenizer, TFRobertaModel
tokenizer = RobertaTokenizer.from_pretrained('Finnish-NLP/roberta-large-finnish')
model = TFRobertaModel.from_pretrained('Finnish-NLP/roberta-large-finnish', from_pt=True)
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
📚 ドキュメント
モデルの説明
このフィンランド語のRoBERTaモデルは、自己教師付き学習により、大量のフィンランド語データセットで事前学習されています。具体的には、マスク言語モデリング(MLM)を用いて、文の15%の単語をマスクし、マスクされた単語を予測するように学習します。これにより、文の双方向的な表現を学習することができます。
想定される用途と制限
このモデルは、マスク言語モデリングに直接使用することもできますが、主に下流タスクでのファインチューニングを目的としています。ただし、このモデルは文全体を考慮したタスク(シーケンス分類、トークン分類、質問応答など)でのファインチューニングを主な目的としています。テキスト生成などのタスクには、GPT2などのモデルを使用することをお勧めします。
制限事項とバイアス
このモデルの学習データには、インターネットから収集された多くの未フィルタリングのコンテンツが含まれています。このため、モデルの予測にバイアスが生じる可能性があります。
学習データ
このフィンランド語のRoBERTaモデルは、以下の5つのデータセットの組み合わせで事前学習されています。
生データセットは、低品質や非フィンランド語の例をフィルタリングするためにクリーンアップされています。これらのクリーンアップされたデータセットは、合計で約78GBのテキストになります。
学習手順
前処理
テキストは、Byte-Pair Encoding(BPE)のバイトバージョンを使用してトークン化され、語彙サイズは50265です。モデルの入力は、最大512トークンの連続したピースを取り、文書をまたがることができます。新しい文書の始まりは<s>
で、終わりは</s>
でマークされます。
マスク手順の詳細は以下の通りです。
- 15%のトークンがマスクされます。
- 80%のケースで、マスクされたトークンは
<mask>
に置き換えられます。
- 10%のケースで、マスクされたトークンはランダムなトークンに置き換えられます。
- 10%のケースで、マスクされたトークンはそのまま残されます。
BERTとは異なり、マスクは事前学習中に動的に行われます(つまり、各エポックで変化し、固定されていません)。
事前学習
このモデルは、Google TPU Research Cloudによって提供されたTPUv3-8 VMで、シーケンス長128で2エポック、シーケンス長512で1エポックの計3エポック学習されました。オプティマイザにはAdafactorを使用し、学習率は2e-4、\(\beta_{1} = 0.9\)、\(\beta_{2} = 0.98\)、\(\epsilon = 1e-6\)とし、1500ステップの学習率ウォームアップを行った後、学習率を線形に減衰させました。
評価結果
このモデルは、2つの異なるラベル付きデータセット(Yle NewsとEduskunta)を用いて、下流のテキスト分類タスクでファインチューニングされ、評価されました。Yle Newsの分類では、シーケンス長128と512の2つの設定でファインチューニングを行い、Eduskuntaではシーケンス長128のみでファインチューニングを行いました。
モデル |
平均 |
Yle News 128長 |
Yle News 512長 |
Eduskunta 128長 |
Finnish-NLP/roberta-large-finnish |
88.02 |
94.53 |
95.23 |
74.30 |
TurkuNLP/bert-base-finnish-cased-v1 |
88.82 |
94.90 |
95.49 |
76.07 |
flax-community/RoBERTa-large-finnish |
87.72 |
94.42 |
95.06 |
73.67 |
このモデルは、Hugging Face JAX/Flaxコミュニティウィーク中に学習された前作のFinnish RoBERTa-largeモデルよりも性能が向上していますが、FinBERT (Finnish BERT)モデルにはやや劣っています(約1%)。
🔧 技術詳細
- モデルタイプ:RoBERTa
- 学習データ:mc4、Wikipedia、Yle Finnish News Archive、Finnish News Agency Archive (STT)、The Suomi24 Sentences Corpusのフィンランド語サブセット
- 前処理:Byte-Pair Encoding(BPE)を使用したトークン化、語彙サイズ50265
- 学習方法:マスク言語モデリング(MLM)
- オプティマイザ:Adafactor
- 学習率:2e-4
- 学習エポック数:3エポック
📄 ライセンス
このモデルは、Apache 2.0ライセンスの下で提供されています。
謝辞
このプロジェクトは、Googleが提供するTPU Research Cloudの計算資源のおかげで実現することができました。
チームメンバー
詳細については、自由にお問い合わせください 🤗