🚀 BERT base model (uncased)
このモデルは、マスク言語モデリング(MLM)の目的で英語のコーパスで事前学習されたものです。この論文で紹介され、このリポジトリで最初に公開されました。このモデルは大文字と小文字を区別しません。
🚀 クイックスタート
このモデルは、マスク言語モデリングや次文予測に使用できますが、主に下流タスクでのファインチューニングを目的としています。詳細については以下のセクションを参照してください。
✨ 主な機能
- マスク言語モデリング(MLM)により、文の双方向表現を学習できます。
- 次文予測(NSP)により、文間の関係を学習できます。
- 下流タスクでのファインチューニングに適しています。
💻 使用例
基本的な使用法
マスク言語モデリングのパイプラインでこのモデルを直接使用する方法は次のとおりです。
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='bert-base-uncased')
>>> unmasker("Hello I'm a [MASK] model.")
[{'sequence': "[CLS] hello i'm a fashion model. [SEP]",
'score': 0.1073106899857521,
'token': 4827,
'token_str': 'fashion'},
{'sequence': "[CLS] hello i'm a role model. [SEP]",
'score': 0.08774490654468536,
'token': 2535,
'token_str': 'role'},
{'sequence': "[CLS] hello i'm a new model. [SEP]",
'score': 0.05338378623127937,
'token': 2047,
'token_str': 'new'},
{'sequence': "[CLS] hello i'm a super model. [SEP]",
'score': 0.04667217284440994,
'token': 3565,
'token_str': 'super'},
{'sequence': "[CLS] hello i'm a fine model. [SEP]",
'score': 0.027095865458250046,
'token': 2986,
'token_str': 'fine'}]
高度な使用法
与えられたテキストの特徴量を取得する方法は次のとおりです。
PyTorchでの使用例
from transformers import BertTokenizer, BertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained("bert-base-uncased")
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
TensorFlowでの使用例
from transformers import BertTokenizer, TFBertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = TFBertModel.from_pretrained("bert-base-uncased")
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
📚 ドキュメント
モデルの説明
BERTは、自己教師付き学習方式で大量の英語データコーパスで事前学習されたトランスフォーマーモデルです。これは、人間が何らかの形でラベル付けを行わず、生のテキストのみを使用して事前学習されたことを意味します。具体的には、以下の2つの目的で事前学習されています。
- マスク言語モデリング(MLM):文を入力として、モデルは入力中の単語の15%をランダムにマスクし、そのマスクされた文全体をモデルに通して、マスクされた単語を予測する必要があります。
- 次文予測(NSP):事前学習中に、モデルは2つのマスクされた文を入力として連結します。モデルは、2つの文が連続しているかどうかを予測する必要があります。
想定される用途と制限
このモデルは、マスク言語モデリングや次文予測に使用できますが、主に下流タスクでのファインチューニングを目的としています。ただし、このモデルは、文全体を使用して決定を行うタスクでのファインチューニングを主な対象としています。テキスト生成などのタスクには、GPT2のようなモデルを使用することをお勧めします。
制限とバイアス
このモデルの学習データは比較的中立的と言えるかもしれませんが、バイアスのある予測を行う可能性があります。このバイアスは、このモデルのすべてのファインチューニングバージョンにも影響を与えます。
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='bert-base-uncased')
>>> unmasker("The man worked as a [MASK].")
[{'sequence': '[CLS] the man worked as a carpenter. [SEP]',
'score': 0.09747550636529922,
'token': 10533,
'token_str': 'carpenter'},
{'sequence': '[CLS] the man worked as a waiter. [SEP]',
'score': 0.0523831807076931,
'token': 15610,
'token_str': 'waiter'},
{'sequence': '[CLS] the man worked as a barber. [SEP]',
'score': 0.04962705448269844,
'token': 13362,
'token_str': 'barber'},
{'sequence': '[CLS] the man worked as a mechanic. [SEP]',
'score': 0.03788609802722931,
'token': 15893,
'token_str': 'mechanic'},
{'sequence': '[CLS] the man worked as a salesman. [SEP]',
'score': 0.037680890411138535,
'token': 18968,
'token_str': 'salesman'}]
>>> unmasker("The woman worked as a [MASK].")
[{'sequence': '[CLS] the woman worked as a nurse. [SEP]',
'score': 0.21981462836265564,
'token': 6821,
'token_str': 'nurse'},
{'sequence': '[CLS] the woman worked as a waitress. [SEP]',
'score': 0.1597415804862976,
'token': 13877,
'token_str': 'waitress'},
{'sequence': '[CLS] the woman worked as a maid. [SEP]',
'score': 0.1154729500412941,
'token': 10850,
'token_str': 'maid'},
{'sequence': '[CLS] the woman worked as a prostitute. [SEP]',
'score': 0.037968918681144714,
'token': 19215,
'token_str': 'prostitute'},
{'sequence': '[CLS] the woman worked as a cook. [SEP]',
'score': 0.03042375110089779,
'token': 5660,
'token_str': 'cook'}]
🔧 技術詳細
学習データ
BERTモデルは、11,038冊の未公開の本からなるBookCorpusと英語版ウィキペディア(リスト、表、ヘッダーを除く)で事前学習されました。
学習手順
前処理
テキストは小文字に変換され、WordPieceを使用してトークン化されます。ボキャブラリサイズは30,000です。モデルの入力は、以下の形式になります。
[CLS] Sentence A [SEP] Sentence B [SEP]
各文のマスク手順の詳細は以下のとおりです。
- トークンの15%がマスクされます。
- 80%のケースで、マスクされたトークンは
[MASK]
に置き換えられます。
- 10%のケースで、マスクされたトークンは、置き換えるトークンとは異なるランダムなトークンに置き換えられます。
- 残りの10%のケースでは、マスクされたトークンはそのまま残されます。
事前学習
モデルは、Pod構成の4つのクラウドTPU(合計16個のTPUチップ)で100万ステップ、バッチサイズ256で学習されました。シーケンス長は、90%のステップで128トークンに制限され、残りの10%では512に制限されました。
評価結果
下流タスクでファインチューニングされた場合、このモデルは以下の結果を達成します。
Glueテスト結果:
タスク |
MNLI-(m/mm) |
QQP |
QNLI |
SST-2 |
CoLA |
STS-B |
MRPC |
RTE |
平均 |
|
84.6/83.4 |
71.2 |
90.5 |
93.5 |
52.1 |
85.8 |
88.9 |
66.4 |
79.6 |
BibTeXエントリと引用情報
@article{DBLP:journals/corr/abs-1810-04805,
author = {Jacob Devlin and
Ming{-}Wei Chang and
Kenton Lee and
Kristina Toutanova},
title = {{BERT:} Pre-training of Deep Bidirectional Transformers for Language
Understanding},
journal = {CoRR},
volume = {abs/1810.04805},
year = {2018},
url = {http://arxiv.org/abs/1810.04805},
archivePrefix = {arXiv},
eprint = {1810.04805},
timestamp = {Tue, 30 Oct 2018 20:39:56 +0100},
biburl = {https://dblp.org/rec/journals/corr/abs-1810-04805.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で提供されています。