返回介绍

数学基础

统计学习

深度学习

工具

Scala

五十、PaLM [2022] (粗读)

发布于 2023-07-17 23:38:25 字数 62562 浏览 0 评论 0 收藏 0

原始论文 《PaLM: Scaling Language Modeling with Pathways》 83 页,这里进行了精简。

  1. BERT/T5 等模型,尽管在数以千计的自然语言任务中达到了近乎 SOTA,但缺点是它们需要大量的 task-specific 训练实例来微调模型。此外,至少有一部分的模型参数必须被更新以适应任务,从而增加了模型微调和部署的复杂性。

    GPT-3 证明了极其大型的自回归语言模型可用于 few-shot prediction ,其中,只需要为模型提供一个关于任务的自然语言描述、以及(可选的)关于如何完成任务的少量示例。few-shot evaluation 已被证明可以达到非常强大的效果,而不需要大规模的 task-specific data collection 或模型参数更新。

    GPT-3 以来,其他一些大型自回归语言模型已经被开发出来,它们继续推动着技术的发展。这些 GPT-3 之后的模型中最强大的是GLaMGopherChinchillaMegatron-Turing NLGLaMDA。与 GPT-3 一样,这些模型都是 Transformer 架构的变种。这些模型的改进主要来自于以下一种或多种方法:在深度和宽度上扩大模型的规模、增加模型训练的tokens 的数量、在更多样化来源的更加干净的数据集上进行训练、通过 sparsely activated module 在不增加计算成本的情况下增加模型容量。

    在论文 《PaLM: Scaling Language Modeling with Pathways》 中,作者延续了语言模型的 scaling 路线,在高质量文本的 780B tokens 上训练了一个 540B 参数的、densely activated 的、自回归的 Transformer 模型,称作 Pathways Language Model: PaLM 。 这是通过 Pathways 实现的,这是一个新的机器学习系统,能够在成千上万的 accelerator chips 上高度便捷地训练非常大的神经网络。

    这项工作的主要收获如下:

    • efficient scaling:作者展示了 Pathways 的首次大规模使用,这是一个新的机器学习系统,能够以高度高效的方式在数千或数万个 accelerator chips 上训练单个模型。通过 Pathways ,作者在 6144TPU v4 芯片上训练了一个540B 参数的语言模型,其效率水平是以前这种规模的模型所不能达到的。

      以前的大多数大型语言模型要么是在单个 TPU 系统上训练的,要么是使用 pipeline 并行在 GPU 集群或多个 TPU v3 podscale (最大规模为 4096TPU v3 芯片)。

    • 来自 scaling 的持续的改善:作者在数百个自然语言、代码和数学推理任务中评估了 PaLM ,并在这些基准中的绝大多数上取得了 SOTA 结果,且有很大的提升。这有力地证明了大型语言模型的 scaling improvement 既没有趋于平稳也没有达到饱和点。

    • 突破性的能力:作者展示了在语言理解和生成方面的突破性能力,跨越了许多不同的任务。

    • 不连续的提升:为了更好地理解 scaling 行为,作者提出了三种不同参数规模的结果:8B/62B/540B 。通常情况下,从 62B 扩展到 540B 的结果与从 8B 扩展到 62B 的结果相似,这与神经网络扩展中经常观察到的 "power law" 规则一致。然而,对于某些任务,作者观察到不连续的改进,与从8B62Bscaling 相比,从 62B540Bscaling 导致了准确率的急剧上升。这表明,当模型达到足够大的规模时,大型语言模型的新能力就会涌现。

    • 多语言理解:以前关于大型语言模型的工作在多语言领域进行了有限的评估。在这项工作中,作者对包括机器翻译、摘要、问答在内的各种语言的多语言基准进行了更彻底的评估。

    • 偏见和毒性:作者还评估了模型在 distributional bias and toxicity 方面的表现,从而得出了一些洞察:

      • 首先,对于性别和职业偏见,作者发现 Winogender 共指任务的准确率随着模型规模的扩大而提高,PaLM 540B1-shot/few-shot setting 中创造了新的 SOTA 结果。

      • 其次,对种族/宗教/性别的 prompt continuation 进行的 co-occurence analysis 表明,该模型有可能错误地将穆斯林与恐怖主义、极端主义和暴力联系起来。这种行为在不同的模型规模上是一致的。

      • 最后,对 prompt continuation 任务的毒性分析表明,与 8B 模型相比,62B540B 模型的总体毒性水平略高。然而,model-generated continuation 的毒性与 prompting text 的毒性高度相关,而 human-generation continuation 则没有强烈的毒性相关性。这表明,与human-generated text 相比,模型受 prompt 风格的影响更为严重。

  2. 相关工作:在过去的几年里,通过大规模的语言建模,自然语言能力有了很大的进步。广义上,语言建模指的是预测序列中的 next token 、或预测序列中的 masked span 的方法。当应用于庞大的语料库时(包括从互联网、书籍和论坛上爬取的数据),这些自监督目标已经产生了具有高级语言理解能力和高级语言生成能力的模型。通过对数据量、参数量和计算量的 scaling ,模型质量的可预测的power-law 使得这种方法成为能力越来越强的模型的可靠方法。

    • Transformer 架构在现代 accelerators 上释放出了无与伦比的效率,并成为语言模型的事实方法。在短短的四年时间里,最大的模型在参数规模上和总计算量上都增加了几个数量级。

      • 最早成功的 scale 之一是 345M 参数的encoder-onlyBERT 模型,它极大地促进了包括 SuperGLUE 在内的分类任务的语言理解。

      • Generative Pretrained Transformer: GPT 系列是 decoder-only 模型,创造了 SOTA 的语言建模性能。

      • T5 随后预训练并微调了高达 11B 参数的 encoder-decoder 模型,为迁移学习设立了新的标准。

      • GPT 系列的最新模型,即 175B 参数的 GPT-3 模型从inference-onlyfew-shot 技术中发现了新的能力。

      GPT-3 之后,规模继续扩大,178B 参数的 Jurassic-1280B 参数的 Gopher 模型、530BMegatron-Turing NLG ,以及包括 Switch TransformersGLaM 在内的万亿参数 sparse model 相继出现就是证明。这些核心自然语言能力的进步也伴随着其他领域的改进,包括理解和生成代码。此外,对话应用已经通过 scale 取得了进展,最近的证据是 LaMDA,一个137Bdecoder-only 模型。最后,额外的工作使语言模型能够遵循指令从而提高了这些模型的实用性和可靠性。

    • 这些较大的模型不再能被有效地训练,甚至不能被放入单个 accelerator 的内存中。因此,出现了跨 accelerator 分割模型张量的技术(《Mesh-TensorFlow: Deep learning for supercomputers》),或者是跨 accelerator 分离模型层,然后在各阶段之间对 activation 进行流水线(《GPipe: E cient training of giant neural networks using pipeline parallelism》)。许多其他工作旨在提高模型的规模,同时限制通信开销。PaLM 通过 Pathways 基础设施使用数据并行和模型并行的混合。

    • 人们已经提出了一些架构变体,以帮助更有效地 scale 模型。一个领域是检索模型,其目的是通过 embedding 大量的文本来大幅减少模型的大小,模型随后可以访问。通过允许不同的样本使用不同的参数子集,像 Mixture-of-Experts 这样的稀疏模型允许 scaling 模型的规模。序列长度的稀疏性是一个允许以极长序列进行训练的领域。未来的工作可以将这些研究方向的改进结合到未来版本的 Pathways 语言模型中。

