英文

CANINE-s(采用子词损失的CANINE预训练模型)

通过掩码语言建模(MLM)目标在104种语言上进行的预训练CANINE模型。它在论文 CANINE: Pre-training an Efficient Tokenization-Free Encoder for Language Representation 中被介绍,并于 this repository 首次发布。

CANINE的特殊之处在于它不需要像BERT和RoBERTa等其他模型一样使用显式分词器(如WordPiece或SentencePiece)。相反,它直接在字符级别进行操作:每个字符被转换为其Unicode代码点。

这意味着输入处理是微不足道的,通常可以像这样完成:

input_ids = [ord(char) for char in text]

ord()函数是Python的一部分,将每个字符转换为其Unicode代码点。

免责声明:发布CANINE的团队没有为该模型编写模型卡片,因此这个模型卡片是由Hugging Face团队编写的。

模型描述

CANINE是一个基于transformers模型的预训练模型,它以自监督的方式在大量多语言数据上进行了预训练,类似于BERT。这意味着它仅使用原始文本进行预训练,没有以任何方式人工标记它们(这就是为什么它可以使用大量公开可用的数据),并且使用自动化过程从这些文本中生成输入和标签。更准确地说,它使用了两个目标进行预训练:

  • 屏蔽语言建模(MLM):随机屏蔽部分输入,模型需要预测被屏蔽的部分。此模型(CANINE-s)采用子词损失进行训练,意味着模型需要预测子词标记的身份,同时以字符作为输入。通过阅读字符但预测子词标记,CANINE将其他模型(如BERT)中的硬令牌边界约束转化为软的归纳偏差。
  • 下一个句子预测(NSP):模型在预训练期间将两个句子串联作为输入。它们有时对应于原始文本中相邻的句子,有时则不是。然后,模型必须预测这两个句子是否相随。

这样,模型学习到了多种语言的内部表示,然后可以用于提取对下游任务有用的特征:例如,如果您有一组带标签的句子数据,您可以使用由CANINE模型生成的特征作为输入来训练一个标准的分类器。

目标应用和限制

您可以将原始模型用于屏蔽语言建模或下一个句子预测,但它主要用于在下游任务上进行微调。请参阅 model hub 以查找您感兴趣的任务的微调版本。

请注意,该模型主要适用于在使用整个句子(可能被屏蔽)做出决策的任务上进行微调,如序列分类、标记分类或问答。对于文本生成等任务,您应该查看像GPT2这样的模型。

如何使用

以下是如何使用该模型的方法:

from transformers import CanineTokenizer, CanineModel

model = CanineModel.from_pretrained('google/canine-s')
tokenizer = CanineTokenizer.from_pretrained('google/canine-s')

inputs = ["Life is like a box of chocolates.", "You never know what you gonna get."]
encoding = tokenizer(inputs, padding="longest", truncation=True, return_tensors="pt")

outputs = model(**encoding) # forward pass
pooled_output = outputs.pooler_output
sequence_output = outputs.last_hidden_state

训练数据

CANINE模型是在包含104种语言的维基百科多语言数据 mBERT 上进行的预训练。

BibTeX条目和引用信息

@article{DBLP:journals/corr/abs-2103-06874,
  author    = {Jonathan H. Clark and
               Dan Garrette and
               Iulia Turc and
               John Wieting},
  title     = {{CANINE:} Pre-training an Efficient Tokenization-Free Encoder for
               Language Representation},
  journal   = {CoRR},
  volume    = {abs/2103.06874},
  year      = {2021},
  url       = {https://arxiv.org/abs/2103.06874},
  archivePrefix = {arXiv},
  eprint    = {2103.06874},
  timestamp = {Tue, 16 Mar 2021 11:26:59 +0100},
  biburl    = {https://dblp.org/rec/journals/corr/abs-2103-06874.bib},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}