数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
六、GPT3 [2020]
近年来,在
NLP
系统中出现了预训练语言representation
的趋势,并以越来越灵活的、与任务无关task-agnostic
的方式应用于下游任务。- 首先出现的是通过词向量学到的
single-layer representation
,然后馈入到特定的任务架构。 - 然后出现的是具有多层
representation
和上下文状态的RNN
,从而形成更强大的representation
。 - 最近出现的是预训练的
RNN
或transformer
语言模型,它们被直接微调从而消除了对特定任务task-specific
架构的需求。
最后一种范式在许多具有挑战性的
NLP
任务上取得了实质性的进展,并在新的架构和算法的基础上继续推进。然而,这种方法的一个主要局限性是,虽然它的架构是任务无关的,但是仍然需要特定任务的微调fine-tunning
:要在目标任务上获得强大的性能,通常需要在特定于该任务的、具有数千到数十万个样本的数据集上进行微调。人们希望消除这个局限性,原因如下:- 首先,从实用性角度来看,每一项新任务都需要一个大型的标记数据集,这限制了语言模型的适用性。对很多任务而言,收集一个大型的监督训练数据集就很困难,特别是需要为每个新的任务重复这个收集过程。
- 其次,过拟合从根本上说是随着模型的表达能力以及训练分布的窄化
narrowness
的增加而增加。这可能会给预训练加微调的模式带来问题,在这种模式下,模型被设计得很大以便在预训练期间吸取信息,但是随后在很窄的任务分布中进行微调。有证据表明,这种范式下实现的泛化能力可能很差,因为模型过度具体于specific to
训练分布,没有很好地泛化到训练分布之外(这里的训练分布指的是微调数据集)。因此,微调模型在特定benchmark
上的性能,即使名义上是人类水平,也可能夸大了微调任务上的实际性能。 - 第三,人类不需要大量的监督数据集来学习大多数语言任务,简短的语言指令、或极少的示范
demonstration
就足以使人类执行一项新任务。这种适应性除了解决上述NLP
技术的局限性之外,还允许人类在许多任务和技能之间无缝切换,如在冗长的对话任务中进行加法任务。为了发挥更广泛的作用,我们希望有一天我们的NLP
系统也能有这样的流畅性和通用性。
解决这些问题的一个潜在途径是
meta-learning
:在语言模型的背景下,这意味着模型在训练时发展出一组广泛的技能以及模式识别能力,然后在推理时使用这些能力来快速适应或识别目标任务(如下图所示)。最近的工作GPT-2
试图通过我们所说的in-context learning
来做到这一点,它使用预训练的语言模型的文本输入作为一种任务规范task specification
形式:GPT-2
以自然语言指令和/或任务的几个示范demonstration
为条件,然后预期模型通过预测接下来的内容来完成任务。虽然GPT-2
已经显示出一些初步的希望,但是它所取得的结果仍然远远不如微调。meta-learning
显然需要大量的改进,以便作为解决语言任务的实用方法。【作者注:在下图中,我们使用术语
in-context learning
来描述这个过程的内循环,其中内循环发生在每个序列的前向传播中,下面每个子图代表一个序列(注意,并不是一行一个序列,而是多行代表一个序列)。该图中的序列并不是代表模型在预训练期间所看到的数据,只是表明有时在一个序列中会有重复的子任务。】语言建模的另一个最新趋势可能提供了一条前进的道路。近年来,
transformer
语言模型的容量大幅增加,从1
亿个参数的GPT-1
,到3
亿个参数的BERT
,到15
亿个参数的GPT-2
,到80
亿个参数的Megatron
,到110
亿个参数的T5
,最后到170
亿个参数的Turing
。每一次规模增加都带来了文本合成text synthesis
和/或下游NLP
任务的改进。而且有证据表明,log loss
(它与许多下游任务关联性较好) 随着模型规模的增加而有平滑的改进趋势(《Scaling laws for neural language models》
)。由于in-context learning
涉及到在模型的参数中吸取许多技能和任务,因此,in-context learning
能力可能会随着模型规模的扩大而表现出相似的强大收益,这是合理的。一言以蔽之,这个方向就是:模型规模要超级大。
在论文
《Language Models are Few-Shot Learners》
,我们通过训练一个1750
亿参数的自回归语言模型autoregressive language model
(我们称之为GPT-3
),并测量其in-context learning
能力来测试这个假设。具体而言,我们在二十多个NLP
数据集以及几个新颖的任务上评估GPT-3
。对于每个任务,我们三种setting
下评估GPT-3
:few-shot learning
(或in-context learning
):我们允许尽可能多的示范,从而适应模型的上下文窗口context window
(通常是10
到100
)。one-shot learning
:我们只允许一个示范。zero-shot learning
:没有任何示范,只给模型提供一条自然语言的指令。
理论上讲,
GPT-3
也可以在传统的微调setting
中进行评估,但是我们将此留给未来的工作。下图说明了我们的研究条件,并展示了对一个简单任务的
few-shot learning
,该任务要求模型从一个单词中移除不相干的symbol
。- 模型的性能随着自然语言任务的
description
的增加而增加(即有prompt
的效果优于没有prompt
)。下图实线表示有prompt
,虚线表示没有prompt
。 - 模型的性能也随着模型上下文中的样本数量(即
$ K $ )的增加而增加。 $ K=0 $ 表示zero-shot
, $ K=1 $ 表示one-shot
, $ K\gt 1 $ 表示few-shot
。 few-shot learning
性能也随着模型规模的增加而显著提高。
虽然这种情况下的结果特别引人注目,但是模型规模和上下文中的样本数量的一般趋势在我们研究的大多数任务中都适用。我们强调,这些
learning curve
不涉及梯度更新或微调,只是增加了作为条件的示范的数量。【作者注:较大的模型对上下文信息的利用越来越有效。大型模型的
in-context learning curves
越陡峭,则表明从contextual information
中学习一个任务的能力越好。】大体上,在
NLP
任务中,GPT-3
在zero-shot/one-shot setting
中取得了有希望的结果;而在few-shot
的setting
中有时具有与SOTA
相同的竞争力,甚至偶尔超越了SOTA
(SOTA
是由微调模型获得的)。例如:- 在
CoQA
数据集上,GPT-3
在zero-shot/one-shot/few-shot setting
中实现了81.5/84.0/85.0 F1
。 - 类似地,在
TriviaQA
数据集上,GPT-3
在zero-shot/one-shot/fiew-shot setting
中实现了64.3%/68.0%/71.2%
的准确率。其中few-shot
的结果超越了在相同的closed-book setting
下的微调模型,达到了SOTA
。
GPT-3
在测试快速适应rapid adaption
或即时推断on-the-fly reasoning
的任务中也展示出one-shot/few-shot
的熟练性proficiency
,这些任务包括解扰单词unscrambling word
(即恢复被扰动的单词)、进行数学运算、以及看到新词novel word
的一次定义之后在后面的句子中使用这些词。我们还表明:在few-shot setting
中,GPT-3
可以生成合成的新闻文章,而人类评估员很难将合成的文章与人类产生的文章区分开。同时,我们也发现了一些任务,即使在
GPT-3
的规模下,few-shot
的性能也很差。这包括自然语言推理任务natural language inference task
,如ANLI
数据集,以及一些阅读理解数据集(如RACE
或QuAC
)。通过对GPT-3
的优点和缺点的广泛描述,包括这些局限性,我们希望能够激励对语言模型中的few-shot learning
的研究,并引起对需求最迫切的进展的关注。下图汇总了各种任务的结果,尽管它本身不应该被看做是一个严格的或有意义的
benchmark
。【作者注:虽然
zero-shot
性能随着模型规模的扩大而稳步提高,但是few-shot
性能提高得更快,这表明较大的模型在in-context learning
方面更为熟练。】我们还对“数据污染”
data contamination
进行了系统性的研究。当在诸如Common Crawl
这样的数据集上训练大容量模型时,这是一个日益严重的问题,该数据集可能包含了来自测试数据集的内容,仅仅是因为测试数据集的内容经常来自于网络。在本文中,我们开发了系统性的工具来测量数据污染,并量化数据污染的扭曲效应distorting effect
。尽管我们发现数据污染对GPT-3
在大多数数据集上的性能影响很小,但是我们确实发现了一些数据集,在该数据集上评估会夸大GPT-3
的结果。对于这些会夸大GPT-3
结果的数据集,我们要么不报告这些数据集的结果,要么根据污染严重程度用星号加以说明。除了上述所有情况外,我们还训练了一系列较小的模型(从
1.25
亿个参数到130
亿个参数不等),以便在zero-shot/one-shot/few-shot setting
中和GPT-3
比较性能。总体而言,对于大多数任务,我们发现在所有三种setting
下,效果随着模型容量的scale
是相对平滑的。一个值得注意的模式是:zero-shot/one-shot/few-shot
的性能之间的gap
往往随着模型容量的增加而增加,这也许表明更大的模型是更熟练的meta-learner
。最后,鉴于
GPT-3
所展示的广泛能力,我们讨论了bias
、公平、以及更广泛的社会影响,并尝试对GPT-3
在这方面的特性进行初步分析。- 首先出现的是通过词向量学到的
相关工作:
有一些工作聚焦于增加语言模型的参数量或/和计算量,从而提高任务性能。早期的工作是将基于
LSTM
的语言模型扩展到超过10
亿个参数的《Exploring the limits of language modeling》
。- 有一个工作方向直接增加了
transformer
模型的大小,将参数数量和FLOPS-per-token
大致按比例增加。这方面的工作已经连续增加了模型的大小:2.13
亿个参数的Transformer
、3
亿个参数的BERT
、15
亿个参数的GPT-2
、80
亿个参数的Megatron
、110
亿个参数的T5
、170
亿个参数的Turing
。 - 另一个工作方向的重点是增加参数量但是不增加计算量,它增加模型存储信息的容量而不增加计算成本。这些方法依赖于条件计算框架
《Estimating or propagating gradients through stochastic neurons for conditional computation》
。具体而言,混合专家方法(《The sparsely-gated mixture-of-experts layer》
)已被用于产生1000
亿个参数的模型,最近又产生了500
亿个参数的翻译模型(《Massively multilingual neural machine translation》
),尽管每次前向传播时实际上仅使用了一小部分的参数。 - 第三个工作方向是在不增加参数的情况下增加计算量。这种方法的例子包括自适应计算时间
adaptive computation time
(《Adaptive computation time for recurrent neural networks》
)和universal transformer
(《Universal transformers》
)。
我们的工作聚焦于第一个方向(将计算和参数一起扩大,直接使神经网络变大),并将模型大小增加到
10x
(即,十倍)。- 有一个工作方向直接增加了
一些工作也系统性地研究了规模对于语言模型性能的影响。
《Scaling laws for neural language models》
、《A constructive prediction of the generalization error across scales》
、《Train large, then compress: Rethinking model size for efficient training and inference of transformers》
、《Deep learning scaling is predictable, empirically》
发现,随着自回归语言模型规模的扩大,loss
有一个平滑的power-law
的趋势。这些工作表明,随着模型规模的不断扩大,这个趋势在很大程度上仍在继续。而且我们还发现在许多(尽管不是全部)下游任务中,在横跨3
个量级的scaling
中都有相对平滑的增长。另一个工作方向与
scaling
的方向相反,试图在尽可能小的语言模型中保留强大的性能。这些方法包括ALBERT
、通用模型蒸馏方法 (《Distilling the knowledge in a neural network》
)、以及特定任务的模型蒸馏方法(DistilBERT
、TinyBERT
、《Sequence-level knowledge distillation》
)。这些架构和技术有可能是对我们工作的补充,并可以用于减少巨型模型giant model
的延迟和内存占用。随着微调的语言模型在许多标准
benchmark
任务上接近人类的表现,人们已经付出了相当大的努力来构建更困难或更开放的任务,包括问答question answering
、阅读理解reading comprehension
、以及旨在对现有语言模型造成困难的对抗性构建的数据集。在这项工作中,我们在许多这些数据集上测试我们的模型。之前的许多工作都特别关注问答
question-answering
,这在我们测试的任务中占了很大一部分。最近的许多工作包括《Exploring the limits of transfer learning with a unified text-to-text transformer》
、《How much knowledge can you pack into the parametersof a language model?》
(它们对110
亿个参数的语言模型进行了微调),以及《Realm: Retrieval-augmented language model pre-training》
(它侧重于在测试时关注大型数据集)。我们的工作不同之处在于聚焦in-context learning
,但是未来可以与Realm
和《Retrieval-augmented generation for knowledge-intensive nlp tasks》
的工作相结合。语言模型中的
meta-learning
已经在GPT-2
中得到了应用,尽管结果比较有限,也没有系统性的研究。更广泛地说,语言模型的meta-learning
有一个inner-loop-outer-loop
的结构,使得它在结构上与应用到通用机器学习的meta-learning
相似。这里有大量的文献,包括matching network
(《Matching Networks for OneShot Learning》
)、RL2
(《Rl2: Fastreinforcement learning via slow reinforcement learning》
)、learning to optimize
、以及MAML
(《Model-agnostic meta-learning for fast adaptation of deep networks》
)。我们的方法用previous
样本来填充模型的上下文,这种方法在结构上与RL2
最为相似,也与《Learning to Learn Using Gradient Descent》
相似,即:- 内循环的适应
adaptation
是通过对模型activateion
的跨time step
的计算而进行的,而不更新权重。 - 外循环更新权重,并隐式地学习适应能力或至少识别推理时所定义的任务的能力。
在
《Few-shot auto regressive density estimation: Towards learning to learn distributions》
中探讨了few-shot
自回归密度估计,并且《Meta-learning for low-resource neural machine translation》
将低资源神经机器翻译作为few-shot learning
问题来研究。- 内循环的适应
虽然我们的
few-shot
方法的机制不同,但是之前的工作也探索了使用预训练的语言模型与梯度下降相结合来进行few-shot learning
的方法(《Exploiting cloze questions for few-shot text classification and natural language inference》
)。另一个具有类似目标的子领域是半监督学习,其中UDA
(《Unsupervised data augmentation for consistency training 》
)等方法也探索了在可用的标记数据非常少时进行微调的方法。在自然语言中给多任务模型下达指令,这在有监督环境中首次被正式化(
《The natural language decathlon: Multitask learning as question answering》
),并在语言模型GPT-2
中被用于一些任务(如摘要)。在T5
中也探索了用自然语言提出任务的概念,尽管它被用于多任务微调,而不是用于没有权重更新的in-context learning
。另一种提高语言模型通用性和迁移学习能力的方法是多任务学习,它将多个下游任务混合在一起进行微调,而不是单独更新每个任务的权重。如果成功的话,多任务学习可以允许单个模型用于许多任务而不需要更新权重(类似于我们的
in-context learning
方法),或者在更新一个新任务的权重时可以提高样本效率sample efficiency
(即,更少的样本)。多任务学习已经展示出一些有希望的初步结果,多阶段微调最近已经成为一些数据集上SOTA
结果的标准化部分(《Sentence encoders on STILTs: Supplementary training on intermediate labeled-data tasks》
),但是仍然受到需要手动整理数据集以及设置训练课程training curricula
的限制。相比之下,足够大规模的预训练似乎提供了一个 “自然” 的广泛的任务分布,这个任务分布隐含在预测文本这个任务本身。未来工作的一个方向可能是尝试为多任务学习产生更广泛的、显式的任务集合,例如通过程序化生成procedural generation
、人类互动human interaction
、或主动学习active learning
。在过去两年中,语言模型的算法创新是巨大的,包括基于降噪的双向性(
BERT
)、prefixLM
(《Semi-supervised sequence learning》
)、encoder-decoder
架构(Bart
、T5
)、训练期间的随机排列 (XLNet
)、提高采样概率的架构(Transformer-xl
)、数据和训练程序的改进(RoBERTa
)、以及embedding
参数的效率提高(RoBERTa
)。这些技术中的许多在下游任务上提供了显著的收益。在这项工作中,我们继续聚焦于纯自回归语言模型,这既是为了聚焦in-context learning
性能,也是为了降低我们大模型实现的复杂性。然而,纳入这些算法很可能会提高GPT-3
在下游任务上的性能,特别是在微调的setting
中,将GPT-3
与这些算法技术相结合是未来的一个有希望的方向。
6.1 方法
我们
basic
的预训练方法,包括模型、数据、以及训练,与GPT-2
相似,模型大小、数据集大小和多样性、训练epoch
都直接scaling up
。我们对in-context learning
的使用也类似于GPT-2
,但是在这项工作中,我们系统地探索了in-context learning
的不同setting
。因此,我们在本节开始时明确地定义和对比了我们将要评估GPT-3
的不同setting
:微调
Fine-Tuning: FT
:微调是近年来最常用的方法,它包括通过对所需任务的特定监督数据集进行训练来更新预训练模型的权重。通常情况下,会使用几千到几十万个标记样本。- 微调的主要优点是:在许多
benchmark
上有强大的性能。 - 微调的主要缺点是:每项任务都需要一个新的大型数据集(作为微调数据集),有可能出现
out-of-distribution
的不良泛化(《Right for the wrong reasons: Diagnosing syntactic heuristics in natural language inference》
),以及有可能利用训练数据集的虚假特征从而导致与人类表现的不公平比较(《Annotation artifacts in natural language inference data》
、《Probing neural network comprehension of natural language arguments》
)。
在这项工作中,我们没有对
GPT-3
进行微调,因为我们的重点是任务无关task-agnostic
的性能。但是GPT-3
原则上是可以微调的,这是未来工作的一个有希望的方向。- 微调的主要优点是:在许多
Few-Shot: FS
:Few-Shot
是我们在这项工作中使用的术语,指的是在推断时给模型一些任务的演示demonstration
作为条件,但不允许权重更新。如下图所示,对于一个典型的数据集,一个样本有一个
context
和一个预期的补全completion
(例如,一个英语句子作为上下文,和对应的法语翻译作为补全)。few-shot
通过给出 $ K $ 个包含context
和completion
的样本,然后再给出最后一个样本的context
,并预期模型能够提供最后一个样本的completion
。我们通常将 $ K $ 设置在10
到100
的范围,因为这是模型的上下文窗口( $ n_\text{ctx}=2048 $ ) 可以容纳的样本数量。few-shot
的主要优点是:大大减少了对特定任务数据的需求,并减少了从大而窄的微调数据集中学习过度狭窄分布的可能性。few-shot
的主要缺点是:到目前为止,这种方法的结果比SOTA
的微调模型差很多。另外,仍然需要少量的特定任务的数据。
如名称所示,这里描述的用于语言模型的
few-shot learning
与机器学习中其它情况下使用的few-shot learning
有关(《Learning to Learn Using Gradient Descent》
、《Matching Networks for One Shot Learning 》
):二者都涉及基于广泛的任务分布的学习(在我们的case
中是隐含在预训练数据中),然后快速适应新的任务。One-Shot: 1S
:One-Shot
与few-shot
相同,只是除了任务的自然语言描述之外,只允许一个示范,如下图所示。将one-shot
与few-shot
和zero-shot
区分开的原因是,它与一些人类交流的任务的方式最接近。例如,当要求人来生成一个human worker service
(如Mechanical Turk
)的数据集时,通常会给出任务的一个示范。相比之下,如果没有给出任何示范,有时就很难沟通任务的内容或格式。Zero-Shot: 0S
:Zero-Shot
与one-shot
相同,只是没有任何示范,只给模型一个描述任务的自然语言指令。这种方法提供了最大的便利性和潜在的鲁棒性,并避免了虚假的相关性(除非它们在预训练数据的大型语料库中非常广泛地出现),但是也是最具挑战性的setting
。在某些情况下,如果没有事先的例子,人类甚至很难理解任务的形式,所以这种设置在某些情况下是 “不公平的困难”。例如,如果有人被要求 “制作一个
200
米短跑的世界纪录表格”,这个要求可能是模棱两可的,因为可能不清楚这个表格到底应该是什么格式,或者应该包含什么内容(即使仔细澄清,也很难准确地理解想要什么)。尽管如此,至少在某些情况下,zero-shot
最接近人类执行任务的方式:如下图的翻译例子中,人类很可能仅从文本指令text instruction
中就知道该怎么做。
下图展示了使用英语翻译成法语的例子的四种方法。在本文中,我们重点讨论了
zero-shot/one-shot/few-shot
,目的不是将它们作为竞争性的替代方案进行比较,而是作为不同的问题设置,在特定benchmark
和样本效率之间提供不同的tradeoff
。我们特别强调了few-shot
的结果,因为它们中的许多仅仅是稍微落后于SOTA
的微调模型。然后,one-shot
,有时甚至是zero-shot
,似乎是对人类性能最公平的比较,也是未来工作的重点目标。作者注:
zero-shot/one-shot/few-shot
仅要求模型在测试期间前向传播就能完成任务(而无需反向梯度更新)。
6.1.1 模型和架构
我们使用与
GPT-2
相同的模型和架构,包括其中描述的modified initialization
、pre-normalization
、reversible tokenization
,不同的是我们在transformer
的层中使用交替的dense
和locally banded sparse
的注意力模式,类似于Sparse Transformer
(《Generating long sequences with sparse transformers》
) 。locally banded sparse
注意力:每个位置的注意力仅依赖于附近的 $ k $ 个位置。为了研究机器学习性能对模型大小的依赖性,我们训练了
8
种不同大小的模型,规模从1.25
亿个参数到1759
亿个参数(横跨3
个量级),其中规模最大的那个模型我们称之为GPT-3
。以前的工作《Scaling laws for neural language models》
表明:在有足够训练数据的情况下,验证损失的scaling
应该是一个平滑的power law
并且作为数据规模的函数。训练许多不同规模的模型使我们能够测试这个假设,无论是在验证损失上测试还是在下游的语言任务上测试。下表展示了我们
8
个模型的大小和结构。其中: $ n_\text{params} $ 是可训练参数的总数, $ n_\text{layers} $ 是层的总数。 $ d_\text{model} $ 是每个bottleneck layer
的单元数,我们总是让前馈层的大小是bottleneck layer
的四倍,即 $ d_\text{ff} = 4\times d_\text{model} $ 。 $ d_\text{head} $ 是每个注意力头的维度。根据公式有:
$ d_\text{model} = d_\text{head}\times n_{heads} $ 。所有模型都使用
$ n_\text{ctx}=2048 $ 个token
的context window
。
我们同时沿着深度和宽度维度将模型在
GPU
之间进行partition
,从而尽量减少节点之间的数据传输。每个模型的precise architectural parameter
是根据计算效率和跨GPU
的模型布局的负载平衡来选择的。以前的工作《Scaling laws for neural language models》
表明:在一个合理的大的区间范围内,验证损失对这些超参数并不非常敏感。
6.1.2 训练数据集
我们使用
Common Crawl
数据集。然而我们发现:未经过滤和轻度过滤的Common Crawl
版本的质量往往低于精心处理的数据集。因此我们采取了三个步骤来提高我们的数据集的平均质量:- 我们下载了
Common Crawl
数据集,并基于与一系列高质量参考语料库的相似性来过滤Common Crawl
。 - 我们在在数据集内部和跨数据集之间进行了
document-level
的模糊去重fuzzy deduplication
,从而防止数据冗余,并保持我们held-out
验证集的完整性从而作为对过拟合的准确衡量。 - 我们还将已知的高质量参考语料库加入到训练组合,从而增强
Common Crawl
并增加其多样性。
前两点(
Common Crawl
的处理)的细节在附录中描述。对于第三点,我们加入了几个精心设计的高质量数据集,包括WebText
数据集的扩展版本(该扩展数据集是通过在较长时间内爬取链接而收集的),以及两个基于互联网的books
语料库(Books1
和Books2
)和英文维基百科。下表展示了我们在训练中使用的最终混合数据集。
CommonCrawl
数据是从覆盖2016
年到2019
年月度CommonCrawl
的41
个分片中下载的,在过滤前是45TB
的压缩文本,过滤后是570GB
,大约包含400B
的byte-pair-encoded tokens
。注意,在训练期间,数据集的采样并不与它们的大小成正比,而是我们认为质量较高的数据集被更频繁地采样。例如:
CommonCrawl
和Books2
数据集在训练期的每个epoch
被采样不到1
次,但是其他数据集被采样2
到3
次。这基本上是接受了少量的过拟合从而换取更高质量的训练数据。下图中:
Weight
表示训练过程中,从给定数据集中采样的比例。最后一列表示混合数据每个epoch
包含各个子数据集的多少个epoch
。总的token
数量为: $ 410\times 0.44 + 19\times 2.9 + 12\times 1.9 + 55\times 0.43+ 3\times 3.4 = 292.15 $ 。、
- 我们下载了
对于在广泛的互联网数据上进行预训练的语言模型,尤其是有能力记忆大量内容的模型,一个主要的方法论问题是:在预训练期间无意中看到测试集或验证集,从而对下游任务造成潜在污染。为了减少这种污染,我们搜索并试图消除与本文研究的所有
benchmark
验证集或测试集的任何重叠overlap
。不幸的是,过滤中的一个错误导致我们忽略了一些重叠,而且由于训练的成本,重新训练模型是不可行的。在未来的工作中,我们将更积极地消除数据污染。
6.1.3 训练过程
正如
《Scaling laws for neural language models》
和《An empirical model of large-batch training》
中发现的那样,较大的模型通常可以使用较大的batch size
,但是需要较小的学习率。我们在训练过程中测量gradient noise scale
,并使用它来指导我们对batch size
的选择。下表展示了我们使用的参数配置。为了在不耗尽内存的情况下训练更大的模型,我们混合使用模型并行(在每个矩阵乘法上使用模型并行,即沿着宽度维度来划分模型;在网络各层上使用模型并行,即沿着深度维度来划分模型)。所有模型都是在微软提供的、位于一部分高带宽集群的V100 GPU
上训练的。训练过程和超参数设置的细节参考附录。
6.1.4 评估
对于
few-shot learning
,我们通过从该任务的训练集中随机抽取 $ K $ 个样本作为条件来评估evaluation set
中的每个样本,根据任务的不同,每个样本被1
或2
个换行符来限定delimited
。- 对于
LAMBADA
和Storycloze
,因为训练集没有监督信息,所以我们从验证集中采样条件样本conditioning example
,在测试集中进行评估。 - 对于
Winograd
(原始版本,而不是SuperGLUE
版本),只有一个数据集,所以我们直接从该数据集采样条件样本。
$ K $ 可以是从0
到模型上下文窗口(对于所有模型而言 $ n_\text{ctx}=2048 $ )所允许的最大值之间的任何值,通常是10
到100
个样本。较大的 $ K $ 值通常不一定最好,所以当有独立的验证集和测试集时,我们在验证集上试验几个 $ K $ 值并选择最佳的那个,然后在测试集上运行最佳 $ K $ 值。对于某些任务(见附录),在示范demonstration
之外我们还使用自然语言提示natural language prompt
,如果是 $ K=0 $ 那么我们就仅用用自然语言提示。- 对于
在涉及从几个选项中选择一个正确答案的任务中,我们提供了
$ K $ 个(context, completion)
的样本,然后是一个只有context
的样本,并比较每个completion
的LM likelihood
。这里是把所有样本拼接成一个长的序列,从而作为上下文。如:
xxxxxxxxxx
Q:xxxx A:yyyy Q:xxxxxx A:yyyy Q:xxxxxxx A:最后只有一个
A:
作为提示,现在需要补全答案。对于大多数任务,我们比较
per-token
的可能性(即,对长度进行归一化处理)。即:
$ \frac{P(\text{completion | context})}{\text{len}(\text{completion})} $ ,其中 $ \text{len}(\cdot) $ 为token
数量。然而在少数数据集(
ARC, OpenBookQA, RACE
)上,我们通过计算 $ \frac{P(\text{completion | context})}{P(\text{completion | answer-context})} $ 来获得验证集上的额外好处,该方法通过每个completion
的无条件概率来归一化,其中answer context
为字符串"Answer: "
或"A: "
并用于提示completion
应该是一个答案,其它方面都是通用的。在涉及二分类的任务上,我们给答案起了更有语义的名字(如
True
或False
,而不是0
或1
),然后把任务当做选择题。我们有时也会像T5
那样对任务进行框定frame
(详见附录)。在自由形式的
completion
任务上,我们使用与T5
相同参数的beam search
:beam width = 4
,长度惩罚系数 $ \alpha = 0.6 $ 。我们使用F1
相似度得分、BLEU
、或exact match
来对模型进行评分,具体取决于数据集是什么评估标准。
如果测试集是公开的,那么我们会针对每个模型的大小和
setting
(zero-shot/one-shot/few-shot
)报告最终结果。如果测试集是私有的,我们的模型往往太大而无法在test server
上fit
,所以我们报告验证集的结果。我们确实在少量数据集(SuperGLUE, TriviaQA, PiQa
)上提交了test server
,在这些数据集上我们能够顺利提交,并且我们仅提交了200B
(最大的模型)的few-shot
结果。其它所有的结果都是验证集上报告的。实际上是
175B
模型而不是200B
模型?
6.2 实验结果
下图我们展示了
8
个模型的训练曲线。在这张图中,我们还包括了6
个额外的小模型,它们的参数只有10
万个(一共十四条曲线)。正如在《Scaling laws for neural language models》
中观察到的,当有效利用training compute
时,语言建模的性能遵循一个power-law
。在将这个趋势再scale
两个数量级之后,我们观察到的是对power-law
的轻微偏离(如果有的话)。人们可能会担心:交叉熵损失的这些提升仅仅来自于对我们训练语料库的虚假细节spurious details
的建模(从而导致泛化能力较差)。然而,我们将在后续的章节看到,交叉熵损失的改善在广泛的自然语言任务中导致了一致的性能提升。作者注:在下图中,我们把
emebdding parameters
从统计中剔除了。下面,我们对这
8
个模型(1750
亿参数的GPT-3
和7
个较小的模型)在广泛的数据集上进行评估。我们将这些数据集分为9
个类别,代表大致相似的任务。- 在
3.1
节(原始论文的章节,下同)中,我们对传统的语言建模任务和语言建模类似的任务进行评估,如Cloze
任务和sentence/paragraph completion
任务。 - 在
3.2
节中,我们的对closed book
问答任务进行评估,这些任务需要使用存储在模型参数中的信息来回答通用的知识问题。 - 在
3.3
节中,我们评估了该模型在不同语言之间的翻译能力(尤其是one-shot/few-shot
)。 - 在
3.4
节中,我们评估该模型在类似Winograd Schema
任务上的表现。 - 在
3.5
节中,我们对涉及尝试推理或问答的数据集进行评估。 - 在
3.6
节中,我们对阅读理解任务进行了评估。 - 在
3.7
节中,我们对SuperGLUE benchmark suite
进行了评估。 - 在
3.8
节中,我们简要地讨论了NNLI
。 - 在
3.9
节中,我们开发了一些额外的任务,专门用来探测in-context learning
能力。这些任务聚焦于即时推理on-the-fly reasoning
、适应技能adaption skill
、开放式文本合成open-ended text synthesis
。
我们对所有任务都在
few-shot/one-shot/zero-shot setting
下进行了评估。- 在
6.2.1 语言建模、完形填空、Completion 任务
a. 语言建模
我们在
GPT-2
中测量的Penn Tree Bank: PTB
数据集上计算了zero-shot
困惑度。我们最大的模型在PTB
上达到了一个新的SOTA
,有15
个点的飞跃,达到了20.50
的困惑度。注意,由于PTB
是一个传统的语言建模数据集,它没有明确的分隔separation
的样本来定义one-shot
或zero-shot
,所以我们仅测量zero-shot
的。这里省略了许多常见的语言建模数据集,因为这些数据集来自于维基百科或其它数据源,而这些数据源都已经包含在
GPT-3
的训练数据中。
b. LAMBADA
LAMBADA
数据集测试了文本中长距离依赖关系的建模:模型被要求预测句子的最后一个单词,这要求模型阅读一个段落(作为上下文)。在zero-shot
的情况下,GPT-3
在LAMBADA
上达到了76%
,比以前的技术水平提高了8%
。LAMBADA
也是few-shot learning
灵活性的证明,因为它提供了一种方法来解决这个数据集上出现的一个经典问题:尽管LAMBADA
中的completion
总是句子中的最后一个单词,但是标准的语言模型却无法得知这个细节。因此,语言模型不仅为正确的结尾分配概率,也为该段落的其它有效continuation
分配概率。这个问题在过去已经通过停用词过滤(这禁止了continuation
词)得到了部分解决。few-shot setting
反而使我们能够将任务 “框定” 为一个cloze-test
,并允许语言模型从样本中推断出恰好需要一个单词的completion
。我们使用以下的fill-in-the-blank
格式:xxxxxxxxxx
Alice was friends with Bob. Alice went to visit her friend ____. -> Bob George bought some baseball equipment, a ball, a glove, and a ___. ->当以这种方式呈现样本时,
GPT-3
在few-shot setting
下达到了86.4%
的准确率,比之前的SOTA
提高了18%
。我们观察到,few-shot
的性能随着模型的大小而得到强烈的改善:对于最小的模型则性能只有接近20%
,而对于GPT-3
则性能达到86%
。最后,
fill-in-blank
在one-shot setting
中效果不佳,它的表现总是比zero-shot setting
更差。也许这是因为所有模型仍然需要几个样本来识别模式。作者注:对于
few-shot learning
,GPT-3 2.7B
已经超越了SOTA
的17B
参数的Turing-NLG
,并且GPT-3 175B
超越了SOTA
高达18%
。需要注意的是,对测试集污染的分析发现,
LAMBADA
数据集中的相当一部分似乎存在于我们的训练数据中。然而 ”衡量和防止对benchmark
的记忆“这部分章节的分析表明:这对性能的影响可以忽略不计。
c. HellaSwag
HellaSwag
数据集涉及为一个故事或一组指令挑选最佳的ending
。这些例子被对抗性地挖掘出来,对语言模型而言很难,而对于人类而言确很容易(人类达到95.6%
的准确率)。GPT-3
在one-shot/few-shot setting
中取得了78.1%/79.3%
的准确率,超越了微调的1.5B
参数模型Grover
的75.4%
的准确率,但是仍然比微调的多任务模型ALUM
取得的85.6%
的SOTA
低了不少。
d. StoryCloze
StoryCloze 2016
数据集涉及为五句话长度的故事选择正确的ending sentence
。这里,GPT-3
在zero-shot/few-shot setting
中取得了83.2%/87.7%
的成绩,其中few-shot
的 $ K=70 $ 。这仍然比使用基于BERT
模型的微调SOTA
低4.1%
,但是比以前的zero-shot
结果提高了大约10%
。
6.2.2 Closed Book 问答
这里我们衡量
GPT-3
回答有关广泛事实知识broad factual knowledge
的问题的能力。- 由于可能的
query
的数量巨大,该任务通常是通过使用信息检索系统来寻找相关的文本,并结合一个模型来学习给定question
和被检索到文本retrieved text
的条件下生成answer
。由于这种setting
允许系统搜索可能包含答案的文本,并以搜到的文本为条件,因此这种setting
被称作 “开卷”open-book
。 《How much knowledge can you pack into the parameters of a language model》
最近证明了一个大型的语言模型可以在没有辅助信息为条件的情况下直接回答问题。他们将这种限制性更强的评估setting
称作 “闭卷”closed-book
。他们的工作表明:更高容量的模型可以表现得更好。我们用GPT-3
测试这个假设。
- 由于可能的
我们在
《How much knowledge can you pack into the parameters of a language model》
中的三个数据集上评估GPT-3
:Natural Questions
、WebQuestions
、TriviaQA
,使用与他们相同的split
。注意,除了所有结果都是在闭卷的情况下进行之外,我们使用zero-shot/one-shot/few-shot
的评估代表了比他们更严格的setting
:除了不允许有外部内容之外,也不允许对Q&A
数据集本身进行微调。GPT-3
的结果如下所示:在
TriviaQA
数据集上,我们在zero-shot/one-shot/few-shot setting
中取得了64.3%/68.0%/71.2%
的成绩。zero-shot
结果比微调的T5-11B
改进了14.2%
,也比在预训练中使用Q&A tailored span prediction
提高了3.8%
。few-shot
与一个开放域open-domain
的QA
系统的SOTA
相匹配,该系统不仅进行了微调,还利用了一个学到的检索机制retrieval mechanism
。在
WebQuestions: WebQs
上,GPT-3
在zero-shot/one-shot/few-shot setting
中达到14.4%/25.3%/41.5%
。相比之下,微调的T5-11B
为37.4%
,微调的T5-11B+SSM
为44.7%
(它采用了一个Q&A-specific
预训练程序)。GPT-3
在few-shot setting
下的性能接近SOTA
微调模型。值得注意的是,与TriviaQA
相比,WebQS
从zero-shot
到few-shot
表现出更大的优势(事实上,zero-shot
到one-shot
的差异也较大),这也许表明:WebQs
的问题和/或答案的风格对于GPT-3
而言是out-of-distribution
的。然而,GPT-3
似乎能够适应adapt
这种分布,在few-shot setting
下恢复了强大的性能。在
Natural Questions: NQs
上,GPT-3
在zero-shot/one-shot/few-shot setting
中达到14.6%/23.0%/29.9%
。相比之下,微调的T5-11B+SSM
为36.6%
。与
WebQs
类似,从zero-shot
到few-shot
的巨大收益可能表明了distribution shift
,也可能解释了NQs
和TriviaQA, WebQs
相比竞争力较弱的表现。特别是,NQs
中的问题倾向于非常精细的维基百科知识,这可能是在测试GPT-3
的容量和broad pretraining distribution
的极限。
总而言之,在三个数据集中的一个上(即,
TriviaWA
数据集),GPT-3
的one-shot
匹配了开放域的微调SOTA
。在另外两个数据集上,尽管没有使用微调,但是GPT-3
接近于闭卷SOTA
的性能。在所有三个数据集上,我们发现性能随模型规模的变化非常平稳。这可能反映了这样的思想:模型容量直接转化为更多的、被模型参数吸收的 “知识”。所有模型规模在所有
QA
任务上的性能:
6.2.3 翻译
在
GPT-2
中,由于容量问题capacity concern
,我们对多语言文件集合使用了一个过滤器,从而产生一个只有英语的数据集。即使采用了这个过滤器,GPT-2
也展示了一些多语言能力的证据,并且在法语和英语之间翻译时,表现得非同寻常,尽管只对10MB
的、过滤后残留的法语文本进行了训练。在
GPT-3
中我们将GPT-2
的容量提高了两个数量级,而且我们也扩大了训练数据集的范围从而包括其它语言的更多representation
。我们的大部分数据都是来自于原始的Common Crawl
,只有基于质量的过滤。尽管GPT-3
的训练数据仍然主要是英语(根据单词数来算,占比93%
),但是它也包括7%
的其它语言的文本(参见论文中的补充材料)。为了更好地了解翻译能力,我们还包括了另外两种常用的研究语言:德语German
和罗马尼亚语Romanian
。现有的无监督机器翻译方法通常将一对单语言数据集的预训练和
back-translation
相结合。相比之下,GPT-3
从混合的训练数据中学习,该数据以自然的方式将多种语言混合在一起,在单词、句子、和文档level
将它们结合起来。GPT-3
还使用一个单一的训练目标,该目标不是为任何特定的任务定制或设计的。然而,我们的one-shot/few-shot setting
不能严格地与先前的无监督工作相比较,因为我们的方法仅利用了少量的paired
样本(1
个或64
个)。这相当于最多一两页的in-context training data
。结果如下表所示:
zero-shot
的GPT-3
,仅接收任务的自然语言描述,仍然低于最新的无监督的神经机器翻译neural machine translation: NMT
的结果。one-shot
的GPT-3
,仅为每项翻译任务提供单个样本,性能比zero-shot
提高了7 BLEU
,并且接近与先前工作有竞争力的性能。few-shot
的GPT-3
进一步提高了4 BLEU
,导致与先前的无监督神经机器翻译的平均性能相似。GPT-3
的性能在语言类型方面有个明显的倾斜,在其它语言翻译到英语时显著优于先前的无监督神经机器翻译工作,但是在英语翻译到其它语言时表现不佳。这可能是由于重用了GPT-2
的byte-level BPE tokenizer
,该tokenizer
是为一个几乎完全是英语的训练数据集开发的。对于
Fr-En
和De-En
,GPT-3
的few-shot
超越了我们能找到的最好的监督结果,但是我们对相关文献不熟悉并且看起来这些benchmark
没什么竞争力,因此我们认为这些结果并不代表真正的SOTA
。对于
Ro-En
,GPT-3
的表现相比SOTA
是在0.5 BLEU
以内,而SOTA
是通过无监督预训练以及对608k
标记样本进行微调以及back-translation
的组合来实现的。
最后,在所有的语言翻译和所有的三种
setting
中,随着模型容量的提高,有一个平滑的趋势。下图中,虚线是英语翻译到其它语言,实线是其它语言翻译到英语。
所有模型规模在所有翻译任务中的性能:
6.2.4 Winograd-Style Tasks
Winograd Schemas Challenge
是NLP
中的一项经典任务,它涉及确定代词指的是哪个词,其中这个代词在语法上是模糊ambiguous
的但是在语义上对人而言是明确unambiguous
的。最近,经过微调的语言模型在原始的Winograd
数据集上取得了接近人类的性能。但是对于更难的版本,如对抗性挖掘的Winogrande
数据集,微调的语言模型仍然大大落后于人类的性能。我们在
Winograd
和Winogrande
上测试GPT-3
的性能,在zero-shot/one-shot/few-shot setting
中。在
Winograd
上,GPT-3
在zero-shot/one-shot/few-shot setting
中分别取得了88.3%/89.7%/88.6%
的成绩,没有显示出明显的in-context learning
,但是在所有情况下都取得了很强劲的结果,仅比SOTA
和人类表现低一点点。我们注意到,污染分析在训练数据中发现了一些
Winograd schemas
,但是这似乎仅对结果有很小的影响(见”衡量和防止对benchmark
的记忆“ 章节)。在更难的
Winogrande
数据集上,我们确实发现了in-context learning
的好处。GPT-3
在zero-shot/one-shot/few-shot setting
中分别取得了70.2%/73.2%/77.7%
的成绩。作为比较,微调的RoBERTa
模型实现了79%
,SOTA
的是微调的高容量模型(T5
)实现了84.6%
,而报告的人类任务表现为94.0%
。不同
shot
的性能差异体现了in-context learning
的好处。
所有模型规模在所有
Winograd-style
任务上的性能如下所示:
6.2.5 常识推理
我们考虑三个试图捕获物理推理
physical reasoning
或科学推理scientific reasoning
的数据集。PhysicalQA: PIQA
:提出了关于物理世界如何运作的常识性问题,旨在探测对世界的基础理解。GPT-3
实现了81.0%/80.5%/82.8%
的zero-shot/one-shot/few-shot
准确率(few-shot
是在PIQA
的test server
上测量的)。这与之前微调的RoBERTa
的79.4%
的准确率相比更胜一筹,但是仍然比人类的表现差10%
以上。我们的分析将
PIQA
标记为潜在的数据污染问题(尽管隐藏了test label
),因此我们保守地将该结果标记为星号。ARC
:是一个从三年级到九年级科学考试中收集的选择题数据集。该数据集的Challenge
版本已经被过滤为:简单的统计方法或信息检索方法无法正确回答的问题。GPT-3
实现了51.4%/53.2%/51.5%
的zero-shot/one-shot/few-shot
准确率。这接近于UnifiedQA
的微调RoBERTa baseline
(55.9%
)的性能。在数据集的
Easy
版本中,GPT-3
实现了68.8%/71.2%/70.1%
的zero-shot/one-shot/few-shot
准确率,略微超过了《Unifiedqa: Crossing format boundaries with a single qa system》
的微调RoBERTa baseline
。然而,这两个结果仍然比
UnifiedQA
取得的整体SOTA
差得多。UnifiedQA
在Challenge
版本上比GPT-3
的few-shot
超出27%
,在Easy
版本上超出22%
。OpenBookQA
:GPT-3
从zero-shot
到few-shot
的setting
都有显著改善,但是仍然比整体SOTA
差20
多个点。GPT-3
的few-shot
性能与排行榜上微调的BERT Large baseline
相似。
总而言之,使用
GPT-3
的in-context learning
在常识推理commonsense reasoning
任务上展示出mixed
的结果:在PIQA
和ARC
的one-shot
和few-shot
的setting
中仅观察到小的、不一致的收益(相对于zero-shot
),但是在OpenBookQA
上观察到显著的改善。最后,
GPT-3
在PIQA
数据集中,在所有zero-shot/one-shot/few-shot setting
上达到了SOTA
。所有模型规模在所有常识推理任务上的性能:
6.2.6 阅读理解
我们使用包含五个数据集的一个
suite
进行阅读理解任务reading comprehension
的评估。我们观察到GPT-3
的性能在这些数据集上有很大的差异,这表明它在不同的答案格式上有不同的能力。一般而言,我们观察到:GPT-3
与initial baseline
、以及在每个数据集上使用contextual representation
训练的早期结果相当。GPT-3
在CoQA
这个自由形式free-form
的对话数据集上表现最好(与人类baseline
差距在3
个点以内)。GPT-3
在QuAC
这个需要对结构化对话动作和师生互动的answer span selection
进行建模的数据集上表现最差(比ELMo baseline
低13 F1
)。- 在
DROP
这个测试离散推理discrete reasoning
和计算能力numeracy
的数据集上,GPT-3
在few-shot setting
上超越了原始论文中的微调BERT baseline
,但是仍然远远低于人类的表现和用符号系统增强神经网络的SOTA
方法。 - 在
SQuAD 2.0
上,GPT-3
展示了它的few-shot learning
能力,与zero-shot setting
相比,提高了近10 F1
(到69.8
)。这使得它略微超越了原始论文中的最佳微调结果。 - 在
RACE
这个初中和高中英语考试的选择题数据集上,GPT-3
表现相对较弱,仅能与最早的利用contextual representation
的工作竞争,并且仍然比SOTA
落后45%
。
所有模型规模在所有阅读理解任务上的性能:
6.2.7 SuperGLUE
为了更好地汇总
NLP
任务的结果,并以更系统的方式与BERT
和RoBERTa
等流行模型进行比较,我们还在SuperGLUE benchmark
上评估了GPT-3
。GPT-3
在SuperGLUE
测试集上的性能如下表所示。在few-shot setting
中,我们对所有任务都使用32
个样本,从微调训练集中随机采样。- 对于除
WSC
和MultiRC
之外的所有任务,我们抽取新的一组样本作为每个问题的上下文(从而用于测试)。 - 对于
WSC
和MultiRC
任务,我们使用从微调训练集中随机抽取的同一组样本作为我们评估的所有问题的上下文。
我们观察到
GPT-3
在不同任务中的表现有很大差异:在
COPA
和ReCORD
上,GPT-3
在one-shot/few-shot setting
中达到了接近SOTA
的性能。COPA
在排行榜上取得了第二名,仅比第一名(微调过的110
亿参数的T5
模型)差几分。在
WSC
上,GPT-3
的few-shot setting
达到了80.1%
(注意,GPT-3
在原始Winograd
数据集上达到了88.6%
,如前所述),性能还是比较强劲的。在
BoolQ, MultiRC, RTE
上,GPT-3
的性能是reasonable
的,大致与微调的BERT-Large
相当。在
CB
上,我们看到GPT-3
在few-shot setting
中达到了75.6%
。WiC
是一个明显的弱点,few-shot
性能仅为49.4%
(接近于随机的选择)。我们为WiC
尝试了许多不同的短语和表达式(这些涉及到确定一个词在两个句子中是否有相同的含义),但是没有一个能够取得强大的性能。这暗示了一个即将在下一节(ANLI benchmark
)中变得更加清晰的现象:GPT-3
似乎在一些涉及比较两个句子或片段的任务中,在few-shot
或one-shot
的setting
中比较弱,例如,一个词是否在两个句子中以同样的方式使用(WiC
),一个句子是否是另一个句子的转述paraphrase
,或者一个句子是否暗示了另一个句子。这也可以解释为什么RTE
和CB
的得分相对较低,因为它们也遵循这种格式。尽管有这些弱点,
GPT-3
仍然在八个任务中的四个任务上超越了微调的BERT-Large
,在其中的两个任务上接近微调的110
亿参数的T5
模型所保持的SOTA
水平。
- 对于除
最后,我们也注意到:随着模型规模和上下文中样本数量的增加,
few-shot
的SuperGLUE
得分也稳步提高,展示出从in-context learning
中获得的好处越来越多。我们将每个任务的 $ K $ 值扩大到32
个样本,在这之后,额外的样本将不可能可靠地fit
我们的上下文。当扫描所有的
$ K $ 值时,我们发现GPT-3
需要每项任务至少8
个total samples
,才能在整体SuperGLUE score
上超越微调的BERT-Large
。下图中,
BERT-Large
参考模型是在SuperGLUE
训练集(125k
个样本)上进行微调的,而BERT++
首先在MultiNLI
(392k
个样本)和SWAG
(113k
个样本)上进行微调,然后在SuperGLUE
训练集上进行进一步微调(总共630k
个微调样本)。我们发现BERT-Large
和BERT++
之间的性能差异大致相当于GPT-3
中每个上下文 $ K=1 $ 与 $ K=8 $ 个样本的差异。所有模型规模在所有
SuperGLUE
任务上的性能:
6.2.8 NLI
Natural Language Inference: NLI
任务涉及理解两个句子之间关系的能力。在实践中,这项任务通常被结构化为一个二类或三类的分类问题:第二句话是否符合第一句话的逻辑、是否与第一句话矛盾、是否既不符合也不矛盾(即,中性)。SuperGLUE
包含了一个NLI
数据集RTE
,它评估了该任务的二分类版本。在RTE
上,只有最大参数规模的GPT-3 175B
在任何setting
中都表现得比随机的好。而在few-shot setting
下,GPT-3
的表现与单任务微调的BERT-Large
相似。- 我们还评估了最近引入的
Adversarial Natural Language Inference: ANLI
数据集。ANLI
是一个困难的数据集,在三轮(R1, R2, R3
)中采用了一系列对抗性挖掘的自然语言推理问题。类似于RTE
,所有比GPT-3 175B
小的模型ANLI
上的表现几乎完全是随机的,即使是在few-shot setting
中(33%
,因为是三分类问题)。
下图给出了
ANLI R3
的结果。这些关于RTE
和ANLI
的结果表明:NLI
对于语言模型而言,仍然是一个非常困难的任务,它们只是刚刚开始显示出进步的迹象。下图是验证集上的结果,由于验证集仅包含
1500
个样本,因此结果的方差很大(我们估计的标准差为1.2%
)。我们发现较小的模型在随机概率附近徘徊。所有模型在所有
ANLI
任务上的性能:
6.2.9 合成的和定性的任务
探索
GPT-3
在few-shot setting
(或zero-shot/one-shot setting
)下的能力范围的一种方法是:给它布置任务,这些任务要求模型进行简单的on-the-fly
计算推理、识别训练中不可能出现的新模式、或迅速适应一个不常见的任务。我们设计了几个任务来测试这类能力:- 首先,我们测试
GPT-3
进行算术的能力。 - 其次,我们设计了几个任务,涉及到重排列
rearranging
、或者解扰unscrambling
单词,这些任务在训练过程中不太可能被完全看到。 - 第三,我们测试
GPT-3
解决SAT-style
的类比analogy
问题的能力。 - 最后,我们在几个定性任务上测试
GPT-3
,包括在一个句子中使用新词、纠正英语语法、以及新闻文章的生成。
我们即将发布合成数据集
synthetic dataset
,希望能够激励对语言模型测试期间行为的进一步研究。- 首先,我们测试
a. 算术
为了测试
GPT-3
在没有特定任务训练的情况下进行简单算术运算的能力,我们开发了一个10
个测试任务组成的一个集合,其中包含用自然语言问GPT-3
一个简单的算术问题:- 两位数加法
2 digit addition: 2D+
:要求模型从[0, 100)
之间随机均匀抽取两个整数相加。它的问题形式为:Q: What is 48 plus 76? A: 124
。 - 两位数减法
2 digit subtraction: 2D-
:要求模型从[0, 100)
之间随机均匀抽取两个整数相减,答案可能为负数。它的问题形式为:Q: What is 34 minus 53? A: -19
。 - 三位数加法
3 digit addition: 3D+
:要求模型从[0, 1000)
之间随机均匀抽取两个整数相加。 - 三位数减法
3 digit subtraction: 3D-
:要求模型从[0, 1000)
之间随机均匀抽取两个整数相减。 - 四位数加法
4 digit addition: 4D+
:要求模型从[0, 10000)
之间随机均匀抽取两个整数相加。 - 四位数减法
4 digit subtraction: 4D-
:要求模型从[0, 10000)
之间随机均匀抽取两个整数相减。 - 五位数加法
5 digit addition: 5D+
:要求模型从[0, 100000)
之间随机均匀抽取两个整数相加。 - 五位数减法
5 digit subtraction: 5D-
:要求模型从[0, 100000)
之间随机均匀抽取两个整数相减。 - 两位数乘法
2 digit multiplication: 2Dx
:要求模型从[0, 100)
之间随机均匀抽取两个整数相乘。它的问题形式为:Q: What is 24 times 42? A: 1008
。 - 一位数的复合运算
One-digit composite: 1DC
:要求模型从[0, 10)
之间随机均匀抽取三个整数进行复合运算,操作数是从中+,-,*
随机采样的,其中最后两个整数周围有括号。它的问题形式为:Q: What is 6+(4*8)? A: 38
。
在所有十个任务中,模型必须准确地生成正确的答案。对于每项任务,我们生成一个由
2000
个随机任务实例组成的数据集,并在这些实例上评估所有模型。- 两位数加法
首先,我们评估
GPT-3
在few-shot setting
下的表现,结果如下图所示。在加法和减法方面,
GPT-3
在位数较少时性能较好,在两位数加法上达到100%
的准确率,在两位数减法上达到98.9%
的准确率,在三位数加法上达到80.2%
的准确率,在三位数减法上达到94.2%
的准确率。模型性能随着位数的增加而下降,但是
GPT-3
在四位数的运算中仍能达到25% - 26%
的准确率,在五位数的运算中仍能达到9% - 10%
的准确率。这表明至少某些能力可以泛化到更多的位数。在乘法方面,
GPT-3
在两位数乘法上也达到了29.2%
的准确率,这是一个计算量特别大的运算。最后,
GPT-3
在个位数的组合运算中达到了21.3%
的准确率,这表明它有一些超越单个运算的鲁棒性。
作者注:模型性能从第二大模型(
GPT-3 13B
)到最大的模型(GPT-3 175B
)有一个明显的跳跃。如上图所示,小一些的模型在所有这些任务上的表现都很差,即使是
130
亿个参数的模型也只能解决一半的两位数加减运算,而在所有其它运算上的准确率都不到10%
。one-shot
和zero-shot
的性能相对于few-shot
而言有所下降,这表明对任务的适应(或者至少是对任务的识别)对正确执行这些计算很重要。然而,one-shot
性能仍然相当强大,甚至GPT-3 175B
的zero-shot
性能也显著优于所有小一些模型的one-shot
。下表给出了完整的GPT-3
的所有三种setting
。为了抽查模型是否只是在记忆特定的算术问题,我们把测试集中的三位数算术问题以
<NUM1> + <NUM2> =
和<NUM1> plus <NUM2>
两种形式在训练数据中进行搜索。在2000
个加法问题中,我们只发现了17
个匹配的答案(0.8%
)。在2000
个减法问题中,我们仅发现了2
个匹配的答案(0.1%
)。这表明只有一小部分的正确答案可以被记住。此外,对错误答案的检查显示:模型经常在诸如没有进位
1
这种问题上犯错,这表明模型实际上是在尝试进行相关的计算,而不是记忆一个表格。进位
1
:例如3 + 9 = 12
,十位上的数字1
就是一种进位。如果没有进位1
,就变成3 + 9 = 2
。总体而言,
GPT-3
在few-shot/one-shot
甚至zero-shot
的setting
中对复杂的算术表现出reasonable
的熟练性proficiency
。所有模型规模在所有算术任务上的性能:
b. 单词扰乱和操作任务
为了测试
GPT-3
从几个样本中学习新的symbolic manipulation
的能力,我们设计了一组5
个character manipulation
任务。每项任务包括给模型一个被扰乱scrambling
、增加、或删除的字符组合所扭曲的单词,要求模型恢复原来的单词。这五项任务是:- 字母循环
cycle letters in word: CL
:给模型一个字母循环的单词,然后是=
符号,并期望模型能够生成原始单词。如,lyinevitab = inevitably
。 - 除了第一个字符和最后一个字符以外,所有其它字母的顺序都被扰乱(
A1
):给模型一个扰乱的单词,其中除了第一个字符和最后一个字符以外所有其它字母的顺序都被扰乱,模型必须输出原始单词。如,criroptuon = corruption
。 - 除了第一个字符和最后两个字符以外,所有其它字母的顺序都被扰乱(
A2
):给模型一个扰乱的单词,其中除了第一个字符和最后两个字符以外所有其它字母的顺序都被扰乱,模型必须输出原始单词。如,opoepnnt -> opponent
。 - 随机插入单词
random insertion in word: RI
:在一个单词的每个字母之间随机插入一个标点或空格字符,模型必须输出原始单词。如:s.u!c/c!e.s s i/o/n = succession
。 - 反转单词
reversed word: RW
:给模型一个倒着拼写的单词,模型必须输出原始词。如:stcejbo -> objects
。
对于每个任务,我们生成
10000
个样本,其中我们选择的是由《Natural language corpus data》
衡量的长度超过4
个字符且少于15
个字符的top 10000
个最高频的单词。下图给出了
few-shot
的结果( $ K=100 $ )。任务性能随着模型大小的增加而趋于平稳增长。GPT-3 175B
模型在RI
任务上取得了66.9%
的成绩,在CL
任务上取得了38.6%
的成绩,在A2
任务上取得了40.2%
的成绩,在A1
任务上取得了15.1%
的成绩(这个任务比A2
更难,因为只有第一个字母和最后一个字母被固定)。没有一个模型能完成RW
任务。图形有误?根据后面的图表,
GPT-3 175B
在one-shot/few-shot setting
中在RW
任务上的准确率为0.48/0.44
。在
one-shot setting
中,表现明显较弱(下降一半或更多)。而在zero-shot setting
中,模型很少能够完成任务(如下表所示)。这表明模型确实在测试期间学习了这些任务,因为模型无法zero-shot
执行,而这些任务是人工构造的因此不太可能出现在预训练数据集中(尽管我们不能肯定地确认这一点)。- 字母循环
我们可以通过绘制
in-context learning curve
来进一步量化性能,该曲线展示了任务性能与in-context
样本的关系。我们在下图中展示了Symbol Insertion
任务的in-context learning curve
。可以看到:较大的模型能够越来越有效地利用in-context
信息,包括任务样本和自然语言任务描述natural language task description
。虚线:没有
prompt
;实线:包含prompt
。较大的模型对上下文信息的利用越来越有效。大型模型的in-context learning curves
越陡峭,则表明从contextual information
中学习一个任务的能力越好。最后,值得补充的是,解决这些任务需要
character-level
操作,而我们的BPE
编码是在单词的significant fraction
上操作的(平均每个token
约为0.7
个单词),所以从语言模型的角度来看,成功完成这些任务不仅需要操作BPE token
,还需要理解和拉开pulling apart
它们的子结构。另外,
CL, A1, A2
不是一一映射(也就是说,解扰的单词unscrambled word
不是扰动的单词scrambled word
的确定函数),需要模型进行一些搜索从而找到正确的unscrambling
。因此,所涉及的技能似乎需要模式匹配和计算。所有模型在所有
scramble
任务上的性能:图表有误,
Wordscramble(few-shot)
图中的reversed words
(紫色曲线)与reversed words
图对不上。
c. SAT 类比
我们收集了一组
374
个SAT analogy
问题。类比analogy
是一种选择题的风格,在2005
年之前构成了SAT
大学入学考试的一个部分。一个典型的例子是:xxxxxxxxxx
audacious is to boldness as (a) sanctimonious is to hypocrisy (b) anonymous is to identity (c) remorseful is to misdeed (d) deleterious is to result (e) impressionable is to temptation学生需要选择这五个
word pair
中的哪一个与原始的word pair
有相同的关系。在这个例子中,答案是sanctimonious is to hypocrisy
。在这个任务中,
GPT-3
在few-shot/one-shot/zero-shot setting
中达到65.2%/59.1%/53.7%
的准确率。相比之下,大学申请人的平均得分是57%
,随机猜测的得分是20%
。如下图所示,结果随着模型规模的扩大而提高,与130
亿个参数的模型相比,GPT-3 175B
提高了10%
以上。不同模型规模之间的效果差异越大,则越表明
in-context learning
的价值。
d. 新闻文章生成
GPT-2
定性地测试了生成人工合成的新闻文章的能力:给定人写的prompt
(由似是而非的新闻故事的第一句话组成),然后模型进行条件采样。相对于GPT-2
,GPT-3
的训练数据集中新闻文章的占比要小得多,因此试图通过原始的无条件采样来生成新闻文章的效果较差。例如,GPT-3
经常将新闻文章的第一句话解释为一条推文,然后发布合成的response
或者follow-up
推文。为了解决这个问题,我们通过在模型的上下文中提供三篇
previous
的新闻文章作为条件,运用了GPT-3
的few-shot learning
能力。基于新闻的标题和副标题,GPT-3
能够可靠地生成新闻体裁的短文。为了衡量
GPT-3
新闻文章的生成质量,我们决定测量人类区分GPT-3
生成的文章和真实文章的能力。为此,我们从newser.com
网站上任意选择了25
个文章的标题和副标题(平均长度215
个单词)。然后我们从四个语言模型中生成了这些标题和副标题的completion
,这些模型的大小从125M
到175B
的参数规模。对于每个模型生成的结果,我们向大约80
民美国的参与者展示了一个测验:真实的标题和副标题,后面跟着人类写的文章或模型生成的文章。参与者要求指出该文章是否是:“非常可能是人写的”、“更可能是人写的”、“我不知道”、“更可能是机器写的”、“非常可能是机器写的”。我们选择的文章不在模型的训练集中,模型的输出被格式化从而以程序化方式选择,从而防止人为的精挑细选。所有的模型都使用相同的上下文来条件输出,并以相同的上下文大小来进行预训练,而且每个模型都使用相同的文章标题和副标题作为
prompt
。然而,我们也做了一个实验来控制参与者的努力和注意力,这个实验遵循相同的格式,但是故意让模型生成的文章变差。这是通过从一个control model
生成文章来实现的:一个没有上下文以及被增加了输出随机性的160M
参数的模型。对于故意的坏文章(根据
control model
生成的),人类检测出它是由模型生成的平均准确率(每个参与者的正确回答与非中性答案的比率)是大约86%
,其中50%
是偶然水平的表现。相比之下,人类检测出由
175B
参数模型生成的文章的平均准确率仅有52%
,略高于偶然水平(参考下表)。下表还显示了每个模型与control model
之间平均准确率差异的two-sample T-Test
的结果。人类检测模型生成的文本的能力似乎随着模型大小的增加而降低:随着模型大小的增加,似乎有一个趋向于偶然准确率的趋势。此外,随着模型大小的增加,参与者在每个输出上花费更多的时间。
下图中,最佳拟合线是一个具有
95%
置信区间的幂律power law
曲线。
下图给出了
GPT-3
的合成文章的例子。正如评价所展示的那样,许多文本对于人类而言很难与真实的人类内容区分开来。事实不准确factual inaccuracy
可能是一个指标来判断文章是模型生成的,因为与人类作者不同,模型无法获得文章标题所指的具体事实或文章的写作时间。其它指标包括:重复repetition
、非连续性、不寻常的措辞unusual phrasing
。《Automatic detection of generated text is easiest when humans are fooled》
关于语言模型检测的相关工作表明:像GROVER
和GLTR
这样的自动判别器automatic discriminator
在检测模型生成的文本方面可能比人类评估员更成功。对这些模型的自动检测可能是未来研究的一个有前景的领域。《Automatic detection of generated text is easiest when humans are fooled》
也注意到:人类检测模型生成的文本的准确率,会随着人类观察到更多的token
而增加。为了初步调研人类在检测由GPT-3 175B
模型生成的较长文章方面的能力,我们从路透社选择了12
篇平均长度为569
个单词的world news
,并根据这些文章从GPT-3
生成了平均长度为498
个单词的completion
(比我们最初的实验要多298
个单词)。按照上述方法,我们进行了两个实验,每个实验都在大约80
名美国参与者身上进行,从而比较人类检测由GPT-3
和一个control model
所生成的文章的能力。我们发现:人类在检测
control model
生成的文章的准确率为88%
,而检测GPT-3 175B
生成的文章的准确率为52%
(勉强高于随机水平)。这表明,对于长度在500
个单词左右的新闻文章,GPT-3 175B
继续生成人类难以区分的文章。
e. 学习使用新颖的单词
发展语言学
developmental linguistics
研究的一项任务是学习和利用新词的能力,例如在仅看到一次某个单词的定义之后使用该单词,或者相反(仅看到某个单词的一次用法之后推断出该词的含义)。这里我们对GPT-3
在前者的能力上进行定性测试。具体而言,我们给GPT-3
提供一个不存在的单词的定义,如Gigamuru
,然后要求GPT-3
在一个句子中使用它。我们提供了前面的一到五个样本,这些样本包括一个不存在的单词的定义以及在一个句子中使用。因此,对于这些
previous
样本而言是few-shot
,但是对于这个具体的新颖的单词而言是one-shot
。下表给出了我们生成的六个样本。所有的定义都是人类生成的,第一个答案是人类生成的作为条件,而后面的答案则是
GPT-3
生成的。这些例子是一次性连续生成的,我们没有遗漏或重复尝试任何prompt
。在所有情况下,生成的句子似乎都是对该单词的正确或者至少是合理的使用。在最后一个句子中,模型为screeg
一词生成了一个合理的连接词(即screeghed
),尽管该词的使用略显突兀。总体而言,GPT-3
似乎至少能熟练地完成在句子中使用新词的任务。黑体字是
GPT-3
的completion
,纯文本是人类的prompt
。在第一个样本中,prompt
和completion
都是由人类提供的,然后作为后续样本的条件,其中GPT-3
收到successive additional prompts
并提供completions
。除了这里显示的条件外,没有任何task-specific
的信息提供给GPT-3
。
f. 纠正英语语法
另一项非常适合
few-shot learning
的任务是纠正英语语法。我们测试GPT-3
在few-shot learning
下的表现,给出的prompt
形式是:Poor English Input: <sentence>\n Good English Output: <sentence>
。我们为GPT-3
提供一个人类生成的纠正,然后要求模型再纠正五个,结果如下图所示。黑体字是
GPT-3
的completion
,纯文本是人类的prompt
。在最初的几个样本中,prompt
和completion
都是由人类提供的,然后作为后续样本的条件,其中GPT-3
收到successive additional prompts
并提供completions
。除了这里显示的几个样本作为条件和Poor English input/Good English output
框架以外,没有任何task-specific
的信息提供给GPT-3
。我们注意到:
poor
和good
英语之间的差异是复杂complex
的、contextual
的、有争议contested
。正如提到房屋租赁的例子所示,模型对什么是good
假设甚至会导致它出错(在这里,模型不仅调整了语法,而且还以改变含义的方式删除了cheap
一词)。
6.3 衡量和防止对 benchmark 的记忆
由于我们的训练数据集来自于互联网,我们的模型有可能是在某些
benchmark
的测试集上进行了训练(即,训练数据集包含了benchmark
的测试集)。从internet-scale
数据集中准确地检测测试污染是一个新的研究领域。虽然训练大型模型而不调查污染contamination
是常见的做法,但是鉴于预训练数据集的规模越来越大,我们认为这个问题越来越需要关注。GPT-2
进行了事后的overlap
分析,其分析结果相对而言令人鼓舞:由于被污染的数据比例很小(通常只有百分之几),所有这并未对报告的结果产生重大影响。GPT-3
在某种程度上是在不同的制度下运作的。- 一方面,
GPT-3
的数据集和规模比GPT-2
所用的大两个数量级,并且包括大量的Common Crawl
,从而增加了污染contamination
和记忆memorization
的可能性。 - 另一方面,即使是大量的数据,
GPT-3 175B
也没有对它的训练集有较大的过拟合(在一个held-out
验证集上衡量的),如下图所示。
因此,我们预计污染可能是经常发生的,但是其影响可能没有担心的那么大。
下图中,虽然训练
loss
和验证loss
之间存在一定的gap
,但这种gap
随着模型规模和训练时间的增加而增长得很小,这表明大部分gap
来自于难度difficulty
的不同,而不是过拟合。- 一方面,
我们最初试图通过主动搜索并消除我们训练数据中与所有
benchmark
验证集和测试集之间的overlap
,从而解决污染问题。不幸的是,一个错误导致只能从训练数据中部分删除所有检测到的overlap
。由于训练成本,重新训练模型是不可行的。为了解决这个问题,我们详细调研了剩余检测到的overlap
是如何影响结果的。对于每个
benchmark
,我们产生了一个clean
版本,它删除了所有可能泄露的样本,这些样本被定义为:与预训练数据集中的任何内容有13-gram overlap
(或者当样本短于13-gram
时整个样本的overlap
)。我们的目标是非常保守地标记任何有可能是污染的内容,以便产生一个干净的子集。具体过滤程序参考附录。数据集的污染样本占比定义为:潜在污染的样本数量除以数据集的样本总数。
然后我们在这些
clean benchmark
上评估GPT-3
,并与原始分数进行比较:- 如果
clean benchmark
上的得分与原始得分相似,这表明即使存在污染,也不会对报告结果产生重大影响。 - 如果
clean benchmark
上的得分较低,则表明污染可能会夸大结果。
下图对这些结果进行了总结(下图的
x
轴是干净样本的占比)。尽管潜在的污染往往很高(四分之一的benchmark
的污染样本占比超过了50%
),但是在大多数情况下,性能的变化可以忽略不计,而且我们没有看到证据表明:污染水平和性能差异是相关的。我们的结论是:要么我们的保守方法大大高估了污染,要么污染对性能没有什么影响。因为作者这里的方法是:命中了
13-gram overlap
就认为是污染。其实这里有很多是假阳性。- 如果
接下来我们更详细地调查一些具体的案例。在这些案例中,要么模型在清理后的版本上表现明显更差,要么潜在的污染非常高使得测量性能差异变得困难。
我们分析出六组需要进一步调查的
benchmark
,包括Word Scrambling
、Reading Comprehension
(QuAC
,SQuAD2
,DROP
)、PIQA
、Winograd
、language modeling task
(Wikitext
,1BW
)、以及German to English translation
。由于我们的overlap
分析被设计得极为保守,因此我们预计它将产生一些假阳性false positive
结果。阅读理解:我们最初的分析将来自
QuAC
,SQuAD2
,DROP
的90%
以上的任务样本标记为潜在的污染,这个比例如此之大以至于在一个干净的子集上测量差异都很困难(子集太小)。然而,经过人工检查,我们发现:对于我们检查的每一个overlap
,在所有的三个数据集中,源文本存在于我们的预训练数据集中,但是question/answer
的pair
却不存在,这意味着模型仅获得背景信息,无法记住特定问题的答案。德文翻译:我们发现
WMT16 German-English
测试集中有25%
的样本被标记为潜在的污染,对应的总效果为1-2 BLEU
。经检查,没有一个标记污染的样本包含与神经机器翻译训练数据相似的paired sentence
,碰撞是单语匹配monolingual match
,主要是新闻中讨论的事件片段。反转词和变形词
anagrams
:这些任务的形式是:alaok = koala
。由于这些任务的文本长度较短,我们使用2-grams
进行过滤(忽略标点符号)。在检查了被标记的重叠flagged overlap
之后,我们发现它们通常不是训练集中真正的反转或解扰的样本,而是回文或不重要的解扰,如kayak = kaya
。overlap
的数量很少,但是移除这些不重要的任务trivial tasks
会导致难度的增加,从而产生虚假的信号。与此相关,
symbol insertion
任务显示出比较高的overlap
,但是对成绩没有影响。这是因为该任务涉及从一个单词中删除非字母的字符,而overlap analysis
本身忽略了这些字符,导致了许多虚假的匹配。PIQA
:重叠分析将29%
的样本标记为污染,并观察到clean
子集的性能绝对下降了3%
(相对下降4%
)。虽然测试集是在我们的训练集创建之后发布的,而且其label
是hidden
的,但是众包数据集创建者使用的一些网页也被包含在我们的预训练数据集中。我们发现,在一个25x
(二十五倍)更小的模型(因此具有更小的容量来记忆)中也有类似的性能下降,这导致我们怀疑这种shift
可能是统计上的bias
而不是memorization
。这些被复制的样本可能只是更容易解决,而不是被模型记住。不幸的是,我们无法严格地证明这个假设。因此,我们将PIQA
的结果用星号标出,以表示这种潜在的污染。Winograd
:重叠分析标记了45%
的样本,并发现在clean
子集上性能下降了2.6%
。对重叠数据的人工检查表明:132 Winograd schemas
实际上存在于我们的预训练数据集中,尽管其呈现的格式与我们向模型呈现的任务不同。虽然性能下降不大,但是我们将Winograd
的结果用星号标出。语言建模:我们发现在
GPT-2
中测量的4
个维基百科语言建模benchmark
,加上Children’s Book Test: CBT
数据集,几乎完全包含在我们的预训练数据集中。由于我们无法在这里可靠地提取一个干净的子集,所以我们没有报告这些数据集的结果,尽管我们在开始这项工作时打算这样做。我们注意到,Penn Tree Bank: PTB
由于其年代久远而未受影响,因此成为我们的主要的语言建模benchmark
。
我们还检查了污染程度较高但是对性能影响接近于零的数据集,仅仅是为了验证实际存在的污染程度。这些数据集似乎经常包含 假阳性
false positive
:要么没有实际的污染,要么虽然有污染但是没有泄露任务的答案。一个明显的例外是
LAMBADA
,它似乎有大量真正的污染,但是对性能的影响非常小,clean
子集的得分在完整数据集的0.5%
以内。另外,严格而言,我们的fill-in-the-blank
格式排除了最简单的memorization
的形式。尽管如此,由于我们在本文中在LAMBADA
上取得了非常大的收益,所以在这里指出了潜在的污染。我们污染分析的一个重要限制是:我们无法确定
clean
子集是来自原始数据集相同的分布。还有一个可能是:memorization
夸大了结果(使得污染数据集上效果更好),但是同时又恰恰被一些统计上的bias
所抵消(干净数据集更简单所以效果也很好),导致clean
子集的效果持平。然而,shift
接近于零的任务数量非常多,从而表明这是不可能的。而且我们也观察到小模型的shift
没有显著的差异,这不太可能是记忆的。总之,我们已经尽了最大努力来衡量和记录数据污染的影响,并根据严重程度来分析或直接删除有问题的结果。在设计
benchmark
和训练模型时,要解决这个对于整个领域而言重要而微妙的问题,还有很多工作要做。关于我们分析的更详细的解释,参考附录。
6.4 局限性
GPT-3
以及我们对它的分析都存在一些局限性:首先,尽管
GPT-3
在数量和质量上都有很大的改进,尤其是和它的直接前身GPT-2
相比,但是它在文本合成和几个NLP
任务中仍然有显著的弱点。在文本合成方面,虽然整体质量很高,但是
GPT-3
样本有时仍会在document-level
重复自己的语义。在较长的段落中开始失去连贯性,自相矛盾,以及偶尔包含非连续的句子或段落。我们将发布一个由500个
未经整理的无条件unconditional
的样本组成的集合,以帮助更好地了解GPT-3
在文本合成方面的限制和优势。即,生成长文本的性能不行。
在离散
discrete
的语言任务领域,GPT-3
似乎在 "常识性物理 "方面有特殊的困难,尽管在测试这一领域的一些数据集(如PIQA
)上表现良好。具体来说,GPT-3
对 ”如果我把奶酪放进冰箱,它会融化吗?“ 这类问题有困难。即,无法处理常识性问题。
从数量上看,
GPT-3
的in-context learning
性能在我们的benchmark
的suite
上有一些明显的差距,特别是在一些 “比较” 任务上,例如确定两个词在一个句子中的使用方式是否相同(WIC
数据集),或一个句子是否暗示另一个句子(ANLI
数据集),以及在阅读理解任务的一个子集。鉴于GPT-3
在许多其他任务上的强大的few-shot
性能,这一点尤其引人注目。即,无法处理
comparison
任务。
GPT-3
有几个结构和算法上的局限性,这可能是上述一些问题的原因。我们专注于探索自回归语言模型中的in-context learning
行为,因为用这种model class
进行采样和计算likelihood
是很简单的。因此,我们的实验不包括任何双向架构bidirectional architecture
或其他训练目标,如去噪denoising
。这与最近的许多文献有明显的不同,这些文献记录了在使用这些方法时(双向架构、去噪目标)比标准语言模型有更好的微调性能(T5
)。因此,我们的设计决定的代价是:在经验上受益于双向性
bidirectionality
的任务上,性能可能会更差。这可能包括fill-in-the-blank
任务、涉及回看looking back
和比较两段内容的任务、或者需要re-reading
或仔细考虑一个长的段落然后产生一个非常短的答案的任务。这可能是对GPT-3
在一些任务中few-shot
性能落后的解释,如WIC
(涉及比较一个词在两个句子中的使用)、ANLI
(涉及比较两个句子,看其中一个句子是否暗示另一个句子)、以及几个阅读理解任务(如QuAC
和RACE
)。根据过去的文献,我们还猜想:一个大型的双向模型在微调方面会比
GPT-3
更强。以GPT-3
的规模来创建一个双向模型,和/或尝试使双向模型与few-shot/zero-shot learning
一起工作,是未来研究的一个有希望的方向,并可以帮助实现两全其美best of both worlds
。本文所描述的一般方法(
scale
任何类似语言模型的模型,无论是自回归的还是双向的)的一个更根本的局限性是:它最终可能会遇到(或者可能已经遇到)预训练目标的限制。- 首先,我们目前的预训练目标对每个
token
的权重是相同的,并且缺乏一个概念:即什么是最重要的预测,什么是不重要的。《How much knowledge can you pack into the parametersof a language model?》
展示了对感兴趣的实体进行自定义预测customizing prediction
的好处。 - 另外,在自监督目标下,任务规范
task specification
依赖于强迫下游目标任务成为一个预测问题prediction problem
。然而,最终有用的语言系统(例如虚拟助手)可能更好地被认为是执行goal-directed
动作,而不仅仅是做出预测。 - 最后,大型预训练的语言模型并不以其他领域的经验为基础,如视频或现实世界的物理交互,因此缺乏大量的关于世界的背景(
《Experience grounds language》
)。
由于所有这些原因,纯粹的自监督预测的
scaling
可能会遇到限制,而用不同的方法进行增强可能是必要的。这方面有希望的未来方向可能包括:从人类学习目标函数(《Fine-tuning language models from human preferences》
)、用强化学习进行微调、或增加额外的模式(如图像)以提供基础的和更好的世界模型(《Uniter: Learning universal image-text representations》
)。- 首先,我们目前的预训练目标对每个
语言模型普遍存在的另一个限制是预训练期间的样本效率低。虽然
GPT-3
在测试时的样本效率方面前进了一步,更接近于人类的样本效率(one-shot/zero-shot
),但它在预训练期间看到的文本仍然比人类在其一生中看到的多得多。提高预训练的样本效率是未来工作的一个重要方向,它可能来自于在物理世界physical world
的基础上提供额外的信息,或者来自于算法的改进。与
GPT-3
中的few-shot learning
相关的一个限制(或者至少是不确定性)是:few-shot learning
是否真的在推理时间 ”从头开始“ 学习新的任务,或者它是否只是识别和确定它在训练期间学到的任务。这里可能存在一个谱系spectrum
,从训练集的样本与测试集的样本完全相同的分布、到识别相同的任务但以不同的形式、到适应通用任务(如QA
)的特定风格、到完全从头学习一项技能。GPT-3
在这个spectrum
上的位置也可能因任务而异:- 合成任务
synthetic task
,如word scrambling
或定义无意义的词,似乎特别有可能从头学起。 - 翻译显然必须在预训练中学习,尽管可能来自与测试数据在组织和风格上非常不同的数据(即数据分布不同)。
最终,我们甚至不清楚人类从头开始学习什么,以及从先前的示范中学习什么。即使是在预训练中组织不同的示范,并在测试时识别它们,也是语言模型的一个进步。但尽管如此,准确地理解
few-shot learning
的工作原理是未来研究的一个重要的未探索的方向。- 合成任务
GPT-3
模型规模类似的模型的一个限制是:无论目标函数或算法如何,它们既昂贵又不方便推理。目前这可能对GPT-3
规模的模型的实用性构成了挑战。解决这个问题的一个可能的未来方向是将大型模型蒸馏,使之成为针对特定任务的可管理大小。像GPT-3
这样的大型模型包含了非常广泛的技能skill
,其中大部分技能在特定任务中是不需要的,这表明原则上aggressive distillation
是可能的。模型蒸馏在普通情况下已被很好地探索(
《Improving multi-task deep neural networks via knowledge distillation for natural language understanding》
),但还没有在千亿级参数的规模上尝试过。将模型蒸馏应用于这种规模的模型可能会有新的挑战和机遇。最后,
GPT-3
与大多数深度学习系统有一些共同的局限性:模型的决定不容易解释。
模型对新的输入的预测不一定能很好地校准
well-calibrated
,正如在标准benchmark
上观察到的比人类高得多的性能方差,并且模型保留了它所训练的数据的bias
。这个
issue
(数据中的bias
可能导致模型产生刻板stereotyped
的、或偏见prejudiced
的内容)从社会的角度来看是特别值得关注的,并将在下一节中讨论。
6.5 广泛的影响
语言模型对社会有广泛的有益的
application
,但它们也有潜在的有害的application
。这里,我们着重讨论语言模型的潜在危害,并不是因为我们认为危害一定更大,而是为了研究和减轻危害。像GPT-3
这样的语言模型所带来的更广泛的影响是很多的,这里我们主要关注两个主要问题:- 潜在地故意滥用
GPT-3
等语言模型。 GPT-3
等模型中的bias
、fairness
和representation
等issue
。
我们还简要地讨论了能源效率
energy efficiency
问题。- 潜在地故意滥用
6.5.1 滥用语言模型
语言模型的恶意使用在某种程度上很难预测,因为它们往往涉及在一个非常不同的环境中重新利用语言模型,或者用于与研究人员意图不同的目的。为了帮助解决这个问题,我们可以从传统的安全风险评估框架
security risk assessment framework
来考虑,该框架概述了一些关键步骤,如识别威胁和潜在影响、评估可能性,以及确定将风险作为可能性和影响的组合。我们讨论三个因素:潜在滥用的application
、威胁行主体threat actor
、外部激励结构external incentive structure
。潜在滥用的
application
:社会上,任何依赖于生成文本的有害活动都可以被强大的语言模型所增强。这方面的例子包括错误信息misinformation
、垃圾邮件、网络钓鱼、滥用法律和政府程序、欺诈性的学术论文写作、以及社交工程的假托social engineering pretexting
(假托是一种社交工程的形式,其中个体通过欺诈来获取特权数据)。许多这些application
的瓶颈在于写出足够高质量的文本。能产生高质量文本的语言模型可以降低开展这些活动的现有障碍,并提高其效果。语言模型滥用的潜力随着文本合成质量的提高而增加。在前面章节中,
GPT-3
有能力生成几段人们难以区分的合成内容,这代表了这方面的一个令人担忧的里程碑。威胁主体分析:威胁主体
actor
可以按照技能和资源水平来组织,从低级或中级技能和资源的主体(他们可能能够建立一个恶意产品)、到 ”高级持续性威胁“advanced persistent threats: APTs
(他们具有长期规划的高技能和资源丰富的团体,如国家支持的)。- 为了了解中低技能的主体是如何思考语言模型的,我们一直在监测那些经常讨论
misinformation
战术、恶意软件发布、以及计算机欺诈的论坛和聊天组。虽然我们确实发现在2019
年春季首次发布GPT-2
之后有大量关于滥用的讨论,但我们发现自那时以来,实验的实例较少,也没有成功的部署。此外,这些滥用的讨论与媒体对语言模型技术的报道相关联。由此,我们评估,来自这些主体的滥用威胁并不紧迫,但可靠性的重大改进可能会改变这种情况。 - 由于
APT
通常不在公开场合讨论,我们已经向专业的威胁分析人员咨询了涉及使用语言模型的可能APT
活动。自GPT-2
发布以来,在可能通过语言模型获得潜在收益的操作方面,我们没有看到明显的区别。评估结果是:语言模型可能不值得投入大量资源,因为没有令人信服的证据表明目前的语言模型明显优于目前生成文本的方法,而且targeting
或controlling
语言模型内容仍处于非常早期的阶段(即,语言模型的生成内容不受控)。
- 为了了解中低技能的主体是如何思考语言模型的,我们一直在监测那些经常讨论
外部激励结构:每个威胁主体团队也有一套战术
tactics
、技术techniques
和程序procedures
(TTPs
),他们依靠这些来完成他们的规划agenda
。TTPs
受到经济因素的影响,如可扩展性和部署的便利性。网络钓鱼在所有团体中都非常流行,因为它提供了一种低成本、低努力、高收益的方法来部署恶意软件和窃取登录凭证login credentials
。使用语言模型来增强现有的TTP
,可能会导致更低的部署成本。易用性是另一个重要的激励因素。拥有稳定的基础设施对
TTP
的采纳adoption
有很大影响。然而,语言模型的输出是随机的,尽管开发者可以约束语言模型的输出(例如使用top-k
截断),但在没有人类反馈的情况下,模型无法稳定地执行。如果一个社交媒体的虚假信息机器人disinformation bot
在99%
的时间里产生可靠的输出,而在1%
的时间里产生不连贯的输出,这仍然可以减少操作这个bot
所需的人力成本。但是,仍然需要人工过滤输出,这限制了操作的scalable
。根据我们对这个模型的分析以及对威胁主体和环境的分析,我们怀疑人工智能研究人员最终会开发出足够一致的和可引导
steerable
的语言模型,从而使恶意主体对它们更感兴趣。我们预计这将为更广泛的研究界带来挑战,并希望通过缓解研究、原型设计、以及与其他技术开发人员协调等等的组合来解决这个问题。
6.5.2 Fairness, Bias, and Representation
训练数据中存在的
bias
可能导致模型产生刻板stereotyped
的或偏见prejudiced
的内容。这是令人担忧的,因为model bias
可能会以不同的方式伤害相关群体的人。我们对模型中的bias
进行了分析,以便更好地理解GPT-3
在fairness, bias, and representation
方面的局限性。这里我们专注于与性别、种族和宗教有关的bias
。大体上,我们的分析表明:
- 互联网训练的模型具有
internet-scale bias
。 - 模型倾向于反映其训练数据中存在的刻板印象
stereotype
。
- 互联网训练的模型具有
性别:在我们对性别
bias
的调查中,我们重点关注性别gender
和职业occupation
之间的关联。我们发现,一般而言,当给定The {occupation} was a
(中性变体Neutral Variant
)这样的上下文时,职业后面跟随男性标识符identifier
的概率要高于女性(换句话说,它们是偏向男性的)。在我们测试的
388
种职业中,83%
的职业更有可能被GPT-3
用男性标识符来跟随。例如,我们通过向模型提供诸如The detective was a
的上下文,然后观察模型后续使用男性标识词(如:男人、男性等)或女性标识词(如:女人、女性等)的概率来衡量。具体而言,显示出较高教育水平的职业,如立法者legislator
、银行家或名誉教授,以及需要艰苦体力劳动的职业,如泥瓦匠、磨坊主和警长,都严重倾向于男性。更有可能被女性标识符跟随的职业包括助产士、护士、接待员、管家等。我们还测试了当我们把数据集(这里仅修改测试集,不修改预训练数据集)中每个职业的上下文转变为
The competent {occupation} was a
(有胜任能力的变体Competent Variant
),以及把上下文转变为The incompetent {occupation} was a
(无胜任能力的变体Incompetent Variant
)时,这些概率如何变化。我们发现:- 当以
The competent {occupation} was a
来提示时,大多数职业后面的男性标识符的概率甚至高于Neutral Variant
的情况。 - 当以
The incompetent {occupation} was a
来提示时,大多数职业仍然倾向于男性,其概率与我们最初的Neutral Variant
相似。
平均的
occupation bias
衡量为:那么平均的
occupation bias
对于Neutral Variant
为-1.11
、对于Competent Variant
为-2.14
、对于Incompetent Variant
为-1.15
。我们还使用两种方法对
Winogender
数据集进行了代词解析pronoun resolution
,这进一步证实了GPT-3
模型将大多数职业与男性联系起来的趋势。一种方法是测量模型正确分配代词为职业或参与者
participant
的能力。例如,我们给模型提供了一个上下文,如The advisor met with the advisee because she wanted to get advice about job applications. 'She' refers to the
,并在两个可能的选项(Occupation Option: advisor; Participant Option: advisee
)中找到了概率最低的选项。职业和参与者的词汇往往有与之相关的
societal bias
,比如假设大多数职业者默认为男性。我们发现,语言模型学习了其中的一些bias
,如倾向于将女性代词而不是男性代词与参与者联系起来。GPT-3 175B
在这项任务中拥有所有模型中最高的准确性(64.17%
)。在Occupant sentences
(正确答案是Occupation
选项的句子)中,GPT-3 175B
也是唯一一个对女性的准确率(81.7%
)高于对男性的准确率的模型(76.7%
)。这提供了一些初步证据,表明在bias issue
上,大模型比小模型更鲁棒。我们还进行了共现
co-occurrence
测试,即分析哪些词可能出现在其他预选词pre-selected word
的附近。 我们创建了一个模型输出样本集,对数据集中的每个prompt
生成800
个长度为50
的输出,温度为1
,top-p = 0.9
。对于性别,我们有诸如He was very
、She was very
、He would be described as
、She would be described as
等prompt
。我们使用一个现成的
POS tagger
查看了top 100
最受欢迎的词语中的形容词和副词。我们发现,女性更经常使用beautiful
和gorgeous
等以外表为导向的词语来描述,而男性则更经常使用范围更广的形容词来描述。下表显示了模型中
top 10
最受欢迎的描述性词语,以及每个词语与代词指示器pronoun indicator
共现的原始次数。“最受欢迎” 表示那些最偏向于某一类别的词,与其他类别相比,它们的共现较高。为了正确看待这些数字,我们还包括了每个性别的所有qualifying word
的平均共现次数。
- 当以
种族:为了研究
GPT-3
中的种族偏见racial bias
,我们在模型中加入了一些prompt
,如:The {race} man was very
、The {race} woman was very
、People would describe the {race} person as
,并为上述每个prompt
生成了800
个样本,其中{race}
被一个表示种族类别(如白人White
或亚洲人Asian
)的术语取代。然后,我们测量生成的样本中的单词共现word co-occurrence
。鉴于先前的研究表明,当改变职业等特征时,语言模型会产生不同情感的文本,我们探索了种族对情感的影响。我们使用Senti WordNet
测量了与每个种族共现的词语的情感。每个单词的情感从100
到-100
不等:正的分数表示positive word
(如wonderfulness: 100
、amicable: 87.5
),负的分数表示negative word
(如wretched: -87.5
、horrid: -87.5
),0
分表示中性词(如sloping
、chalet
)。应该注意的是,我们明确提示
prompting
模型谈论种族,这反过来又产生了聚焦种族特征的文本。这些结果不是来自于模型在自然环境下谈论种族,而是在一个实验环境中谈论种族。此外,由于我们是通过简单地查看单词的共现来测量情感的,所产生的情感可以反映社会历史因素。例如,与奴隶制的讨论有关的文本经常会有负面的情感,这可能导致在这种测试方法下的统计结果与负面的情感有关。
在我们分析的模型中,
Asian
的情感分一直很高,它在7
个模型中的3
个中排在第一位。另一方面,Black
的情感分一直很低,在7
个模型中的5
个中排名最低。这些差异在较大的模型规模中略有缩小。这一分析让我们了解到不同模型的bias
,并强调需要对情感、实体和输入数据之间的关系进行更复杂的分析。宗教:我们研究了哪些单词与无神论
Atheism
、佛教Buddhism
、基督教Christianity
、印度教Hinduism
、伊斯兰教Islam
和犹太教Judaism
相关的宗教术语共现。我们对每个prompt
产生800
个长度为50
的模型输出,其中温度为1
,top p = 0.9
。针对上述六个宗教类别中的每一个,我们的prompt
是{Religion practitioners} are
,例如Christians are
。然后,我们让模型自然地进行补全completion
,并创建了一个这种completion
的语料库,以研究单词的共现。下面是该模型输出的一个例子:与种族类似,我们发现模型对宗教术语进行关联从而表明有一些倾向性。例如,对于伊斯兰教,我们发现诸如斋月
ramada
、先知prophet
、清真寺mosque
等单词的共现比其他宗教高。我们还发现,诸如暴力violen
、恐怖主义terrorism
、恐怖分子terrorist
等单词在伊斯兰教中的共现高于其他宗教,并且在GPT-3
中,这些单词是伊斯兰教最受欢迎的top 40
个单词。进一步的
bias
和fairness
挑战:我们提出这个初步分析,是为了分享我们发现的一些bias
,以激励进一步的研究,并强调在大规模生成模型中刻画bias
的内在困难。我们期望这将是我们持续研究的一个领域,并很高兴与社区讨论不同的方法论。 我们认为本节的工作是主观的路标:我们选择了性别、种族和宗教作为出发点,但我们承认这种选择有其固有的主观性。我们的工作受到了关于描述模型属性以开发informative
标签的文献的启发,例如来自《Model cards for model reporting》
的模型报告的Model Card
。最终,重要的不仅仅是刻画语言系统中的
bias
,而且要进行干预。这方面的文献也很丰富,所以我们只对大型语言模型特有的未来方向提供一些简单的评论。为了给通用模型的effective bias prevention
铺平道路,有必要建立一个common vocabulary
,将这些模型的normative
、technical
和empirical
的关于缓解bias
的挑战联系起来。缓解工作不应该纯粹以指标驱动的目标来 ”消除“bias
,因为这已被证明有盲点,而是以整体的方式来处理。
6.5.3 能源使用
实际的大规模预训练需要大量的计算,而这是能源密集型的:训练
GPT-3 175B
在预训练期间消耗了几千petaflop/s-day
的计算,而1.5B
参数的GPT-2
模型只需要几十petaflop/s-day
,如下图所示。这意味着我们应该认识到这种模型的成本和效率。下图中,尽管
GPT-3 3B
比RoBERTa-Large
(355M
参数)几乎大10
倍,但两个模型在预训练期间都花费了大约50 petaflop/s-day
的计算。大规模预训练的使用也提供了另一个视角来看待大型模型的效率:我们不仅要考虑训练模型的资源,还要考虑这些资源是如何在模型的生命周期内摊销的,这些资源随后将被用于各种目的,并针对具体任务进行微调。尽管像
GPT-3
这样的模型在训练过程中会消耗大量的资源,但一旦训练完成,它们的效率就会出奇的高:即使使用完整的GPT-3 175B
,从一个训练好的模型中生成100
页的内容也只需要0.4
千瓦-小时的成本,或者只需要几分钱的能源成本。此外,像模型蒸馏这样的技术可以进一步降低这类模型的成本,使得我们采用这样的一种范式
paradigm
:训练单一的大规模模型,然后创造更有效的版本从而用于适当的环境。随着时间的推移,算法的进步也会自然而然地进一步提高此类模型的效率,这与图像识别和神经机器翻译中观察到的趋势相似。
6.6 附录
6.6.1 Common Crawl 过滤的细节
我们采用了两种技术来提高
Common Crawl
数据集的质量:过滤Common Crawl
、模糊去重fuzzy deduplication
。过滤
Common Crawl
:为了提高Common Crawl
的质量,我们开发了一种自动过滤的方法来去除低质量的文档。我们认为原始的WebText
是高质量文档,然后训练了一个分类器来区分WebText
和原始的Common Crawl
。然后,我们使用这个分类器对原始的Common Crawl
进行重新分类,优先处理那些被分类器预测为质量较高的文档。该分类器是使用逻辑回归分类器训练的,其特征来自
Spark
的标准的tokenizer
和HashingTF
。- 对于正样本,我们使用了精心处理的数据集,如
WebText
、Wikiedia
和我们的网络书籍语料库。 - 对于负样本,我们使用未经过滤的
Common Crawl
。
我们使用这个分类器对
Common Crawl
文档进行评分。如果满足以下条件,则对Common Crawl
中的文档进行保留:其中我们选择了
$ \alpha = 9 $ ,以便保留大部分被分类器打高分的文档,但是仍然包含一些out of distribution
的文档。 $ \alpha $ 的选择是为了与我们的分类器在WebText
上的分数分布相匹配。我们发现这种重新加权re-weighting
提高了数据质量(数据质量是由一系列out-of-distribution
的、生成式文本样本的损失所衡量)。- 对于正样本,我们使用了精心处理的数据集,如
为了进一步提高模型质量,防止过拟合(随着模型容量的增加,过拟合变得越来越严重),在每个数据集中,我们使用
Spark
的MinHashLSH
实现了10
个hash
,使用与上述分类相同的特征,模糊去重文档(即移除与其他文档高度重叠的文档)。我们还模糊地fuzzily
从Common Crawl
中删除了WebText
。总体而言,这使数据集的大小平均减少了10%
。
在对重复性和质量进行过滤后,我们还部分删除了
benchmark
数据集中出现的文本。
6.6.2 模型训练的细节
所有版本的
GPT-3
的训练配置:- 使用
$ \beta_1 = 0.9, \beta_2 = 0.95, \epsilon = 10^{-8} $ 的Adam
优化器。 - 将梯度的
global norm
裁剪为不超过1.0
。 - 使用余弦学习率,其中在
260B
个token
之后学习率降低到最大值的10%
,并以这个学习率继续训练。 - 在刚开始的
3.75
亿个token
,有一个线性的学习率warmup
。 - 在刚开始的
4B ~ 12B
个token
中,我们逐渐将batch size
从一个较小的值(32k token
)线性地增加到full value
(这个full value
取决于模型的大小)。 - 在训练过程中,我们对数据进行无放回采样(直到到达一个
epoch
的边界),从而尽量减少过拟合。 - 所有模型都使用
0.1
的weight decay
来提供少量的正则化。
- 使用
在训练过程中,我们总是在完整的
$ n_\text{ctx}= 2048 $ 个token context window
的序列上进行训练。当文档短于2048 token
时,我们将多个文档打包成一个序列,以提高计算效率。有多个文档的序列不以任何特殊的方式进行mask
,而是用一个特殊的文本结束符来划分序列中的文档,从而为语言模型提供必要的信息,从而推断出由这个特殊的文本结束符分开的context
是无关的。
6.6.3 测试集污染研究的细节
初始的训练集过滤:我们试图通过搜索所有测试集/验证集和我们的训练数据之间的
13-gram
重叠,从而在训练数据中删除出现在benchmark
中的文本。我们删除了命中的13-gram
以及它周围的200
个字符的窗口,将原始文件分割成碎片。出于过滤的目的,我们将gram
定义为一个小写的、以空格为界的、没有标点符号的单词。- 长度小于
200
个字符的碎片被丢弃。 - 被分割成
10
个以上碎片的文件被认为是被污染的,并被完全删除。 - 最初,只要命中了一次
13-gram
我们就删除了整个文件,但这过度地惩罚了长文件,如书籍的false positive
(可能测试集文章仅引用了一本书中的一句话而已)。 - 我们忽略了与
10
篇以上训练文档命中的13-gram
,因为检查显示这些13-gram
大多包含常见的短语、法律模板或类似的内容。我们希望模型能够学习这些,而不是移除这些重叠。
- 长度小于
重叠方法论:对于我们在前文中的
benchmark overlap analysis
,我们使用可变单词数量N
来检查每个数据集的重叠情况,其中N
是以单词为单位的5%
分位的样本长度(即,5%
的样本低于该长度),忽略了所有的标点符号、空白和大小写。- 由于在较低的
N
值下会出现虚假碰撞spurious collision
,我们在非合成任务中使用N = 8
的最小值。 - 出于性能方面的考虑,我们为所有任务设定了
N = 13
的最大值。
下表显示了
N
值和标记为dirty
的数据量。我们将dirty
样本定义为与任何训练文档有任何N-gram
重叠的样本,而clean
样本是没有碰撞的样本。与
GPT-2
使用bloom filter
计算测试集污染的概率边界不同,我们使用Apache Spark
计算所有训练集和测试集的精确碰撞。我们计算了测试集和我们完整的训练语料库之间的重叠,尽管我们只在 ”训练数据集“ 这一节中对40%
的过滤后的Common Crawl
文档进行了训练。每个
epoch
采样了44%
的过滤后Common Crawl
文档。由于这个分析所揭示的一个错误,上述的过滤在长文档(如书籍)上失败了。由于成本的考虑,在训练数据集的修正版上重新训练模型是不可行的。因此,几个语言建模
benchmark
和Children’s Book Test: CBT
几乎完全重叠,因此没有包括在本文中。下表为从最
dirty
到最clean
排序的所有数据集的重叠统计。如果一个数据集的样本与我们预训练语料库中的任何文档有一个N-gram
碰撞,我们就认为该样本是脏的。其中:Relative Difference Clean vs All
表示在benchmark
中只包含clean
样本与包含所有有本之间的性能变化百分比。Count
表示样本数量,Clean percentage
表示clean
样本占所有样本的百分比。Acc/F1/BLEU
表示对应的评估指标。
这些分数来自于不同的随机数种子,因此与本文中其他地方的分数略有不同。
- 由于在较低的
重叠结果:为了了解看过一些数据后对模型在下游任务中的表现有多大帮助,我们通过
dirtiness
过滤每个验证集和测试集。然后,我们对clean-only
样本进行评估,并报告clean score
和原始得分之间的相对百分比变化。- 如果
clean score
比原始得分差1%
或2%
以上,这表明模型可能对它所看到的样本过拟合。 - 如果
clean score
明显更好,我们的过滤方案可能需要尽可能过滤掉dirty
样本。
对于那些包含来自网络的背景信息
background information
(但不是answer
信息)的数据集(比如SQuAD
,它来自维基百科)或长度小于8
个单词的样本(我们在过滤过程中忽略了这些样本,除了words crambling
任务会考虑过滤这些样本),这种重叠度量往往显示出很高的误报率。一个例子是
DROP
数据集,这是一个阅读理解任务,其中94%
的样本是dirty
的。回答问题所需的信息在一段话中(这段话被馈入模型),所以在训练集中看到了这段话而没有看到问题和答案并不意味着构成作弊。我们确认,每个匹配的训练文件都只包含源段落,而没有数据集中的问题和答案。 对性能下降的更可能的解释是:过滤后剩下的6%
的样本具有和dirty
样本略有不同的分布。即,
DROP
任务中,过滤后剩下的样本更难。下图显示,随着数据集的污染程度增加(从
x
轴的100%
到0%
),clean/all fraction
的方差也在增加,但没有明显的偏向于改善或降低性能。这表明,GPT-3
对污染相对不敏感。- 如果
6.6.4 训练语言模型的计算量
下图给出了语言模型训练的近似计算量。作为一个简化的假设,我们忽略了注意力操作,因为对于这些模型而言,注意力操作通常占用不到总计算量的
10%
。计算量结果可以下表中看到,并在表的标题中进行了解释。
- 最右列,先看每个训练
token
的参数量。由于T5
使用的是encoder-decoder
模型,在前向传播或反向传播过程中,每个token
只有一半的参数是活跃的。 - 然后我们注意到:在前向传播中,每个
token
都参与了每个活跃参数的一次加法和一次乘法(忽略了注意力)。然后我们再加上一个3
倍的乘数,以考虑到反向传播(因为计算 $ \frac{\partial \text{params}}{\partial\text{loss}} $ 和 $ \frac{\partial \text{acts}}{\partial\text{loss}} $ 使用的计算量与前向传递相似)。 - 结合前面两个数字,我们得到每个参数每个
token
的总运算量。我们用这个值乘以总的训练token
数量和总的参数量,得出训练期间使用的总flops
数。我们同时报告了flops
和petaflop/s-day
。
- 最右列,先看每个训练
6.6.5 合成新闻文章的人工质量评估
这里包含了测量人类区分
GPT-3
生成的合成新闻文章和真实新闻文章能力的实验细节。我们首先描述了对200
个单词的新闻文章的实验,然后描述了500
个单词的新闻文章的初步调查。参与者:我们招募了
718
名参与者来参加6
个实验。97
名参与者因未能通过internet check question
而被排除,剩下的共有621
名参与者:343
名男性,271名
女性,以及7
名其他。- 参与者的平均年龄为
38
岁。 - 所有参与者都是通过
Positly
招募的,Positly
拥有一份来自Mechanical Turk
的高绩效工作者白名单。 - 所有参与者都是美国人,但没有其他方面的限制。
- 参与者的报酬是
12
美元,根据试运行确定的60
分钟的任务时间估算。 - 为了确保每次实验测验的参与者样本都是独一无二的,参与者不允许参加一次以上的实验。
- 参与者的平均年龄为
程序和设计:我们任意选择了
2020
年初出现在newser.com
的25
篇新闻文章。我们使用文章的标题和副标题来产生125M
、350M
、760M
、1.3B
、2.7B
、6.7B
、13.0B
和200B
(GPT-3
)个参数的语言模型的输出。每个模型对每个问题产生五个输出,并自动选择字数最接近人类写的文章的输出。这是为了尽量减少文本长度对参与者判断的影响。每个模型的输出程序都是一样的,只是去掉了intentionally bad control model
,如正文中所述。在每个实验中,一半的参与者被随机分配到
quiz A
,一半被随机分配到quiz B
。每个quize
由25
篇文章组成:一半(12-13
)是人写的,一半(12-13
)是模型生成的。quiz A
中人写的文章在quiz B
被模型自动生成。quiz B
中人写的文章在quiz A
被模型自动生成。
测验问题的顺序对每个参与者都是随机的。参与者可以留下评论,并被要求说明他们以前是否看过这些文章。参与者被要求在测验期间不要查找文章或其内容,在测验结束时被问及他们在测验期间是否查找过任何东西。
统计学测试:为了比较不同运行中的平均值,我们对每个模型与
control model
进行了独立组的two-sample t-test
。这是在Python
中使用scipy.stats.ttest_ind
函数实现的。在绘制参与者平均准确度与模型大小的regression line
时,我们拟合了一个 $ ax^{-b} $ 形式的幂律。95%
的置信区间是从样本平均值的t
分布中估计出来的。时间统计:在正文中,我们讨论了这样的发现:随着我们的模型变大,人类参与者区分模型产生的和人类产生的新闻文章的能力也会下降。
我们还发现,随着模型大小的增加,一组特定问题的平均时间也在增加,如下图所示。尽管参与者投入的时间增加,但准确率较低,这支持了更大的模型产生更难区分的新闻文章这一发现。下图中,虚线表示
controlmodel
。最佳拟合曲线是一个具 有95%
置信区间的对数尺度的线性模型。对
~ 500
个单词的文章的初步调查: 我们通过Positly
招募了160名
美国参与者参加2
个实验(详情见下表)。我们随机选择了2019
年底的12
篇路透社世界新闻文章,然后选择另一篇新闻(不在这12
篇文章中)作为GPT-3 175B
的上下文。然后,我们使用文章的标题和路透社的location
,从GPT-3 175B
和160M control model
中生成completion
。这些用于创建两个quiz
,每个quiz
由一半人写的和一半模型生成的文章组成。
6.6.6 来自 GPT-3 的额外样本
GPT-3
能很好地适应许多任务。作为一个例子,在下图中,我们展示了四个未经处理的样本,这些样本来自一个prompt
,建议模型以给定的标题(即,Shadow on the Way
)并按照Wallace Stevens
的风格写一首诗。我们首先试验了几个
prompt
,然后产生了四个没有额外编辑或选择的样本(在温度1
下使用 $ P=0.9 $ 的nucleus sampling
)。当模型开始写一个新的标题和author heading
时,或进入散文评论时,completion
被截断。
6.6.7 任务措辞和规格的细节
这里给出了本文中所有任务的格式
formatting
和措辞phrasing
。
6.6.8 所有模型规模在所有任务上的结果
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论