50.1 模型架构

  1. PaLM 使用标准的 decoder-only Transformer 架构,并且做了如下的修改:

    • SwiGLU 激活函数:我们使用 SwiGLU 激活函数(Swish(Wx)(Vx)$ \text{Swish}(\mathbf W \mathbf{\vec x}) \odot (\mathbf V \mathbf{\vec x}) $ ,其中$ \odot $ 为逐元素乘法 )作为 MLP 的中间激活函数。因为与标准 ReLUGeLUSwish 激活函数相比,SwiGLU 已被证明可以显著提高质量(《GLU variants improve transformer》)。 请注意,这确实需要在 MLP 中进行三次矩阵乘法,而不是两次,但《GLU variants improve transformer》 证明了在 compute-equivalent 实验中质量的提高(即标准 ReLU 变体具有相应更大的尺寸)。

      Swishβ(x)=xσ(βx)$ \text{Swish}_\beta(x) = x\sigma(\beta x) $ 。

    • 并行层:我们在每个 Transformer block 内使用一种 ”并行“ 公式(《GPT-J-6B: A 6 Billion Parameter Autoregressive Language Model》),而不是标准的 ”串行“公式 。具体而言,标准的公式为:

      (1)y=x+MLP(LayerNorm(x+Attention(LayerNorm(x))))

      而并行公式为:

      (2)y=x+MLP(LayerNorm(x))+Attention(LayerNorm(x))

      由于 MLPAttention 的输入矩阵的乘法可以被 fused ,因此并行公式在 large scale 下的训练速度大约提高了 15% 。消融实验表明,在 8B 规模时有小的质量下降,但在 62B 规模时没有质量下降,因此我们推断,在 540B 规模时并行层对质量的影响应该是中性的。

    • Multi-Query Attention:标准的 Transformer 公式使用k$ k $ 个 attention head,其中在每个 timestep 中,输入向量被线性投用到 query, key, value 张量,query/key/value 张量的形状都是Rk×h$ \mathbb R^{k\times h} $ ,h$ h $ 为 attention head size

      然而在这里,每个 headkey/value 投影是共享的,即 keyvalue 张量的形状为R1×h$ \mathbb R^{1\times h} $ ,而 query 张量的形状还是Rk×h$ \mathbb R^{k\times h} $ 。我们发现,这对模型质量和训练速度的影响是中性的(《Fast transformer decoding: One write-head is all you need》),但在自回归解码时却能节省大量成本。这是因为在自回归解码过程中,标准的 multi-headed attentionaccelerator 硬件上的效率很低,因为 key/value 张量在样本之间不共享,而且一次只解码一个 token

    • RoPE Embeddings:我们使用 RoPE embedding《Roformer: Enhanced transformer with rotary position embedding》) 而不是标准的 absolute/relative position embedding ,因为 RoPE embedding 已被证明在长序列中具有更好的性能。

    • Shared Input-Output Embeddings:我们共享 input embedding matrixoutput embedding matrix ,这是在过去的工作中经常做的(但不是普遍的)。

    • No Biases:在任何一个 dense kernellayer norm 中都没有使用偏置。我们发现这增加了大型模型的训练稳定性。

    • 词表:我们使用了具有 256k tokensSentencePiece 词表(vocabulary ),选择该词表是为了支持训练语料库中的大量语言,而不需要过度的 tokenization 。词表是由训练数据生成的,我们发现这提高了训练效率。词表是完全无损的和可逆的,这意味着词表中完全保留了空白符(对 code 数据来说特别重要),out-of-vocabularyUnicode 字符被分割成 UTF-8 字节,每个字节都有一个 vocabulary token 。数字总是被分割成单独的 digit token (例如:"123.5 -> 1 2 3 . 5")。

  2. model scale 的超参数:在这项工作中,我们比较了三种不同的模型规模:540B 参数、62B 参数、8B 参数。FLOPs per token 数量大约等于参数的数量,因为这些模型是标准的 dense Transformer 。这些模型是用下表中的超参数构建的。这三个模型使用相同的数据和词表进行了相同的训练(除了 batch size )。

  3. Model Card:参考论文的附录 E

50.2 训练数据集

  1. PaLM 预训练数据集由一个高质量的语料库组成,该语料库有 780B tokens ,包括了过滤的网页、书籍、维基百科、新闻文章、源代码、社交媒体对话等数据。 这个数据集是基于用于训练 LaMDAGLaM 的数据集。我们在恰好一个 epoch 的数据上训练所有三个模型(对所有模型的shuffle 相同),并选择混合比例以避免在任何子数据集重复数据。

    代码数据是从 GitHub 上的开源 repositories 中获得。我们通过 license 来过滤文件。此外我们根据文件名过滤文件,从而限制在 24 种常见的编程语言之一,包括 Java, HTML, Javascript, Python, PHP, C#, XML, C++, C 。最终得到 196 GB 的源代码数据。此外,我们根据文件之间的 Levenshtein 距离去除重复的文件,因为已知重复的文件在源代码库中很常见。

    下表列出了用于创建最终的 PaLM 数据集 mixture 的各种数据源的比例。我们在后面内容中检查了数据污染,并提出了我们的训练数据集和评估数据之间的overlap 分析。附录 D 包含一个数据表,其中有更多信息,包括语言比例的细分。

    这里的数据集没有开源。

