项目介绍:GPT-2
GPT-2 是由 OpenAI 团队开发的一种先进的语言模型,用于自监督学习。这意味着它在大规模的英语语料库上进行预训练,未经过人类的任何标注。模型的目标是根据句子猜测下一个词,从而生成连续、流畅的文本。
模型描述
GPT-2 使用一种称为自回归的语言建模方法。输入是一定长度的连续文本序列,目标是将整个序列向右偏移一个词,并利用模型内部的遮罩机制,确保预测第 i 个词时只使用从第 1 个词到第 i 个词的输入数据,而不查看未来的词。GPT-2 在这种方式下,学习到英语语言的内部表示,可用于各种下游任务,尤其擅长于从提示词生成文本。
这个模型是 GPT-2 的最小版本,具有 1.24 亿个参数。还有其他相关版本如 GPT-Large、GPT-Medium 和 GPT-XL。
预期用途及局限性
可以直接使用 GPT-2 进行文本生成,或者针对特定任务进行微调。在 模型中心 上可以找到不同任务的微调版本。
使用方法
可以使用文本生成的流水线来直接使用这款模型。由于生成过程依赖于一些随机性,为了能够重复实验结果,可以设置随机种子。例如:
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)
这将生成几种可能的文本扩展。
您也可以在 PyTorch 和 TensorFlow 中使用该模型来提取给定文本的特征。例如在 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)
局限性及偏见
GPT-2 所用的训练数据未公开作为一个数据集供浏览。已知其训练数据包含大量的互联网上的未过滤内容,难免存在偏见。OpenAI 团队在其模型卡中指出:
- 大型语言模型无法区分事实与虚构。
- 语言模型会反映其用于训练的数据的固有偏见,因此在需要与人类交互的系统中使用时,务必谨慎。
训练数据
为了创建尽可能大的语料库,OpenAI 团队收集了 Reddit 上所有外部链接,筛选出获得至少 3 点声誉的网页,并构建成 WebText 数据集,约 40 GB。然而,该数据集目前尚未公开。
训练过程
文本经过一个称为字节对编码(BPE)的特殊版本进行标记处理,词汇表的大小为 50,257。输入为一系列由 1024 个连续标记组成的序列,模型在 256 个云 TPU 节点上进行训练,具体的训练时长和细节未公开。
评价结果
GPT-2 在 LAMBADA、CBT-CN 等数据集上取得了不错的成绩,尤其在零样本学习(zero-shot learning)设定下的表现引人关注。
GPT-2 的开发奠定了现代语言模型的发展基石,为自然语言处理领域提供了强大的工具和新的思路。通过阅读和学习 GPT-2 的相关资料,可以更加深入地了解语言生成模型的潜力和挑战。