英文

GPT-2

在这里测试整个生成能力: https://transformer.huggingface.co/doc/gpt2-large

对英语语言进行预训练的模型,使用因果语言建模(CLM)目标。它在 this paper 提出,并于 this page 首次发布。

免责声明:发布 GPT-2 的团队还为他们的模型撰写了一个 model card 。本模型卡片的内容是由 Hugging Face 团队编写的,以补充他们提供的信息并给出特定的偏见示例。

模型描述

GPT-2 是一个基于transformers的模型,它以自监督的方式在大规模英语数据上进行预训练。 这意味着它仅在原始文本上进行了预训练,而没有进行任何人类的标注(这就是为什么它可以使用许多公开可用的数据),并采用自动过程从这些文本中生成输入和标签。 更确切地说,它被训练来猜测句子中的下一个单词。

更准确地说,输入是一定长度的连续文本序列,而目标是相同的序列,向右移动一个令牌(单词或词片段)。模型内部使用掩码机制,以确保令牌 i 的预测仅使用来自 1 到 i 的输入,而不使用未来的令牌。

这样,模型学习了英语的内部表示,可以用来提取对下游任务有用的特征。然而,该模型最擅长的是按照提示生成文本。

预期用途和限制

您可以使用原始模型进行文本生成,或者对其进行微调以用于下游任务。查看 model hub ,寻找您感兴趣的任务上的微调版本。

如何使用

您可以使用该模型直接进行文本生成的管道。由于生成依赖于一些随机性,我们设置了一个用于可复现性的种子:

>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='gpt2')
>>> set_seed(42)
>>> generator("Hello, I'm a language model,", max_length=30, num_return_sequences=5)

[{'generated_text': "Hello, I'm a language model, a language for thinking, a language for expressing thoughts."},
 {'generated_text': "Hello, I'm a language model, a compiler, a compiler library, I just want to know how I build this kind of stuff. I don"},
 {'generated_text': "Hello, I'm a language model, and also have more than a few of your own, but I understand that they're going to need some help"},
 {'generated_text': "Hello, I'm a language model, a system model. I want to know my language so that it might be more interesting, more user-friendly"},
 {'generated_text': 'Hello, I\\'m a language model, not a language model"\
\
The concept of "no-tricks" comes in handy later with new'}]

以下是使用PyTorch获取给定文本的特征的方法:

from transformers import GPT2Tokenizer, GPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2Model.from_pretrained('gpt2')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)

以下是使用TensorFlow获取给定文本的特征的方法:

from transformers import GPT2Tokenizer, TFGPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = TFGPT2Model.from_pretrained('gpt2')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)

限制和偏差

用于该模型的训练数据尚未公开发布为可浏览的数据集。我们知道,它包含大量来自互联网的未经筛选的内容,远离中立。正如 OpenAI 团队在他们的 model card 中指出的那样:

由于像 GPT-2 这样的大规模语言模型不能区分事实和虚构,因此我们不支持需要生成的文本为真实内容的用例。

此外,像 GPT-2 这样的语言模型会反映出其训练的系统固有的偏见,因此我们不建议在与人类进行交互的系统中部署它们,除非部署者首先对相关的偏见进行研究。我们在774M和1.5B之间的性别、种族和宗教偏见调查中没有发现统计学上的显著差异,这意味着所有版本的GPT-2在涉及对人类属性的偏见敏感的用例中都应同样谨慎地对待。

下面是一个模型产生偏见预测的示例:

>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='gpt2')
>>> set_seed(42)
>>> generator("The White man worked as a", max_length=10, num_return_sequences=5)

[{'generated_text': 'The White man worked as a mannequin for'},
 {'generated_text': 'The White man worked as a maniser of the'},
 {'generated_text': 'The White man worked as a bus conductor by day'},
 {'generated_text': 'The White man worked as a plumber at the'},
 {'generated_text': 'The White man worked as a journalist. He had'}]

>>> set_seed(42)
>>> generator("The Black man worked as a", max_length=10, num_return_sequences=5)

[{'generated_text': 'The Black man worked as a man at a restaurant'},
 {'generated_text': 'The Black man worked as a car salesman in a'},
 {'generated_text': 'The Black man worked as a police sergeant at the'},
 {'generated_text': 'The Black man worked as a man-eating monster'},
 {'generated_text': 'The Black man worked as a slave, and was'}]

这种偏见也会影响到该模型的所有微调版本。

训练数据

OpenAI 团队希望将此模型训练到尽可能大的语料库。为此,他们抓取了Reddit上得到至少3个赞的链接的所有网页。请注意,所有 Wikipedia 页面都从此数据集中删除,因此模型没有在 Wikipedia 的任何部分上进行训练。生成的数据集(称为WebText)权重为40GB,但尚未公开发布。您可以在 WebText here 中找到前1000个域名的列表。

训练过程

预处理

使用字节对编码(BPE)的字节级版本对文本进行标记化(用于Unicode字符),词汇表大小为50,257。输入是连续1024令牌的序列。

更大的模型在256个云TPU v3核心上进行培训。尚未披露培训时间,也未披露培训的确切细节。

评估结果

该模型在没有任何微调的情况下(零次训练)实现了以下结果:

Dataset LAMBADA LAMBADA CBT-CN CBT-NE WikiText2 PTB enwiki8 text8 WikiText103 1BW
(metric) (PPL) (ACC) (ACC) (ACC) (PPL) (PPL) (BPB) (BPC) (PPL) (PPL)
35.13 45.99 87.65 83.4 29.41 65.85 1.16 1,17 37.50 75.20

BibTeX条目和引用信息

@article{radford2019language,
  title={Language Models are Unsupervised Multitask Learners},
  author={Radford, Alec and Wu, Jeff and Child, Rewon and Luan, David and Amodei, Dario and Sutskever, Ilya},
  year={2019}
}
\t