モデル概要
モデル特徴
モデル能力
使用事例
🚀 ALBERT XXLarge v1
このモデルは、マスク言語モデリング(MLM)の目的で英語コーパス上で事前学習されたものです。この論文で紹介され、このリポジトリで最初に公開されました。このモデルは、他のALBERTモデルと同様に大文字と小文字を区別しません。
なお、ALBERTをリリースしたチームはこのモデルのモデルカードを作成していないため、このモデルカードはHugging Faceチームによって作成されています。
🚀 クイックスタート
このモデルは、マスク言語モデリングや次文予測に使用できますが、主に下流タスクでのファインチューニングを目的としています。興味のあるタスクでファインチューニングされたバージョンは、モデルハブを参照してください。
✨ 主な機能
- 双方向表現学習:マスク言語モデリング(MLM)により、文章の双方向表現を学習します。
- 文順予測:文順予測(SOP)により、文章の順序を学習します。
- レイヤー共有:Transformerのレイヤーを共有することで、メモリ使用量を削減します。
📚 ドキュメント
モデルの説明
ALBERTは、自己教師付き学習により大量の英語データセットで事前学習されたトランスフォーマーモデルです。これは、人間によるラベル付けが一切ない生テキストのみを使用して事前学習されており、それらのテキストから自動的に入力とラベルを生成するプロセスを用いています。具体的には、以下の2つの目的で事前学習されています。
- マスク言語モデリング(MLM):文章を入力として、モデルは入力の単語の15%をランダムにマスクし、そのマスクされた文章全体をモデルに通して、マスクされた単語を予測します。これは、通常は単語を順番に見る従来の再帰型ニューラルネットワーク(RNN)や、内部的に未来のトークンをマスクするGPTのような自己回帰型モデルとは異なり、文章の双方向表現を学習することができます。
- 文順予測(SOP):ALBERTは、2つの連続したテキストセグメントの順序を予測することに基づく事前学習損失を使用しています。
このように、モデルは英語の内部表現を学習し、それを下流タスクに有用な特徴量として抽出することができます。例えば、ラベル付き文章のデータセットがある場合、ALBERTモデルが生成する特徴量を入力として標準的な分類器を学習させることができます。
ALBERTは、Transformerのレイヤーを共有するという特徴があります。つまり、すべてのレイヤーは同じ重みを持ちます。繰り返しレイヤーを使用することで、メモリ使用量を削減できますが、計算コストは同じ数の隠れ層を持つBERTのようなアーキテクチャと同程度になります。
これはxxlargeモデルの最初のバージョンです。バージョン2は、ドロップアウト率の違い、追加の学習データ、およびより長い学習時間により、バージョン1とは異なります。ほぼすべての下流タスクでより良い結果を得ています。
このモデルは以下の設定を持っています。
- 12の繰り返しレイヤー
- 128の埋め込み次元
- 4096の隠れ次元
- 64のアテンションヘッド
- 223Mのパラメータ
想定される用途と制限
このモデルは、マスク言語モデリングや次文予測に直接使用することもできますが、主に下流タスクでのファインチューニングを目的としています。このモデルは、文章全体(マスクされている場合もある)を使用して決定を行うタスク、例えばシーケンス分類、トークン分類、質問応答などでのファインチューニングを主な目的としています。テキスト生成などのタスクには、GPT2のようなモデルを使用することをお勧めします。
使い方
このモデルは、マスク言語モデリング用のパイプラインで直接使用することができます。
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='albert-xxlarge-v1')
>>> unmasker("Hello I'm a [MASK] model.")
[
{
"sequence":"[CLS] hello i'm a modeling model.[SEP]",
"score":0.05816134437918663,
"token":12807,
"token_str":"â–modeling"
},
{
"sequence":"[CLS] hello i'm a modelling model.[SEP]",
"score":0.03748830780386925,
"token":23089,
"token_str":"â–modelling"
},
{
"sequence":"[CLS] hello i'm a model model.[SEP]",
"score":0.033725276589393616,
"token":1061,
"token_str":"â–model"
},
{
"sequence":"[CLS] hello i'm a runway model.[SEP]",
"score":0.017313428223133087,
"token":8014,
"token_str":"â–runway"
},
{
"sequence":"[CLS] hello i'm a lingerie model.[SEP]",
"score":0.014405295252799988,
"token":29104,
"token_str":"â–lingerie"
}
]
以下は、このモデルを使用して与えられたテキストの特徴量を取得する方法です。
PyTorchでの使用例
from transformers import AlbertTokenizer, AlbertModel
tokenizer = AlbertTokenizer.from_pretrained('albert-xxlarge-v1')
model = AlbertModel.from_pretrained("albert-xxlarge-v1")
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
TensorFlowでの使用例
from transformers import AlbertTokenizer, TFAlbertModel
tokenizer = AlbertTokenizer.from_pretrained('albert-xxlarge-v1')
model = TFAlbertModel.from_pretrained("albert-xxlarge-v1")
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
制限とバイアス
このモデルに使用される学習データは比較的中立と言えるものの、バイアスのある予測を行う可能性があります。
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='albert-xxlarge-v1')
>>> unmasker("The man worked as a [MASK].")
[
{
"sequence":"[CLS] the man worked as a chauffeur.[SEP]",
"score":0.029577180743217468,
"token":28744,
"token_str":"â–chauffeur"
},
{
"sequence":"[CLS] the man worked as a janitor.[SEP]",
"score":0.028865724802017212,
"token":29477,
"token_str":"â–janitor"
},
{
"sequence":"[CLS] the man worked as a shoemaker.[SEP]",
"score":0.02581118606030941,
"token":29024,
"token_str":"â–shoemaker"
},
{
"sequence":"[CLS] the man worked as a blacksmith.[SEP]",
"score":0.01849772222340107,
"token":21238,
"token_str":"â–blacksmith"
},
{
"sequence":"[CLS] the man worked as a lawyer.[SEP]",
"score":0.01820771023631096,
"token":3672,
"token_str":"â–lawyer"
}
]
>>> unmasker("The woman worked as a [MASK].")
[
{
"sequence":"[CLS] the woman worked as a receptionist.[SEP]",
"score":0.04604868218302727,
"token":25331,
"token_str":"â–receptionist"
},
{
"sequence":"[CLS] the woman worked as a janitor.[SEP]",
"score":0.028220869600772858,
"token":29477,
"token_str":"â–janitor"
},
{
"sequence":"[CLS] the woman worked as a paramedic.[SEP]",
"score":0.0261906236410141,
"token":23386,
"token_str":"â–paramedic"
},
{
"sequence":"[CLS] the woman worked as a chauffeur.[SEP]",
"score":0.024797942489385605,
"token":28744,
"token_str":"â–chauffeur"
},
{
"sequence":"[CLS] the woman worked as a waitress.[SEP]",
"score":0.024124596267938614,
"token":13678,
"token_str":"â–waitress"
}
]
このバイアスは、このモデルのすべてのファインチューニングバージョンにも影響を与えます。
学習データ
ALBERTモデルは、BookCorpus(11,038冊の未公開の本から構成されるデータセット)と英語版ウィキペディア(リスト、表、ヘッダーを除く)で事前学習されています。
学習手順
前処理
テキストは小文字に変換され、SentencePieceを使用して語彙サイズ30,000でトークン化されます。モデルの入力は以下の形式になります。
[CLS] Sentence A [SEP] Sentence B [SEP]
学習
ALBERTの学習手順はBERTの設定に従っています。
各文章のマスク手順の詳細は以下の通りです。
- トークンの15%がマスクされます。
- 80%の場合、マスクされたトークンは
[MASK]
に置き換えられます。 - 10%の場合、マスクされたトークンは置き換えるトークンとは異なるランダムなトークンに置き換えられます。
- 残りの10%の場合、マスクされたトークンはそのまま残されます。
評価結果
下流タスクでファインチューニングされた場合、ALBERTモデルは以下の結果を達成します。
平均 | SQuAD1.1 | SQuAD2.0 | MNLI | SST-2 | RACE | |
---|---|---|---|---|---|---|
V2 | ||||||
ALBERT-base | 82.3 | 90.2/83.2 | 82.1/79.3 | 84.6 | 92.9 | 66.8 |
ALBERT-large | 85.7 | 91.8/85.2 | 84.9/81.8 | 86.5 | 94.9 | 75.2 |
ALBERT-xlarge | 87.9 | 92.9/86.4 | 87.9/84.1 | 87.9 | 95.4 | 80.7 |
ALBERT-xxlarge | 90.9 | 94.6/89.1 | 89.8/86.9 | 90.6 | 96.8 | 86.8 |
V1 | ||||||
ALBERT-base | 80.1 | 89.3/82.3 | 80.0/77.1 | 81.6 | 90.3 | 64.0 |
ALBERT-large | 82.4 | 90.6/83.9 | 82.3/79.4 | 83.5 | 91.7 | 68.5 |
ALBERT-xlarge | 85.5 | 92.5/86.1 | 86.1/83.1 | 86.4 | 92.4 | 74.8 |
ALBERT-xxlarge | 91.0 | 94.8/89.3 | 90.2/87.4 | 90.8 | 96.9 | 86.5 |
BibTeXエントリと引用情報
@article{DBLP:journals/corr/abs-1909-11942,
author = {Zhenzhong Lan and
Mingda Chen and
Sebastian Goodman and
Kevin Gimpel and
Piyush Sharma and
Radu Soricut},
title = {{ALBERT:} {A} Lite {BERT} for Self-supervised Learning of Language
Representations},
journal = {CoRR},
volume = {abs/1909.11942},
year = {2019},
url = {http://arxiv.org/abs/1909.11942},
archivePrefix = {arXiv},
eprint = {1909.11942},
timestamp = {Fri, 27 Sep 2019 13:04:21 +0200},
biburl = {https://dblp.org/rec/journals/corr/abs-1909-11942.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
📄 ライセンス
このモデルはApache 2.0ライセンスの下で提供されています。