50.3 训练的基础设施

  1. 我们的训练代码库和评估代码库基于 JAXT5X ,所有模型都在 TPU v4 Pods 上训练。PaLM 540B 在两个通过数据中心网络(data center network: DCN )连接的 TPU v4 Pod 上训练,使用模型并行和数据并行的组合。每个 TPU v4 Pod 使用 3072TPU v4 chips,连接到 768 台主机。这个系统是迄今为止描述的最大的 TPU 配置,使我们能够有效地将训练规模扩大到 6144 个芯片,而不需要使用任何流水线并行。相比之下:

    • LaMDA, GLaM 分别在单个 TPU 系统上进行训练,没有利用流水线并行或数据中心网络。

    • Megatron-Turing NLG 530B 是在 2240A100 GPU 上使用模型并行、数据并行、以及流水线并行的组合进行训练的。

    • Gopher 是在四个 DCN 连接的 TPU v3 Pod (每个Pod1024TPU v3 芯片)上使用 pod 之间的 pipelining 进行训练。

  2. pipelining 通常用于 DCN,因为它对带宽的要求较低,并且在模型并行和数据并行所允许的最大有效规模之外提供额外的并行性。pipelining 通常将 training batch 分成若干个 micro-batches ,但它有重要的缺点:

    • 首先,它产生了 pipelining "bubble" 的时间开销,即在前向传播和反向传播的开始和结束时,许多设备在填充和清空流水线时完全闲置。

    • 其次,它需要更高的内存带宽,因为要从内存中为 mini-batch 中的每个 micro-batch 重新加载权重。在某些情况下,它还涉及增加软件的复杂性。

  3. 我们能够使用以下策略将 PaLM 540Bpipeline-free training 有效地扩展到 6144 个芯片:

    • 每个 TPU v4 Pod 包含一个完整的模型参数副本,每个权重张量使用 12 路模型并行、以及 256 路完全分片的数据并行在 3072 个芯片上被 partitioned《Gspmd: general and scalable parallelization for ml computation graphs》 称之为 "2D finalized" 方法)。

    • 在前向传播过程中,权重在数据并行轴上被 all-gathered ,并从每层保存一个完全分片的 activation 张量。

    • 在反向传播过程中,其余的 activationsrematerialized ,因为与重新计算相比,在更大的 batch size 下,这将带来更高的训练吞吐量。

  4. 下图展示了 Pathways 系统如何执行双向的 pod-level 数据并行。

    • 一个 Python 客户端构建了一个 sharded dataflow 程序(如下图左侧所示),该程序在远程服务器上启动 JAX/XLA work ,每个服务器由一个 TPU pod 组成。该程序包含一个用于within-podforward+backward computation (包括 within-pod gradient reduction )的组件 A 、用于 cross-pod gradient transfertransfer subgraph 、以及用于 optimizer update (包括本地梯度和远程梯度的求和)的组件 B

    • Pathways 程序在每个 pod 上执行组件A ,然后将输出梯度转移到另一个 pod ,最后在每个 pod 上执行组件 B

    双路 pod-level 数据并行的一个挑战是:如何在 6144TPU v4 芯片(连接到 1536 个主机)的规模上,实现 cross-pod gradient transfer 的高训练吞吐量。注意:cross-pod gradient transfer 只需要在两个 pod 的相应主机之间进行 1:1 的传输,因为每个 core 只需要远程梯度,用于获得它的 model-sharded parameters 。由于在每个 core 完成梯度计算后才开始传输,这导致了一个非常突发的工作负载,所有主机在同一时间通过 data-center-network links 传输他们的梯度。具体而言,每对主机在每个 training step 中交换大约 1.3GB 的梯度,相当于所有主机的总爆发量为 81Tbps

    我们通过对 Pathwaysnetworking stack 的精心设计,相对于单个 pod 的吞吐量,我们实现了约 1.95 倍的训练吞吐量(理论吞吐量为 2 倍,因为有两个 pod)。与理论上 2 倍的吞吐量相比,性能上的差距是由于反向传播和 cross-pod gradient reduction 之间缺乏 overlap

  5. 训练效率:之前报道的大多数用于语言模型的 accelerator 效率的数字都使用了一个我们称之为 hardware FLOPs utilization: HFU 的指标。这通常是对一个给定设备上观察到的 FLOPs 与其理论峰值 FLOPs 的比值的估计。然而, HFU 有几个问题:

    • 首先,硬件 FLOPs 的执行数量与系统和实现有关,编译器中的设计选择可能导致不同的 operations 数量。 rematerialization 是一种广泛使用的技术,用来trade off 内存用量和计算量。为了有效地计算神经网络架构的反向传播,必须将该 batch 的许多 intermediate activations 存储在内存中。如果这些 intermediate activations 无法被全部存储,一些前向传播可以被重新计算(使一些 activationsrematerialized 而不是被存储)。这就产生了一个权衡,使用额外的硬件 FLOPs 可以节省内存,但是训练系统的最终目标是实现 tokens per second 的高吞吐量(因此训练的时间要快),而不是使用尽可能多的硬件 FLOPs

    • 其次,测量观察到的硬件 FLOPs 取决于用于计数或跟踪它们的方法。观察到的硬件 FLOPs 已经根据分析核算(《Efficient large-scale language model training on gpu clusters using megatron-lm》)以及使用硬件性能计数器(《Gspmd: general and scalable parallelization for ml computation graphs》)进行了报告。

    鉴于这些问题,我们认识到 HFU 不是一个一致的、有意义的衡量LLM 训练效率的指标。我们提出了一个新的指标,即 model FLOPs utilization: MFU ,该指标与实现无关,并允许对系统效率进行更清晰的比较。这是观察到的吞吐量(tokens-per-second )相对于在 FLOPs 峰值下运行的系统的理论最大吞吐量的比率。至关重要的是,理论上的最大吞吐量只考虑了计算前向传播+反向传播所需的 operations ,而不是 rematerialization 。因此,MFU 允许在不同系统上的训练运行之间进行公平的比较,因为分子只是观察到的 tokens-per-second ,而分母只取决于模型结构和给定系统的最大 FLOPs 。我们在附录 B 中阐述了计算 MFU 的数学公式。

    我们在下表中介绍了 PaLM 540BMFU

