原文链接:https://arxiv.org/abs/2303.18223

Intro

为了让机器像人类一样阅读、写作和交流,语言建模(LM)是提高机器语言智能的主要方法之一。其原理是对词语序列的生成概率进行建模,以预测未来的、或缺失的单词的概率。

LM的发展可以分为4个阶段:

  • 统计语言模型SLM:基于统计学习方法开发。基本思想是基于马尔可夫假设来建立词频预测模型
  • 神经语言模型NLM:通过神经网络(如RNN)来描述单词序列的概率
  • 预训练语言模型PLM:确立了“预训练和微调”的学习范式
  • 大语言模型LLM:通过对PLM的模型或数据大小进行扩展,能够提高下游任务的模型性能。与较小的PLM相比,LLM展现出了“涌现能力”

背景

通常,LLM指包含千亿(100B)或更多参数的Transformer语言模型。现有的 LLM 采用类似的 Transformer 架构和与小型语言模型 相同的预训练目标(如语言建模)

LLM的扩展法则

KM扩展法则:是由Kaplan等人提出的,神经语言模型的性能与模型规模\((N)\)、数据集规模\((D)\)和训练计算量\((C)\)之间的幂律关系: \[ \begin{aligned} &L(N)=(\frac{N_c}{N})^{\alpha_N},\ \alpha_N\sim0.076,\ N_c\sim 8.8\times10^{13}\\ &L(D)=(\frac{D_c}{D})^{\alpha_D},\ \alpha_D\sim0.095,\ D_c\sim 5.4\times10^{13}\\ &L(C)=(\frac{C_c}{C})^{\alpha_C},\ \alpha_C\sim0.050,\ C_c\sim 3.1\times10^{8} \end{aligned} \] 其中,\(L(\cdot)\)为用nats表示的交叉熵损失,\(c\)为给定的计算预算。

LLM的涌现能力

定义:在小型模型中不存在但在大型模型中产生的能力(是区别 LLM 与先前 PLM 的最显著特征之一)

LLM的三种典型涌现能力:

  • 上下文学习(ICL):ICL 能力是由 GPT-3 正式引入的。假设已经为LLM提供了一个自然语言指令和/或几个任务演示,它可以通过完成输入文本的单词序列的方式来为测试实例生成预期的输出,而无需额外的训练或梯度更新(如:175B的 GPT-3 模型在一般情况下表现出强大的 ICL 能力)
  • 指令遵循:通过使用自然语言描述的混合多任务数据集进行微调(称为指令微调),LLM 在未见过的以指令形式描述的任务上表现出色,具有更好的泛化能力
  • 逐步推理:对于小型语言模型而言,通常很难解决涉及多个推理步骤的复杂任务,例如数学问题。然而,通过使用思维链(Chain-of-Thought, CoT)提示策略,LLM 可以通过利用包含中间推理步骤的提示机制来解决这类任务,从而得出最终答案。

LLM的关键技术

LLM目前的角色就像一个通用、且有能力的学习者。导致其成功的关键技术包括:

  • 扩展:如前面所说,Transformer 语言模型存在明显的扩展效应:更大的模型/数据规模和更多的训练计算通常会导致模型能力的提升
  • 训练:大规模使分布式训练成为必须;此外,优化技巧对于训练的稳定性和模型性能也非常重要
  • 能力引导:LLM 具备了解决通用任务的潜在能力,而当执行一些特定任务时,这些能力可能不会展示出来。设计合适的任务指令或具体的 ICL 策略可以激发这些能力
  • 对齐微调:LLM 的预训练数据中包含低质量的数据,它可能会生成有毒、偏见甚至有害的内容。因此,有必要使 LLM 与人类价值观保持一致。InstructGPT 使 LLM 能够按照期望的指令进行操作,它利用了基于人类反馈的强化学习技术,将人类纳入训练循环中;ChatGPT 采用类似于 InstructGPT 的技术,在产生高质量、无害的回答方面表现出很强的对齐能力。
  • 工具操作:LLM 基于海量纯文本语料库进行训练,因此在那些非文本的任务上表现不佳(如数字计算)。此外,它们的能力也受限于预训练数据(如无法获取最新信息)。为了解决这些问题,学者们提出利用外部工具来弥补 LLM 的不足(如,利用计算器进行准确计算、利用搜索引擎检索未知信息 )。ChatGPT 已经实现了使用外部插件的机制,这种机制可以广泛扩展 LLM 的能力范围。

GPT系列模型的技术演进

ChatGPT 基于功能强大的 GPT 模型开发,其对话能力得到了专门的优化,在社会上引起了广泛关注。

  • 2018~GPT-1:GPT 代表生成式预训练(Generative Pre-Training)。它是基于生成型的、仅解码器的 Transformer 架构开发的,并采用了无监督预训练和有监督微调的混合方法。它为 GPT 系列模型建立了核心架构,并确立了对自然语言文本进行建模的基本原则,即预测下一个单词
  • 2019~GPT-2:采用了与 GPT-1 类似的架构,将参数规模增加到了 15 亿,并使用大规模的网页数据集 WebText 进行训练。它旨在通过无监督语言建模来执行任务,而无需使用标记数据进行显式微调。论文中提出,自然语言文本可以自然地用作为格式化输入、输出和 任务信息的统一方式,解决任务的过程可以被视为生成解决方案文本的单词预测问题。也就是说,每个 NLP 任务可以被视为基于世界文本的子集的单词预测问题,因此如果模型训练后具有足够能力以复原世界文本, 无监督语言建模可以解决各种任务
  • 2020~GPT-3:它扩展了(几乎相同的)生成式预训练架构,将模型参数扩展到了175B。论文中正式介绍了ICL,它是以小样本或零样本的方式使用 LLM,可以指导 LLM 理解以自然语言文本的形式给出的任务。GPT-3 可以被视为从 PLM 到 LLM 进化过程中的一个重要里程碑。它通过实证证明,将神经网络扩展到大的规模可以大幅增加模型的能力

