语言:
- 英语
许可证: apache-2.0
数据集:
- 维基百科
- c4
推理: false
语言感知器IO
感知器IO模型基于BERT提出的掩码语言建模(MLM)任务预训练,训练数据结合了英文维基百科和C4的大型文本语料库。该模型由Jaegle等人在论文感知器IO:结构化输入输出的通用架构中提出,并首次发布于此代码库。
免责声明:发布感知器IO的团队未为此模型编写模型卡片,故本卡片由Hugging Face团队撰写。
模型描述
感知器IO是一种可应用于任何模态(文本、图像、音频、视频等)的Transformer编码器模型。其核心思想是在一组规模适中的潜在向量(如256或512)上使用自注意力机制,仅通过输入与潜在向量进行交叉注意力计算。这使得自注意力机制的时间和内存需求不依赖于输入规模。
解码时,作者采用所谓的解码查询,灵活地将潜在向量的最终隐藏状态解码为任意尺寸和语义的输出。对于掩码语言建模,输出是一个包含语言建模头预测分数的张量,形状为(批次大小,序列长度,词汇量大小)。
感知器IO架构示意图。
由于自注意力机制的时间与内存需求与输入规模无关,感知器IO作者直接在原始UTF-8字节上训练模型,而非像BERT、RoBERTa和GPT-2那样处理子词。这带来诸多优势:无需在训练前训练分词器,无需维护(固定)词汇表文件,且如Bostrom等,2020所示,这不会损害模型性能。
通过预训练,模型学习到语言的内在表示,可用于提取下游任务所需的特征:例如,若有标注句子数据集,可利用感知器模型生成的特征训练标准分类器。
预期用途与限制
原始模型可用于掩码语言建模,但更适用于在有标注数据集上微调。请查阅模型中心寻找感兴趣任务的微调版本。
使用方法
以下为PyTorch调用示例:
from transformers import PerceiverTokenizer, PerceiverForMaskedLM
tokenizer = PerceiverTokenizer.from_pretrained("deepmind/language-perceiver")
model = PerceiverForMaskedLM.from_pretrained("deepmind/language-perceiver")
text = "这是一个不完整的句子,缺少部分词语。"
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))
>>> 应输出" 缺少部分。"
训练数据
本模型预训练数据混合了英文维基百科和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}
}