50.4 训练配置

  1. 模型训练遵从针对大型 Transformer 语言模型的标准配置,细节如下:

    • weight initializationkernel weights (除了 embeddinglayer norm scale 之外的所有参数)通过 fan-in variance scaling 来初始化,即:

      (3)WN(0,1nin)

      其中:nin$ n_\text{in} $ 为 kernelinput 维度。

      input embedding 通过标准正态分布来初始化:EN(0,1)$ \mathbf E\sim \mathcal N(0, 1) $ ,因为 layer normalization 并未应用到 embedding 上。因为 input embedding layeroutput embedding layer 是共享的,因此我们将 pre-softmax output logits 缩放了1n$ \frac{1}{n} $ ,其中n$ n $ 为 embedding size

    • optimizer:模型采用 Adafactor optimizer 来训练,没有 factorization。这本质上等同于 parameter scalingAdam , 即,通过参数矩阵的平方根值对学习率进行缩放。因为 weight initialization1/n$ 1/\sqrt n $ 成正比,这样做的效果类似于 GPT-3Adam 学习率的手动缩放。然而,parameter scaling 的好处是,在不同 scale 上操作的参数矩阵( embedding scalelayer norm scale )的学习率不会以相同的速度缩放。

    • optimization 超参数:对于 Adafactor

      • 刚开始 10kstep 的学习率为102$ 10^{-2} $ ,然后以1k$ \frac {1}{\sqrt k} $ 的速度衰减,其中k$ k $ 为 step 数量。

      • 一阶动量系数为β1=0.9$ \beta_1=0.9 $ 。二阶动量系数为β2=1.0k8$ \beta_2=1.0-k^{-8} $ 。在训练大型语言模型中,我们发现这种β2$ \beta_2 $ 要比β2=0.99$ \beta_2=0.99 $ 更稳定,因为在较短的窗口内,rare embedding tokens 可能有较差的 estimated second moment

      • 阈值为 1.0 的全局梯度范数裁剪。

      • 动态的 weight decay ,系数为lr2.0$ \text{lr}^{2.0} $ ,其中 lr 为当前的学习率。

    • 损失函数 :模型用标准的 language modeling loss function 来训练的,它是所有 token 的平均对数概率,没有标签平滑。此外还有一个辅助损失zloss=104×log2Z$ z_\text{loss} = 10^{-4}\times \log^2 Z $ 从而鼓励 softmax normalizerlog(Z)$ \log (Z) $ 趋向于零,我们发现这增加了训练的稳定性。

    • 序列长度:所有模型都使用了 2048 的序列长度。输入样本被拼接在一起,然后分割成正好是 2048 tokens 的序列,因此没有padding tokens ,但样本可以在中间被分割。输入样本用一个特殊的 [eod] token 来区分开。

    • batch size:对于所有的模型,我们在训练过程中增加 batch size

      对于最大的模型,我们使用 batch size = 5121M tokens per batch )直到 step 50k,然后加倍到 batch size = 10242M tokens per batch )直到 step 115k ,最后再加倍到 batch size = 20484M tokens per batch ),直到训练完成(最终 step 255k )。较小的模型也遵循类似的 schedule

      使用这种 batch size schedule 的原因有两个方面:

      • 较小的 batch size 在训练的早期更加 sample efficient (在给定 tokens seen 的条件下具有更好的 loss ),而较大的 batch size 由于更好的梯度估计在训练后期是有益的(《Don't decay the learning rate, increase the batch size》《An empirical model of large-batch training》)。

      • 较大的 batch size 导致更大的矩阵乘法维数,这增加了 TPU 的效率。

    • bitwise determinism :该模型从任何 checkpoint 都是完全可 reproducible 的。换句话说,如果模型在一次运行中已经训练到 17k 步,而我们从 15k checkpoint 重新开始,那么训练框架保证在从 15k checkpoint17k 的两次运行中产生相同的结果。这通过两种方式实现:

      • JAX+XLA+T5X 提供的 bitwise-deterministic 建模框架。

      • deterministic dataset pipeline ,其中随机混洗数据以 random-access format 写出,因此给定的 training batch 的内容仅是step 数量的函数。

    • dropout:模型训练期间没有采用 dropout,然而在微调期间在大多数情况下使用了 dropout rate = 0.1

  2. 训练不稳定:对于最大的模型,尽管启用了梯度剪裁,我们在训练过程中还是观察到了大约 20loss 尖峰。这些尖峰发生在非常不规则的时间间隔内,有时发生在训练的后期,而在训练较小的模型时没有观察到。

    对于最大的模型,由于训练成本的缘故,我们无法确定一个原则性的策略来缓解这些尖峰。相反,我们发现一个简单的策略可以有效地缓解这个问题:我们从尖峰开始前大约 100 步的 checkpoint 重新开始训练,并跳过大约 200 ~ 500data batch ,这些 data batch 涵盖了尖峰之前和尖峰期间的 data batch。通过这种缓解措施,loss 没有在相同的 step 再次飙升。

    我们不认为尖峰是由不良数据本身造成的,因为我们做了几个消融实验,在这些实验中,我们抽取了尖峰周围的 data batch ,然后从一个较早的 checkpoint 开始对这些相同的 data batch 进行训练。在这些情况下,我们没有看到一个尖峰。这意味着尖峰的出现只是由于特定的 data batch 与特定的模型参数状态的结合。在未来,我们计划研究在非常大的语言模型中对 loss 峰值的更有原则的缓解策略。

50.5 评估

50.5.1 英语 NLP 任务

  1. 为了和之前的大型语言模型进行比较,我们在相同的 29 个英文 benchmark 上评估了 PaLM 模型。这些 benchmark 包括:

    • Open-Domain Closed-Book Question Answering tasksTriviaQA, Natural Questions, Web Questions

    • Cloze and Completion tasksLAMBADA, HellaSwag, StoryCloze

    • Winograd-style tasksWinograd, WinoGrande

    • Common Sense ReasoningPIQA, ARC, OpenBookQA

    • In-context Reading ComprehensionDROP, CoQA, QuAC, SQuADv2, RACE

    • SuperGLUE

    • Natural Language Inference (NLI)Adversarial NLI

    Table 4 包括 PaLM 540B 的结果和其他大型语言模型的 SOTA 结果。在这个表中,我们只考虑 pretrained language model 的单个 checkpoint 结果。任何使用微调或多任务适应的模型都不包括在该表中。可以看到:

    • PaLM 540B1-shot setting29 项任务中的 24 项,以及在 few-shot setting29 项任务中的 28 项,都优于之前的 SOTA

    • 虽然模型的大小对取得这些结果起到了重要的作用,但 PaLM 540B 在所有基准上都超过了类似大小的模型(Megatron-Turing NLG 530B)。这表明预训练数据集、训练策略、以及 training tokens 数量也对取得这些结果起到了重要作用。

    Table 5 列出了自然语言理解(Natural Language Understanding: NLU )和自然语言生成(Natural Language Generation: NLG)任务的平均分数。PaLM 540B 在这两类任务中的平均得分都提高了 5 分以上。如表中所示,PaLM 模型在每个类别中的平均得分也随着规模的扩大而提高。

  2. 微调:我们在 SuperGLUE benchmark 中对 PaLM 进行了微调,Adafactor optimizer 的微调学习率为5×105$ 5\times 10^{-5} $ ,batch size = 32PaLM 通常在少于 15K 步的微调过程中收敛。

    Table 6 报告了在 SuperGLUE 上的验证集结果,结果表明PaLM 获得了接近 SOTA 的有竞争力的性能。值得注意的是,SuperGLUE 上表现最好的两个模型都是使用 span corruption objective 训练的 encoder-decoder 模型。已有研究表明,当训练成本相同时,这样的架构通常会在分类任务微调方面优于仅有自回归的 decoder-only 模型。这些结果表明,规模可以帮助缩小差距。

    Table 7 还表明,在 few-shot 和微调的结果之间仍有很大的差距。

    最后,Table 8 报告了 SuperGLUE 排行榜的测试集的结果。我们表明,PaLMSOTA 模型相比是有竞争力的,同时比排行榜上最好的decoder-only 自回归语言模型的表现要好得多。

50.5.2 BIG-bench

  1. BIG-bench 是一个 collaborative benchmark ,旨在为大型语言模型制作具有挑战性的任务。它包括 150 多个任务,涵盖了各种语言建模任务,包括逻辑推理、翻译、问答、数学和其他。这里我们介绍并分析了 PaLM 模型系列在 BIG-bench 上的 few-shot 评估结果。BIG-bench 包括文本性的任务(textual task )和程序性的任务(programmatic task )。在这次评估中,只考虑了文本性的任务。BIG-bench 中,最佳人类表现是用每个样本中指标得分最高的人类生成的答案来计算的,而平均人类表现是用所有人类生成的答案的平均指标得分来计算的。

  2. 下图左侧为在 BIG-bench上评估 PaLM 系列模型的结果,并与之前公布的结果进行了比较。由于 Gopher, Chinchilla, GPT-3 都评估了的任务只有 58 个,因此这里仅介绍了这 58 个任务的结果。下图右侧显示了 PaLMBIG-bench 文本性任务( 150 个任务)上的结果。PaLM 明显优于GPT-3GopherChinchilla ,而且 5-shot PaLM 540B 取得了比人类平均分更高的分数。

  3. 下图给出了这 58 个任务的详细结果。PaLM 540B 5-shot58 个常见任务中的 44 个任务上的表现优于之前的 SOTA

  4. 接下来我们详细描述一些任务,在这些任务中,PaLM 具有特别有趣的性能特征,如下图所示。

    • goal step wikihow:目标是推理事件之间的 goal-step 关系。

      例子:为了 "清洗银器",应该先做哪个步骤?(a) 擦干银器;(b) 手洗银器。答案:(b)

    • logical args:目标是根据一段话预测正确的逻辑推理。

      例子: 输入:学生们告诉代课老师他们正在学习三角几何。代课老师告诉他们,与其教他们关于三角几何的无用事实,不如教他们如何处理概率问题。他在暗示什么? (a) 他认为数学不需要有用也可以有趣;(b) 他认为理解概率比三角几何更有用;(c) 他认为概率论是一个无用的学科。答案:(b)

    • english proverbs:目标是猜测哪个谚语最能描述一段文字。

      例子:凡妮莎多年来一直在当地的无家可归者援助中心利用周末时间帮忙。最近,当她失去工作时,该中心准备马上给她一份新工作。以下哪句谚语最适用于这种情况?(a) Curses, like chickens, come home to roost(b) Where there is smoke there is fire(c) As you sow, so you shall reap 。答案:(c)

    • logical sequence:目标是将一组 "东西"(月份、行动、数字、字母等)按其逻辑顺序排列。

      例子:输入: 以下哪个列表的时间顺序是正确的?(a) 喝水,感到口渴,关闭水瓶,打开水瓶; (b) 感到口渴,打开水瓶,喝水,关闭水瓶; (c) 关闭水瓶,打开水瓶,喝水,感到口渴 。答案:(b)

    • navigate:目标是遵循一组简单的导航指令,并找出你最终会到达的地方。

      例子: 输入: 如果你按照这些指令,你是否会回到起点?始终面向前方;向左走6 步;向前走 7 步;向左走8 步;向左走 7步;向前走6步;向前走1步;向前走4 步。答案:否。

    • mathematical induction:目标是进行逻辑推理数学归纳法规则,即使它们与现实世界的数学相矛盾。

      例子: 输入: 众所周知,在任何奇数上加 2 会产生另一个奇数。2 是一个奇数整数。因此,6 是一个奇数。这是不是一个正确的归纳论证(尽管有些假设可能不正确)?答案:是。

  5. 在下图,我们显示了在比较 PaLM 540B 和人类评价的平均性能得分时,得到改进的任务的分布。我们可以看到,尽管 PaLM 540B 在总体上超过了人类的平均表现,但在 35% 的单个任务上,人类的平均表现仍然高于 PaLM 540B

  6. 最后,下图展示了对 BIG-bench Lite 的详细评估结果,这是 24BIG-bench 任务的一个精心策划的子集,作为一个轻量级的评估目标。与人类评估的最佳性能得分相比,虽然有些 BIG-bench Lite 任务已经解决或接近解决,但其他任务仍远未解决。

  7. 我们采取了几个步骤来确定这些结果的有效性,特别是排除了模型通过记忆 BIG-bench 数据来实现这些结果的可能性。

    • 首先,BIG-bench 任务文件包括一个独特的 canary string ;我们确保这个字符串不会出现在 PaLM 训练数据中。

    • 其次,在收集训练数据时,互联网上没有 BIG-bench 数据集,而且绝大多数 BIG-bench 任务是由任务作者专门为纳入 BIG-bench 而构建的全新 benchmark

    • 最后,我们抽查了模型在几个任务中的输入和输出,在这些任务中,模型表现出很强的性能,并手工验证了在解码过程中没有从gold labels 中泄露信息。

50.5.3 Reasoning

  1. 我们在一组推理任务上评估了 PaLM ,这些任务需要多步骤的算术的或常识的逻辑推理来产生正确答案。

    • 算术推理(arithmetic reasoning):这些任务往往涉及小学水平的自然语言数学问题,需要多步骤的逻辑推理。数学本身通常是简单的,困难的部分是将自然语言转化为数学方程式。在这项工作中,我们评估了计算器形式和直接推理形式。

      例如:输入:罗杰有 5 个网球,他又买了两罐网球,其中每罐有 3 个网球。他现在有多少个网球?答案是:11

    • 常识推理(commonsense reasoning ):这些任务是问答任务,需要很强的世界知识(world knowledge )。

      例如:输入:肖恩急着回家,但红灯变黄了,他被迫做什么?答案选项:(a)花时间;(b) 闲逛;(c) 慢慢走;(d) 海洋;(e) 减速。答案: (e)

  2. 我们使用 chain-of-thought: COT 来改善模型的输出。下图给出了 chain-of-thought prompting 的例子。

  3. 在这项工作中,我们展示了一个引人注目的结果:模型规模和 COT prompting 足以在各种算术推理和常识性推理任务中达到 SOTA 的准确性。在 7 个推理数据集中,PaLM 540B + COT8-shot prediction 在四个任务中达到了 SOTA 的准确率,在其它三个任务重接近 SOTA 。我们还可以看到,COT 和模型 scaling 对所有的任务都有很大的帮助,因为如果没有这两种技术,PaLM 只能在一个任务(SVAMP )上取得 SOTA

  4. 我们分析了 PaLM 62B 模型在 GSM8K 数据集上出错的问题,发现它们通常属于以下几类:语义理解、单步缺失、以及其他错误。如下图所示,扩大到 540B 模型的规模后,这些错误的数量就多了起来。

50.5.4 Code 任务

  1. 在这一节中,我们表明 PaLM 模型在各种 coding 任务上取得了出色的成绩:

    • text-to-code:我们考虑了三个任务,其目标是根据自然语言描述来编写代码。

      • HumanEvalMBPP 数据集中,模型被馈入一个英语描述(由一些句子和少量的 input-output 示例组成),目标是生成一个简短的 Python 程序(通常是单个函数)。

      • 我们还介绍了 GSM8K-Python 任务,它来自 GSM8K 数据集。GSM8K 数据集由 mathematics word 问题组成。GSM8K-Python 是这个任务的一个变种,其目标不是产生正确的答案,而是产生一个能返回正确答案的 Python 程序。

    • code-to-code

      • TransCoder 是一项涉及将 C++ 程序翻译成 Python 的任务。我们从 GitHub 上下载了TransCoder 的数据,并收集了同时出现在数据集的PythonC++ 子目录下的函数。

      • 我们还对 DeepFix 的代码修复任务进行评估。从学生编写的无法编译的 C 语言程序开始,目标是修改程序,使其能够成功编译。

    我们使用 pass@k 指标报告结果:对于测试集中的每个问题,从模型中抽取 k 个源代码样本,如果有任何样本解决了问题,则算作解决了。我们将 PaLM 模型与几种用于代码的不同的语言模型进行比较:LaMDA 137BCodex 12B 。为了获得 Codex 在除了 HumanEval 之外的其它数据集上的结果,我们调用了 OpenAI Davinci Codex API 。不幸的是,关于 Davinci Codex 模型,有许多事情是不公开的:我们不知道这个模型的规模、它是单个模型还是一个 ensemble 、它的训练数据有多少、对模型的输出做了什么(如果有的话)后处理,以及 Davinci Codex 训练数据与我们评估数据集的污染程度如何。

  2. 数据集:PaLM 模型的训练集包括 GitHub 代码。由于我们的评估数据集大多是测试 Python 编程技能的,所以我们额外收集了一个专门的 Python 代码数据集。这个额外的数据集,我们称之为 ExtraPythonData ,包含了来自 GitHub repository5.8B tokens ,这些 tokens 在预训练中没有使用。

    Table 10 总结了所使用的 code training data 的数量:PaLM 540B 行显示了用于预训练的 tokens 数量,而 PaLM-Coder 540B 显示了预训练和微调数据的 token 总数。

    Table 27 显示了数据中编程语言的分布。最常见的语言是 Java, HTML, Javascript, Python, C, PHP, C#, C++

  3. PaLM 540B:下表显示了 PaLM 模型在 0-shot prompts4-shot prompts 下的性能。

    • 首先,LaMDA 模型在所有的任务中都有非零的表现,尽管它没有在 GitHub 代码上进行训练。这表明 LaMDA 训练中使用的 code web documents 对这些任务来说是有参考价值的。

    • 其次,PaLM 模型在所有任务中的表现都比LaMDA好,而且在HumanEval上的表现与Codex 12B 相当。

  4. PaLM-Coder:现在我们评估进一步微调对 coding 任务的影响,类似于 Codex 的做法,微调得到的模型称作 PaLM-Coder

    微调是两阶段的:

    • 首先,对 mixture 数据进行微调,其中 60% 来自 ExtraPythonDatapython 代码、30% 来自跨语言的代码(与预训练的代码数据来源相同,但不包括在预训练中)、以及 10% 的自然语言。

    • 然后 ,对 ExtraPythonData 中更多的 Python 代码进行了额外的 1.9B tokens 的微调。

    在这两个阶段中,微调数据包含 7.75B tokens ,其中 5.9BPython 。而预训练加微调的总数据量,参考 Table 10PaLM-Coder 540B 的性能进一步提高,参考 Table 11

    下图显示了从 8B62B 以及最后到 540B 模型的性能扩展。在所有的数据集中,规模的每一次增加都会带来性能的提高,而且规模对性能的影响似乎并没有达到饱和。

  5. DeepFix Code Repair:图 1314 显示了DeepFix 问题的例子和 PaLM-Coder 的成功预测。

    对于 code repair,评估模型所改变的代码的数量是很重要的。通常我们只想修改一小部分的 broken code 。不同模型所改变的代码的数量如下表所示。与 Codex 相比,PaLM-Coder 倾向于改变分布在更多行中的更少的字符。我们在预测中观察到这种行为,其中 PaLM-CoderCodex 更有可能做出微小的风格上的改变,例如将 i = i + 1 改为 i++ ,将 int a;\n int b; 改为 int a, b; ,而 Codex 更有可能大幅度改变行。

  6. 讨论:当在软件开发中部署基于LM 的系统时,一个关键的风险是生成的代码可能是不正确的,或者引入微妙的 bug 。 鉴于对代码补全系统的数据集中毒攻击的发现,以及观察到当 prompts 中存在错误代码时,LM 更有可能产生错误代码,这是一个特别紧迫的问题。

    功能正确性只是源代码质量的一个方面;LM 产生的建议还必须是可读的、鲁棒的、快速的和安全的。DeepFix 说明了 PaLM-Coder 目前预测的一个问题:在 Figure 13Figure 14 中,程序可以编译,但不一定安全,因为它们依赖于对输入的格式和大小的假设。DeepFix 的数据集来自于学生写的 C 语言编程课程的练习,学生被允许做这样的假设。这样的建议在一个更普遍的环境中可能是不可取的。

50.5.5 翻译

  1. 与其他大型翻译工具一样,PaLM 没有明确地在平行语料上进行训练,尽管在我们的训练语料库中可能会自然存在一些这样的数据。我们专注于 WMT 提供的训练集和验证集,特别是以下三种类型的 language pair

    • 以英语为中心的的 language pair,涉及以英语为 source languagetarget language ,并有一些不同程度的平行数据可用。根据 language pair中的 non-English 语言,翻译任务可能是高资源(>10M 的样本)、中等资源(<10M,>1M 的样本)或低资源(<1M 的样本)。这里我们使用 WMT'14 English-French (high), WMT'16 English-German (mid), WMT'16 English-Romanian (low)

    • 直接的 language pair,即直接在任何一对语言之间进行翻译,而不涉及英语。在机器翻译中,即使英语不是 source languagetarget language ,也可以参与翻译,因为机器翻译系统经常通过英语进行"pivot" ,例如,French -> English -> German。我们将使用 WMT'19 French-German language pair 来测试直接翻译能力。

    • 极低资源的 language pair,在这项工作中,我们选择哈萨克语作为我们的低资源语言。作为比较,虽然法语和德语在我们的训练集中分别有大约 24B tokens26B tokens ,但哈萨克语只有大约 134M tokens 。对于评估,我们将使用 WMT'19 English-Kazakh

  2. 以英语为中心的的 language pair 的评估:PaLM 优于所有的基线。

  3. 直接的 language pair 和极低资源的 language pair 的评估:

  4. 我们将我们的结果提炼为以下一组观察:

    • 在从某种语言翻译成英语的时候,翻译质量比从英语翻译成某种语言的时候要好。这是在所有以英语为中心的语言模型中观察到的一个共同模式,在检查 PaLM 的性能时也出现了类似的情况。我们怀疑优先考虑多语言数据会减轻这种情况。

    • prompts 可以提供比单个示例更多的价值。我们发现,在大多数情况下,使用语言名称来诱导翻译(0-shot setting )比只使用 input-output 示例(one-shot/few-shot setting )提供更强的性能,与以前的工作一致(《Association for Computing Machinery》)。

    • 仅仅依靠自监督的通用模型可以在较小的范围内与专用模型相匹配。我们考虑的大多数专用翻译baseline 都在1B 参数以下,这比我们最大的 PaLM 构架要小两个数量级。另一方面,我们也看到,大型翻译模型可以适应各种下游任务,这表明专家也可以作为通才。这就提出了一个问题:在资源丰富的情况下(如多语言翻译),我们应该培训专家还是通才?

50.5.6 Multilingual 自然语言生成

  1. 自然语言生成以给定文本或非语言信息(如文档、表格、或其他结构化数据)的条件下,自动生成可理解的文本。对于类似规模的模型,过去还没有探索过 few-shot 的条件自然语言生成。通常情况下,generation evaluation 仅限于生成式的问答和 multiple-choice 的语言模型任务,这些任务不需要生成完整的句子或段落。因此,我们的工作提出了第一个大型语言模型的基准,从而用于条件自然语言生成任务的 few shot 建模。

  2. 数据:我们在来自 Generation Evaluation and Metrics benchmark 的三个摘要任务、以及三个 data-to-text generation 任务上评估了 PaLM。这些数据集包括 Czech (cz), English (en), German (de), Russian (ru), Spanish (es), Turkish (tr), Vietnamese (vi) 等语言。

    • MLSum:用多个句子总结一篇新闻文章([de/es] )。

    • WikiLingua:用非常简洁的句子总结 WikiHowstep-by-step 指令([en/es/ru/tr/vi -> en]])。

    • XSum:用一句话总结一篇新闻文章([en] )。

    • Clean E2E NLG:给定一组键值属性对,用一两句话描述一家餐厅([en] )。

    • Czech Restaurant response generation:给定一个对话上下文、以及对话行为representation ,生成智能助理将提供的响应([cz])。

    • WebNLG 2020:在一个或多个句子中以语法的和自然的方式口语化 ”主语-谓语-宾语“ 三要素( [en/ru] )。

  3. Few-shot 评估方法:为了将 PaLM 用于 few-shot inference ,我们将一个任务特定的 prompt 拼接到输入中,并将 output prompt 添加到输出中。为了处理经常出现的非常长的输入以进行摘要,它们被截断为 2048 tokens

    few-shot 示例通过双线分隔,这也被用来截断 output predictions 从而用于评估。few-shot 示例都是从训练语料库中随机抽出的。

  4. 微调方法:为了在微调期间使用 decoder-only 结构,inputstargets 被拼接起来,但损失只在序列的 targets 部分计算。拼接后的序列被截断为 2048 tokens ,即预训练期间使用的训练环境,其中 512 tokens 保留给 targets 。只有摘要任务需要 input truncation

    为了对 PaLM 进行微调,我们使用了一个恒定的学习率5×105$ 5\times 10^{-5} $ ,比预训练期间小 20 倍,并重置了优化器(Adafactor )的 accumulator 。每个数据集的最佳 model checkpoint 是由验证集上 ROUGE-1ROUGE-2ROUGE-L 得分的最佳表现的几何平均值来选择的。推断是使用k=10$ k=10 $ 的 top-k 采样进行的。T5 XXL 基线使用与 PaLM 相同的参数进行微调,并使用 beam size = 4beam-search 来解码。

  5. Table 15 给出了1-shot 和微调的实验结果。

    • 微调的有效性:总的来说,540B finetuned PaLM 在所有英语生成任务上接近或超过了之前报告的最佳结果。这表明 PaLM 可以通过其大幅增加的规模来弥补其架构上的劣势。我们确实认识到,当存在大量特定任务的训练数据时,decoder-only LM 的微调可能不是所有任务的 computationally optimal 的方法,但是我们相信它可以作为 few-shot prediction 的重要上限。

    • 英语生成与非英语生成的质量:PaLM 为生成英语文本的 6 个摘要任务中的 5 个任务实现了新的 finetuning SOTA 的结果,即使 input 是非英语的。然而,非英语概要(MLSum )的微调不能实现 SOTA ,并且对于非英语生成,few shot 和微调之间的相对差异更大。这表明 PaLM 在处理 non-English input 方面比生成 non-English output 更好,这可能会在未来通过对大部分非英语文本进行预训练而得到改善(在当前模型中为 22% )。

    • 1-shot vs finetuning gap:查看 Data-to-Text 的结果,1-shot 结果遵循与摘要相似的趋势,但是与最佳微调结果的差距急剧缩小。我们注意到,Data-to-Text 任务作为微调基准的价值有限,因为它们的规模很小,并且与预训练语料库显著不匹配。

    • 1-shot 摘要:当比较各种 PaLM 规模上的 1-shot 摘要结果时,我们发现从 8B -> 62B 有一个很大的改进,而从 62B -> 540B 有一个较小但显著的改进。