此后,OpenAI从两个方面对GPT-3进行改进:

  1. 使用代码进行训练,以解决GPT难以推理复杂任务(如代码、数学)的能力;
  2. 与人类进行对齐(人类偏好、道德等)

接下来,LLM的重要里程碑就出现了:

  • 2022~ChatPGT:以类似 InstructGPT 的方式进行训练,但专门针对对话能力进行了优化
  • 2023~GPT-4:将文本输入扩展到多模态信号。总体而言,相比 GPT-3.5,GPT-4 在解决复杂任务方面具有更强的能力

LLM资源

预训练

数据收集

  1. 数据来源可以广义地分为两种类型:
  • 通用文本数据:如网页、书籍和对话文本等,具有规模大、多样性强且易于获取的特点,可以增强 LLM 的语言建模和泛化能力
  • 专用文本数据:如多语言数据、科学数据和代码等,可以赋予 LLM 解决专用任务的能力
  1. 数据预处理(如消除噪声、冗余、无关和潜在有害的数据)会极大地影响 LLM 的能力和性能。预处理策略包括:
  • 质量过滤:删除低质量数据。通常有两种方法
    • 基于分类器:训练分类器来筛选
    • 基于启发式:设计一组规则来筛选,如去除某种语言的数据、利用困惑度来删除不自然的数据、利用统计特征来过滤、利用关键词来过滤
  • 去重
  • 隐私去除:去除敏感的个人信息
  • 分词:将原始文本分割成词序列作为LLM的输入(虽然已经有很多分词器,但使用专门为预训练语料库而设计的分词器更有效)
  1. 预训练数据影响LLM的因素:
    • 混合来源:数据源自不同的领域或场景,不同领域的数据比例不同,对LLM的能力影响也不同
    • 数据数量
    • 数据质量

架构

Transformer架构是当前LLM的标准骨干。目前的主流架构:

  • 编码器-解码器架构
  • 因果解码器架构
  • 前缀解码器架构

其余架构上的不同还体现在:层标准化(Layer Norm),激活函数,位置编码,注意力机制和偏置

常用的预训练任务:语言建模、去噪自编码

模型训练

LLM的适配微调

  • 指令微调:是在自然语言格式的实例(instance)集合上微调预训练后的 LLM 的方法。这种方法与有监督微调和多任务提示训练密切相关
  • 对齐微调:为了避免模型出预期之外的行为(如编造虚假信息、追求不准确的目标,以及产生有害的、误导性的和有偏见的表达)

为了减少训练的参数量,同时尽可能达到良好的微调效果,有以下几种参数的高效微调方法:

  • 适配器微调(Adapter tuning):在 Transformer 模型中引入了小型神经网络模块(称为适配器)。微调过程中,适配器将根据特定的任务目标进行优化,而原始LM的参数保持不变。这样可以有效减少可训练参数的数量
  • 前缀微调(prefix tuning):在LM的每个 Transformer 层前添加了一系列前缀(即一组可训练的连续向量)。这些前缀向量具有任务的特异性,可以视为虚拟的 token 嵌入。被训练的参数只有前缀。
  • 提示微调(prompt tuning):在输入层中加入可训练的提示向量。即:给每个任务定义自己的prompt,拼接到数据上作为输入,训练的参数是prompt > 可以被视为前缀微调的一种。前缀微调完全由自由参数组成,与真正的token不对应;而提示微调与任务/token 有关
  • 低秩适配(LoRA):通过添加低秩约束来近 似每层的更新矩阵,以减少适配下游任务的可训练参数

LLM参数微调的实际应用:

  • Alpaca-LoRA 是通过 LoRA 训练出的 Alpaca(一个经过微调的 70 亿 LLaMA 模型)的轻量级微调版本
  • PEFT 代码库已在 GitHub 上发布。它包括了几种广泛使用的高效微调方法,包括 LoRA/ AdaLoRA、前缀微调、P- Tuning和提示微调。此外,它支持多个语言模型,如 GPT-2 和 LLaMA

使用

上下文学习、思维链提示。略

能力评测

总结与未来方向

  • 理论与原理:可解释性
  • 模型架构:如何构建 LLM 中更高效的 Transformer 变体
  • 模型训练:开发更系统、经济的预训练方法
  • 模型应用:在实际应用中微调的成本非常高,所以提示已成为使用 LLM 的主要方法。但是,
    • 设计提示需要大量人力。自动生成有效提示以解决各种任务将非常有用
    • 其次,一些复杂任务(例如形式证明和数值计算)需要特定的知识或逻辑规则,这些规则可能无法用自然语言很好地表达或通过示例演示。因此,开发更具信息量和灵活性的任务格式化方法以进行提示非常重要
    • 第三,现有的提示策略主要关注单轮性能。需要开发交互式提示机制(例如通过自然语言对话)来解决复杂任务
  • 安全与对齐:LLM会产生幻觉,也可能被有意的指令激发以产生有害的、有偏见的或有毒的文本,从而导致滥用风险
  • 应用与生态:有可能会产生一个以 LLM 为支持的应用生态系统