自从 OpenAI 推出 GPT-3 以来,AI 领域的发展进入一个崭新的阶段,即大模型时代。大规模语言模型又称大语言模型(Large Language Model, LLM),简称大模型,具备强大的理解和推理能力,使其能够出色地完成各种不同的任务。通过对这种经典的人机交互方式为用户提供服务,就是大模型的一项重要应用。大模型已经成为 AI 领域最热门的话题之一,并被视为实现通用人工智能(Artificial General Intelligence, AGI)的可能途径。
大模型是自然语言处理(Natural Language Processing, NLP)领域的一个重要概念,代表了一种基于大规模语料库训练的语言模型。虽然大模型可以完成多种多样的任务,但其本质上仍然是一种语言模型,即对一个句子(由多个单词组成的序列)出现概率的建模。
语言模型是 NLP 领域的一个核心概念,是对语言的规律和分布的统计建模,用于推断给定序列中一个词的分布概率。语言模型的形式化定义如下,对于 \( w_i \) 表示第 \( i \) 个词,其概率公式可以表示为:
$$ p(s) = p(w_1)p(w_2|w_1)p(w_3|w_1w_2)\cdots p(w_i|w_1\cdots w_{i-1}) = \prod_{i=1}^{l} p(w_i|w_1\cdots w_{i-1}) $$
虽然由于语言的复杂性,无法列举出所有可能出现的句子,但语言模型在统计层面对语言的规律进行了建模,从而能够进行语言的分布统计和推断。语言模型的实现方法有很多,其中最经典的是$N$元(N-gram)模型。
对于预测一个词 $w_i$ 的分布概率的情况,随着历史长度的增加,可能的历史数目是按指数级增长的,这样无法高效地进行统计学学习。$N$-gram 模型假设当前词的分布概率只与前 $N-1$ 个词有关。以 2-gram 模型为例,当前词的分布概率只与前 1 个词有关,其概率公式可以表示为
$$ p(w_i | w_{i-1}) = \frac{c(w_{i-1}w_i)}{c(w_{i-1})} $$
式中,$c(w_{i-1}w_i)$ 表示 2-gram 词在给定文本中共现的次数。共现次数的比例近似体现了单词出现的概率。统计语言模型是基于构造统计语言模型的训练数据得到的,通过上式,就能够利用训练数据进行统计语言模型的学习。
$N$-gram 模型存在一个问题,即对于没有在语料库中出现的 $N$-gram 词,无法对其进行概率估计。尽管平滑技术能够改善这个问题,使 $N$-gram 模型正常工作,但是 $N$-gram 模型在大规模语料库上训练建模的能力仍然有限。因此,研究人员提出使用神经网络在一个连续空间中构建语言模型。前馈神经网络语言模型学习到的分布式表示,使一个词能够使用一个向量表示,取得了优于 $N$-gram 模型的性能。之后被提出的循环神经网络(Recurrent Neural Network, RNN)语言模型能够对变长的输入建模,捕获更长的上下文信息。神经网络语言模型已经是目前语言模型的标准实现方法。
预训练大模型在大量无标注的开放数据进行预训练,学到了更好的语言表示,并对下游任务的性能提升有显著的效果。Word2Vec是最早的预训练大模型,之后研究人员提出了基于循环神经网络的预训练大模型 ELMO。随着 Transformer结构的提出,后续的预训练大模型基本都采用了以 Transformer 为基
随着深度学习的发展,语言模型已经成为一个非常重要的研究领域。目前的语言模型都使用深度神经网络对语言的生成概率进行建模。基于数据驱动的深度学习,语言模型在广泛的文本数据上进行预训练,并极大地促进了下游任务的性能提升。预训练大模型可以分为两种:一种是基于编码器结构的 BERT,另一种是基于解码器结构的 GPT。
BERT 基于 Transformer 编码器结构,是一种强调学习表示的模型。BERT 的训练目标是完成类似于完形填空的任务,模型预测的概率是句子中被掩蔽的词的分布概率。BERT 是基于双向注意力机制对输入的句子进行编码的,因此不是一种自回归生成式语言模型。BERT 由于具有强大的表示能力,所以掀起了 NLP 发展的一次浪潮。
GPT 的建模形式与上文中介绍的语言模型更一致。GPT 使用一个标准的语言模型建模目标,即优化最大似然概率。在结构上,GPT 只使用 Transformer 解码器。GPT 使用朴素的语言模型的训练目标进行学习,无须特别设计预训练任务,需要在非常广泛的文本语料上进行预训练。
此外,预训练大模型也可以基于编码器-解码器结构,如 Google 提出的 T5。T5 同样是生成式语言模型,其将所有任务统一为生成任务进行学习,取得了不错的效果。
在预训练大模型的研究初期,BERT 在学术界和工业界引起了一定的关注,其表现略胜于 GPT。然而,随着 ChatGPT 的出现,情况发生了显著变化。基于解码器结构的自回归生成式语言模型 GPT 逐渐崭露头角,成为大模型时代的主流模型。这一现象产生的背后有许多原因,其中一个关键原因是 GPT 的预训练任务与结构更加易于扩展和优化。
GPT 在 2018 年由 OpenAI 提出,其与 BERT 在同一时间被提出,但在早期并没有得到比 BERT 更多的关注。之后 OpenAI 不断升级 GPT,使 GPT 不断进化,拥有越来越多的参数及越来越强大的能力。
GPT-1 为广泛的下游 NLP 任务提供了一个强大的语言基座,GPT-2 已经能够在无监督的条件下完成多种任务。到大模型时代,GPT-3 依赖海量的参数获得了惊人的表现,其性能在零样本或小样本条件下超越了 GPT-2 微调后的最好性能。
语言模型的规模不断扩大,除了在一系列 NLP 任务中取得了更好的性能,还在推理任务中有了独特的表现。已有研究发现,在大模型上,通过思维链(Chain of Thought,CoT)技术,即一种特殊的 Prompt(提示)设计,在零样本条件下,只需要一句简单的 “Let’s think step by step”,就能在推理任务中取得显著的模型性能提升。
值得注意的是,CoT 能力只有在语言模型规模达到一定程度后(通常参数量在 $100$ 亿个以上)才会出现。
随着 GPT 的语言能力不断进化,语言模型的发展来到 ChatGPT 时代。虽然 GPT-3 具有强大的语言能力基础,但其本质上仍然是一个对语料进行统计建模,学习下一个词预测(Next Token Prediction,NTP)的语言模型。
语言模型规模变得更大并不意味着模型本身能更好地遵循用户的意图。例如,大模型可能会生成不真实、有害或对用户无益的输出。面向真实世界的广泛任务,一个更好的语言模型应当能够遵循人类指令去完成任务。因此,OpenAI 关注 AI 对齐(AI Alignment)问题,进一步训练 GPT 遵循人类指令的能力。
在 ChatGPT 正式推出之前,OpenAI 就发布了 InstructGPT。InstructGPT 的实现与 ChatGPT 在技术上基本一致。