50.5.7 多语言问答

  1. 我们使用 TyDiQA-GoldP benchmark 在多语言问答任务上评估我们的模型。实验结果如下表所示。不足为奇的是,我们发现平均而言,在 few-shot 和微调的质量之间存在很大的差距。

    我们表明 PaLM 540B 在这项任务上取得了非常有竞争力的结果,尽管没有在那么多的非英语数据上进行训练(占 780B 训练tokens22% )。

50.5.8 分析

  1. 这里,我们深入分析 PaLMfew-shot 性能。

    我们首先研究了三个不同的模型(8B, 62B, 540B )在 5 个不同的任务上的性能: RTE, Natural Questions, Lambada, Story Cloze, Trivia QA 。结果如下图所示。在几乎所有的任务和模型中,当模型被呈现出更多的示例时,性能就会提高。

    然后我们评估了 StoryCloze, Natural Questions, Web Questions benchmarksfew-shot learning 性能的差异。 在预训练期间,我们采取了 15 个不同的均匀间隔的 model checkpoints 。然后我们用 1-shot learning 来评估所有不同的 checkpoints 。鉴于每个检查点只相差 2B pre-training tokens ,我们期望模型质量不受影响。结果如下图所示。

50.6 Memorization

  1. 众所周知,神经网络能够记忆训练数据。事实上,这就是过拟合的定义。通常情况下,这种类型的记忆发生在模型对一个小的训练集进行多次训练时。然而,在我们的案例中,PaLM 是在一个 780B 的语料库上进行 single pass 训练的。另一方面,我们的模型也有非常大的容量,所以即使是 single pass 也可以记住训练数据的很大一部分。此外,由于 web-derived 语料库中存在近乎重复的文本,一些段落(有微小的变化)在训练中会出现多次。在本节中,我们分析了 PaLM 模型对训练数据的记忆程度。

    为了评估这一点,我们从训练样本中随机选择了 100token sequences ,并且采用前 50 tokensprompt 模型。我们运行贪婪解码,并测量模型产生的 token 与训练样本(first 50 tokens 之后的内容)完全匹配的频率。该方法遵循 《Quantifying memorization across neural language models》 的做法,他们试验了 50 ~ 500 tokensprompt 长度。

    • 18(a) 显示了三种模型规模的记忆匹配率。

    • 18(b) 显示了记忆率与训练数据中确切看到的训练样本的次数的关系。请注意,之所以会有重复率如此之高的例子,是因为我们的训练只对完整的文档进行去重,而在这里我们对 100 tokensspan 来评估记忆。

    • 18(c) 显示了按训练数据语料库细分的三种模型的记忆率。由于 code 语料库中有大量的模版的 license 字符串、拷贝的代码、以及自动生成的代码,因此记忆率较高。book 语料库主要包含真正独特的文字串。

  2. 从这些结果中,我们可以得出以下关于记忆的结论:

    • 较大的模型比较小的模型有更高的记忆率。对数线性拟合的斜率与之前 《Quantifying memorization across neural language models》 观察到的非常接近(我们发现 PaLM 的斜率为 0.002R2=0.976$ R^2=0.976 $ ,而该论文发现 GPT-Neo 模型系列的斜率为 0.002R2=0.965$ R^2=0.965 $ )。

    • 正如 holdout 的结果所显示的那样,一定量的 "记忆" 是可以预期的,因为该模型会对常见的模板和模板产生 exact match continuation 。然而,训练数据的记忆率明显高于 heldout 数据,这表明该模型确实真正记住了数据的某些部分。

    • 一个样本被记住的机会与它在训练中的 uniqueness 密切相关。只见过一次的样本比见过很多次的样本,被记住的可能性小得多。这与以前的工作一致。

    记忆是否是个问题,取决于数据集的属性和目标应用。因此,在为大型语言模型选择下游应用时,应始终小心谨慎。一个计算效率高,但 memory-intensive 的方法是在训练数据上实现 Bloom filter ,并限制在训练数据集中逐字出现的序列被生成。虽然这种方法会去除确切的记忆内容,但仍然可以产生近似的记忆内容(与训练集文本仅有一两个字差异的 generations )。

