GPT-2 是一款基于 Transformer 的模型,它通过自监督学习的方式在大规模英文语料库上进行了预训练。这意味着它仅使用原始文本进行预训练,无需人工进行任何形式的标注(这也是它能够利用大量公开可用数据的原因),并通过自动流程从这些文本中生成输入和标签。更准确地说,它被训练用于预测句子中的下一个单词。
具体而言,输入是特定长度的连续文本序列,目标是将同一序列向右移动一个标记(单词或单词片段)。该模型在内部使用掩码机制,以确保对标记 i 的预测仅使用来自标记 1 到 i 的输入,而不会利用未来的标记。
通过这种方式,模型学习到了英语语言的内部表示,这些表示可用于提取对下游任务有用的特征。然而,该模型最擅长的仍是其预训练的目标,即根据提示生成文本。
这是 GPT-2 的最小版本,拥有 1.24 亿个参数。
相关模型: [GPT-Large]、[GPT-Medium] 和 GPT-XL
您可以将原始模型用于文本生成,或对其进行微调以适应下游任务。请查看模型中心,寻找您感兴趣的任务上的微调版本。
您可以直接通过管道(pipeline)使用此模型进行文本生成。由于生成过程依赖一定的随机性,我们设置了一个种子以确保结果的可复现性:
python3 examples/inference.py --model_name_or_path=./这种偏差也会影响该模型的所有微调版本。
OpenAI 团队希望在尽可能大的语料库上训练此模型。为构建该语料库,他们从 Reddit 上获得至少 3 个 karma 的出站链接中抓取了所有网页。请注意,所有维基百科页面均已从该数据集中移除,因此该模型未在维基百科的任何部分上进行训练。生成的数据集(称为 WebText)包含 40GB 文本,但尚未公开发布。您可以在此处找到 WebText 中存在的前 1000 个域名列表。
文本使用字节级版本的字节对编码(BPE)(针对 unicode 字符)进行分词,词汇表大小为 50,257。输入是 1024 个连续标记的序列。
较大的模型在 256 个云 TPU v3 核心上进行训练。训练时长未披露,训练的确切细节也未公布。
该模型在不进行任何微调(零样本)的情况下取得了以下结果:
| 数据集 | LAMBADA | LAMBADA | CBT-CN | CBT-NE | WikiText2 | PTB | enwiki8 | text8 | WikiText103 | 1BW |
|---|---|---|---|---|---|---|---|---|---|---|
| (指标) | (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 |
@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}
}