🚀 言語処理に使用するPerceiver IOモデル
Perceiver IOは、BERTで提案されたマスク言語モデリング(MLM)タスクを基に訓練された事前学習モデルです。訓練に使用される大規模なテキストコーパスは、英文ウィキペディアとC4を組み合わせたものです。このモデルは、Jaegleらによって論文Perceiver IO: A General Architecture for Structured Inputs & Outputsで提案され、このリポジトリで最初に公開されました。
声明:Perceiver IOを公開したチームはこのモデルのモデルカードを作成していません。このモデルカードはHugging Faceチームによって作成されています。
✨ 主な機能
Perceiver IOは、Transformerエンコーダモデルであり、任意のモダリティ(テキスト、画像、音声、ビデオなど)に適用できます。その核心的な考え方は、比較的少数の潜在ベクトル(例えば256または512個)に自己注意機構を適用し、入力と潜在ベクトルのみを用いて交差注意を計算することです。これにより、自己注意機構の時間とメモリの要件が入力サイズに依存しなくなります。
デコード時には、著者らは所谓のデコーダクエリを採用しています。これは、潜在ベクトルの最終的な隠れ状態を柔軟にデコードし、任意のサイズと意味を持つ出力を生成することができます。マスク言語モデリングの場合、出力は言語モデリングヘッドの予測スコアを含むテンソルで、形状は(batch_size, seq_length, vocab_size)となります。
自己注意機構の時間とメモリの要件が入力サイズに依存しないため、Perceiver IOの著者らは、BERT、RoBERTa、GPT - 2などのモデルのようにサブワードではなく、元のUTF - 8バイトで直接モデルを訓練しています。これには多くの利点があります。訓練前にトークナイザーを訓練する必要がなく、(固定の)語彙ファイルを維持する必要もなく、Bostromら、2020によると、モデルの性能も損なわれません。
事前学習により、モデルは言語の内部表現を学習し、下流タスクに有用な特徴を抽出するために使用できます。例えば、ラベル付きの文データセットがある場合、Perceiverモデルが生成する特徴を入力として標準的な分類器を訓練することができます。
🚀 クイックスタート
想定用途と制限
元のモデルをマスク言語モデリングに使用することができますが、このモデルはラベル付きのデータセットで微調整することを想定しています。モデルセンターを参照し、関心のあるタスクに対する微調整バージョンを探してください。
使い方
以下は、PyTorchでこのモデルを使用する例です。
from transformers import PerceiverTokenizer, PerceiverForMaskedLM
tokenizer = PerceiverTokenizer.from_pretrained("deepmind/language-perceiver")
model = PerceiverForMaskedLM.from_pretrained("deepmind/language-perceiver")
text = "This is an incomplete sentence where some words are missing."
encoding = tokenizer(text, padding="max_length", return_tensors="pt")
encoding.input_ids[0, 52:61] = tokenizer.mask_token_id
inputs, input_mask = encoding.input_ids.to(device), encoding.attention_mask.to(device)
outputs = model(inputs=inputs, attention_mask=input_mask)
logits = outputs.logits
masked_tokens_predictions = logits[0, 51:61].argmax(dim=-1)
print(tokenizer.decode(masked_tokens_predictions))
>>> should print " missing."
💻 使用例
基本的な使用法
from transformers import PerceiverTokenizer, PerceiverForMaskedLM
tokenizer = PerceiverTokenizer.from_pretrained("deepmind/language-perceiver")
model = PerceiverForMaskedLM.from_pretrained("deepmind/language-perceiver")
text = "This is an incomplete sentence where some words are missing."
encoding = tokenizer(text, padding="max_length", return_tensors="pt")
encoding.input_ids[0, 52:61] = tokenizer.mask_token_id
inputs, input_mask = encoding.input_ids.to(device), encoding.attention_mask.to(device)
outputs = model(inputs=inputs, attention_mask=input_mask)
logits = outputs.logits
masked_tokens_predictions = logits[0, 51:61].argmax(dim=-1)
print(tokenizer.decode(masked_tokens_predictions))
>>> should print " missing."
📚 ドキュメント
訓練データ
このモデルは、英文ウィキペディアとC4の組み合わせデータセットで事前学習されています。訓練トークンの70%はC4データセットからサンプリングされ、残りの30%はウィキペディアからサンプリングされます。著者らは、分割する前に10個のドキュメントを連結して、パディングトークンの無駄な計算を減らしています。
訓練プロセス
前処理
テキストの前処理は簡単で、テキストをUTF - 8バイトにエンコードし、同じ長さ(2048)にパディングするだけです。
事前学習
ハイパーパラメータの詳細は、論文の表9に記載されています。
評価結果
このモデルはGLUEで平均81.8点を達成することができます。詳細については、原著論文の表3を参照してください。
BibTeX引用と引用情報
@article{DBLP:journals/corr/abs-2107-14795,
author = {Andrew Jaegle and
Sebastian Borgeaud and
Jean{-}Baptiste Alayrac and
Carl Doersch and
Catalin Ionescu and
David Ding and
Skanda Koppula and
Daniel Zoran and
Andrew Brock and
Evan Shelhamer and
Olivier J. H{\'{e}}naff and
Matthew M. Botvinick and
Andrew Zisserman and
Oriol Vinyals and
Jo{\~{a}}o Carreira},
title = {Perceiver {IO:} {A} General Architecture for Structured Inputs {\&}
Outputs},
journal = {CoRR},
volume = {abs/2107.14795},
year = {2021},
url = {https://arxiv.org/abs/2107.14795},
eprinttype = {arXiv},
eprint = {2107.14795},
timestamp = {Tue, 03 Aug 2021 14:53:34 +0200},
biburl = {https://dblp.org/rec/journals/corr/abs-2107-14795.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
📄 ライセンス
このモデルはApache - 2.0ライセンスの下で提供されています。
属性 |
详情 |
モデルタイプ |
Transformerエンコーダモデル |
訓練データ |
英文ウィキペディアとC4データセットを組み合わせたもので、訓練トークンの70%はC4データセットから、30%はウィキペディアからサンプリングされます |