50.7 数据集的污染

  1. 以前的工作报告了 benchmark evaluation set 和训练数据之间非常高的数据重合率。这些以前的工作只是看了完整的 evaluation example text 和训练数据之间的高阶 n-grams (如 13-grams )的出现,并认为任何有重叠的样本都是污染的。在这里,我们没有简单地寻找高阶 n-gram 重叠,而是计算了 29 个主要英语 NLP 基准任务的统计数据,并手动检查了每个任务的大量例子,以确定哪些例子的污染比例高。

    我们可以粗略地将 29 个基准任务分为四类:

    • 批量污染:数据集本身有很大一部分出现在公开网络上。我们认为这些是被污染的。例子:SQuADv2, Winograd

    • 从互联网构建:数据集的问题+答案(或 prefix+continuation )是自动从公开的互联网中提取的,因此许多评估实例可能在我们的训练数据中。我们认为这些被污染了。例子:Web Questions, ReCoRD, Lambada

    • 互联网上的 Context:问答数据集的上下文来自互联网,但问题不是。我们不认为这些是被污染的。例子: BoolQ, Multirc, ANLI

    • 没有明显的重叠:数据集与我们的训练数据没有明显的重叠。例子:StoryCloze, OpenbookQA

    我们能够根据问题、prompt、或 target 中至少 70%8-gram 是否在我们的训练数据中出现过一次,将每个数据集分成一个 "污染" 和 "干净"子集。我们在 Table 17 中报告了干净部分与 full set 的结果。我们可以看到,对于干净的子集,正向、负向的子集数量几乎相等,这意味着数据污染不会对我们的报告结果造成有意义的影响。

    我们对机器翻译进行了类似的分析,结果显示在 Table 18 中。

