info: T. B. Brown et al., “Language Models are Few-Shot Learners,” 2020, doi: 10.48550/ARXIV.2005.14165.
A. Radford, K. Narasimhan, T. Salimans, I. Sutskever, and others, “Improving language understanding by generative pre-training,” 2018.
A. Radford et al., “Language models are unsupervised multitask learners,” OpenAI blog, vol. 1, no. 8, p. 9, 2019.
1.1 背景
OpenAI在18、19与20年接连发布了GPT三部曲,其模型分别被称为GPT-1 、GPT-2 和GPT-3。其中GPT-1借鉴CV领域的预训练思路,基于Transformer模型的解码器,实现了利用无标签文本预训练再有监督微调以适应下游子任务的语言模型,并在9个子任务上取得最佳得分。也许是受其启发,Google的团队随即发布了BERT与之针锋相对,BERT使用了Transformer的编码器,并增大了预训练数据集,效果也逼GPT-1好。OpenAI在次年继续改进,然而模型结构并无太大变化,且继续增大数据集并没有让精度起飞,效果并不显著。于是GPT-2的文章找了个偏僻的角度看问题,从多任务学习和零样本学习发力,这个方向的其它方案自然比不过砸海量预训练数据的GPT-2了。而从GPT-2开始不再进行有监督微调而强调零样本。而20年的GPT-3,也就是本篇论文,其模型方面与GPT-2一致,通篇都在讲结果、讨论,都是各种各样的分析,而其关键的训练部分比较模糊。
最近几年语言模型在NLP任务中应用广泛,通常需要在特定任务的数据集上进行微调,而参数巨大的模型在微调时存在较大代价。本文提出使用大规模预训练语言模型,在推理时进行少样本学习,以适应不同任务,减少对特定任务数据集的依赖。
1.2 方法
- 训练了8个不同大小的Transformer(解码器部分)语言模型,最大的包含1750亿参数(称为GPT-3)。
- 在无监督大规模文本数据集上进行预训练。
- 在推理时,使用0样本(只描述任务)、1样本或少量样本(10-100个)作为任务实例,进行零样本、一样本和少样本学习。
- 分布式训练、模型分割、数据分割
- 训练数据集从各个数据集(含Reddit数据集)进行采样,对较为低质量的CommonCrawl进行权重控制,并用LSH算法做文章去重
- GPT-3在应用到子任务时不做任何梯度更新或是微调,主打上下文学习能力
1.3 实验
- 在超过20个NLP数据集上测试GPT-3,包括问答、阅读理解、翻译等。
- 制定了测试GPT-3快速适应能力的新任务,如词汇重排、算术运算等。
- 测试了不同模型在零样本、一样本和少样本学习上的表现。
1.4 结论
- GPT-3在零样本和一样本设置下表现强劲,在少样本设置下的表现在某些任务上接近或超过微调SOTA。
- 模型规模越大,少样本学习的效果越好。
- GPT-3展示出在推理时学习新任务的能力,但某些任务仍然表现欠佳。
- 这表明大规模预训练语言模型是发展通用语言系统的重要组成部分。
- 局限性:长文本生成能力弱(比如写小说);结构和算法上的局限性(往前看不能反着看;每次均匀的预测下一个词,没有重点;只是文本,没有视频或是物理交互);样本有效性不够;是否从头开始学习了?(是否真正具有泛化性,而非大力出奇迹纯拼训练数据量);不可解释性
- 影响:社会影响;偏见;
1.5 个人思考
- 从Transformer一直到GPT-3,模型的结构并不复杂,但其使用的训练数据量越来越大,特别是GPT大模型,词数在亿级,纯纯是力大砖飞。而且GPT-3使用了微软DGX-1集群进行训练,有知乎回答 指出其使用费用在百万人民币以上,这并非普通人所能承受。因此自己做预训练基本上不太可能了,可能需要转而考虑利用现成的体量较小的预训练模型进行微调。
- 如果需要做微调,那么如何获取打了标签的网络设备配置文件。配置文件本身,由于配置文件备份或是版本管理软件,可以从ISP或是企业获取,但数据量可能不够用。对于打标签,这可能需要建立一套配置评估体系,实现对配置文件的自动评估,或是结合网络管理人员的领域知识进行评估。总之,这是一个要解决的问题。