50.8 探索解释性

  1. 前面我们实证了 chain-of-thought prompting 如何大幅提高多步骤推理任务的预测准确性。在这种情况下,模型生成的 reasoning chain 在评估时没有被使用。当然,这种 explanatory generation 的作用除了提高准确率外,还有其他原因。

    • 首先,了解模型是否因为正确的原因而产生了正确的答案,而不仅仅是进行表面上的统计推断,是非常有科学意义的。

    • 第二,该解释有可能被展示给系统的终端用户,以增加或减少他们对某一预测的信心。

    • 第三,在许多情况下(例如,解释一个笑话),解释本身就是期望的输出。

    本节的目标是展示 PaLM 的能力,即通过 chain-of-thought prompting 来生成 explanatory language generation 。下图给出了这些任务的例子。虽然我们承认这些结果并不等同于彻底的定量分析,但我们要说的是,我们相信这展示了一个真正了不起的深度语言理解水平。

50.9 代表性的 bias 分析

  1. 性别和职业偏见:Winogender 的整体结果如下图所示。我们发现,准确率随着模型规模的扩大而提高,PaLM 540B1-shot/few-shot setting 创造了新的 SOTA

    与之前的工作一样,我们还报告了分类的准确性,将 Winogender 分成了刻板印象或被骗子集(gotcha subset )。下图给出了分类的准确率,并按性别进一步细分。我们发现,在刻板印象的例子上,准确率比被骗的例子高;而在被骗的例子上,女性的准确率最低。

  2. 毒性和偏见:按照 GPT-3 描述的类似程序,我们分析了在给出 "{term} was very... " 这样的 prompt 时,model continuation 中常见的共现词,其中被替换的词提到了性别、宗教或种族和民族身份。种族身份共现分析揭示了几个方面的情况:

    • 首先,种族身份术语经常相互共现,这就提出了关于在它们出现的句子中各身份之间的关系(如果有的话)的问题。

    • 其次,prompt language 的微小变化导致了结果的急剧变化。

    除了计算共同出现次数之外,我们还使用 Perspective API 来对 continuations 的毒性进行分类。下图报告了按不同宗教团体划分的模型输出中的毒性概率分布。

  3. 开放式生成中的毒性:毒性退化(toxicity degeneration)对应于 generation 可被语言模型感知为有毒的文本。我们使用Perspective APIcontinuation 分配一个毒性概率。然后,我们研究在 prompt 是有毒的各种可能性下,毒性概率在 model continuations 中的分布。Figure 23 显示了在不同的模型规模下,续篇的平均毒性概率(toxicity probability of the continuation: TPC )与 prompt 的分桶毒性概率(binned toxicity probability of the prompt: TPP )的比例关系图。可以看到:

    • TPC 随着 TPP 的增加而增加,同时一直低于 prompt 毒性和人类基线(除了在 prompt 毒性的最高水平)。

    • 相比较于 8b 模型,两个更大的模型(62B540b )的毒性概率明显增加。这表明毒性水平和模型大小之间存在相关性,但鉴于62B PaLM540B PaLM 模型的毒性非常相似,只能有一定程度上的相关性。

    • 模型的 TPCTPP 比人类的 TPC 更一致。 这表明模型受到 prompt 风格的强烈影响,并有可能产生与 prompt 相似的毒性水平的 continuation

    下表中,我们报告了在第一句、以及 128-decode step 中,在毒性 prompt 和无毒 prompt 下,产生至少一个有毒 prompt 的概率。

  4. 局限性:本节介绍的公平性分析的一个主要限制是,它们只在英语语言数据上进行,而 PaLM 是在多语言数据上进行训练并在多语言语言处理任务上进行评估。

    此外,需要注意的是,尽管调查英语语言技术中的偏见的工作越来越多,但缺乏公平性基准的标准化,缺乏对 NLP 中不同bias 测量的危害的理解,也缺乏对身份的统一、全面覆盖。

    此外,偏见可能充斥着一个系统,这取决于具体的下游应用、其具体的 training pipeline 和应用层面的保护(例如安全的过滤器)。

50.10 伦理方面的考虑

  1. 详细内容参考原始论文。

50.11 Scaling 的开放问题

  1. 在我们的 Introduction 章节中,我们描述了四个主要的方向,这些方向导致了大型 LMfew-shot learning 中的显著质量改进:模型的深度和宽度、training tokens 数量、训练语料的质量、在不增加计算量的情况下增加模型容量(即,sparse 模型)。我们在 PaLM 的背景下讨论这些结果。尽管 Chinchilla 报告的许多基准任务与 PaLM 评估的任务不重叠,但我们可以比较那些重叠的基准任务的结果。Table 20 显示了 9 个英语 NLP 基准任务的具体结果。

    Figure 24 中,我们展示了两组任务的综合结果,作为总训练 FLOPs 数的函数。

    然而,我们不能使用这些结果来推断我们关键的 scaling question 的答案:与 PaLM 540B 相比,一个在 Y tokens 上训练的大小为 X 的模型的效果如何?有几个原因可以解释为什么这是一个难以回答的问题:

    • 为了得出强有力的结论,这样的实验必须逐个 scale 地进行,这有很大的计算成本。

    • 如果较小的模型使用比较大的模型更少的 TPU 芯片进行训练,这将按比例增加训练的 wall-clock time ,因为总的 training FLOPs 数是相同的。如果使用相同数量的 TPU 芯片进行训练,在不大幅增加 batch size 的情况下保持 TPU 的计算效率将是非常困难的。

    • 虽然网络上有大量的非常高质量的文本数据,但也不是无限量的。对于 PaLM 所选择的语料库混合比例来说,在我们的一些子语料库中,数据在 780B tokens 之后开始重复,这就是为什么我们选择这个作为训练的 endpoint 。目前还不清楚在大规模语言模型训练中,重复数据的价值与未见过的数据相比如何。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文