大语言模型基础:从Transformer到生成式AI
从1956年达特茅斯会议正式提出“人工智能”这一术语开始,人类便踏上了一条让机器理解和生成人类语言的漫漫长路。七十年来,这条道路充满了曲折与突破,从早期的规则系统到统计学习方法,再到如今以Transformer为代表的深度学习时代,每一次技术范式的转变都深刻重塑了我们对语言智能的认知。大语言模型(Large Language Model,简称LLM)作为这场技术革命的最新结晶,正在重新定义人机交互的边界。理解这些模型的工作原理,不仅是掌握提示工程的必要前提,更是把握人工智能发展趋势的关键所在。
自然语言处理的演进历程
符号主义时代:规则与逻辑的尝试
人工智能研究的早期阶段,学者们普遍相信人类智能可以通过符号操作来实现。在自然语言处理领域,这意味着构建一套完整的语法规则和语义网络,让计算机能够像人类一样“理解”语言。1960年代末期,ELIZA系统的出现曾让人们一度以为机器对话的时代即将来临。这个由约瑟夫·维森鲍姆在麻省理工学院开发的程序,能够通过模式匹配技术与用户进行看似智能的对话。然而,ELIZA的本质不过是一系列预设的替换规则——它并不真正理解任何词语的含义,只是在表面上维持对话的连贯性。
这一时期的代表性工作还包括SHRDLU系统。道格拉斯·维诺格拉德设计的这个程序能够理解关于积木世界的自然语言指令,如“把红色方块放到蓝色金字塔上”或“找到一块比绿色积木矮的积木”。SHRDLU展示了规则系统的潜力:只要领域足够受限、规则足够精细,计算机确实可以执行复杂的语言理解任务。但这种方法的局限性同样明显——每当遇到规则未覆盖的新情况时,系统就会失效,而且规则的编写需要大量的人工投入,难以扩展到开放域场景。
符号主义方法的核心假设是:语言可以完全形式化为规则系统。这种假设忽视了语言的本质特征——歧义性、上下文依赖性和演变性。一个简单的句子“我看见他拿着望远镜”,既可以理解为“看见”动作的发出者是“我”、对象是“他拿着望远镜”,也可以理解为“我”借助望远镜来观察“他”。这种歧义在符号系统中需要逐一编写规则来处理,而自然语言中的歧义种类几乎是无限的。
统计学习方法:数据驱动的新范式
1990年代,随着计算能力的提升和大规模语料库的可用性,统计学习方法开始主导自然语言处理领域。这一范式的核心思想发生了根本转变:从“让机器学习规则”转向“让机器从数据中发现规律”。统计机器翻译、隐马尔可夫模型、条件随机场等技术相继涌现,在词性标注、命名实体识别、句法分析等任务上取得了显著进展。
统计方法的一个关键优势是其泛化能力。与需要手动编写每一条规则的专家系统不同,统计模型可以从海量文本中自动学习语言的统计规律。例如,在词性标注任务中,一个基于隐马尔可夫模型的系统能够学习到“形容词后常接名词”“动词后常接副词”等统计模式,从而对未见过的词语组合做出合理预测。这种数据驱动的方法大大减少了对人工规则的依赖,使得系统能够更容易地适应新的领域和语言。
然而,统计方法也面临固有的瓶颈。传统机器学习算法依赖人工设计的特征——研究者需要根据具体任务精心选择和构造特征,然后将文本转化为机器可处理的向量表示。这个过程被称为“特征工程”(Feature Engineering),是当时NLP研究的核心工作之一。特征工程要求研究者既具备语言学知识,又熟悉机器学习技术,而且设计出的特征往往只针对特定任务,难以迁移到其他场景。此外,词袋模型(Bag of Words)、n-gram等传统文本表示方法无法捕捉词语之间的复杂语义关系,“bank”一词在“river bank”和“savings bank”中的含义只能通过上下文来区分,但传统方法很难做到这一点。
深度学习时代:表示学习的兴起
2010年代,深度学习的突破为自然语言处理带来了革命性变革。卷积神经网络(CNN)和循环神经网络(RNN)的引入,使得模型能够自动从数据中学习特征表示,摆脱了繁琐的手动特征工程。尤其是2013年托马斯·米科洛夫等人提出的Word2Vec词嵌入方法,第一次将词语映射到连续的向量空间,使得语义相似性可以通过向量距离来度量。“国王”与“女王”的关系可以通过向量运算来表示:$vector(国王) - vector(男人) + vector(女人) \approx vector(女王)$。这一发现深刻影响了后续NLP研究的方向。
长短时记忆网络(LSTM)和门控循环单元(GRU)的提出进一步提升了模型处理长序列的能力。这些架构通过引入门控机制,有效缓解了传统RNN的梯度消失问题,使得模型能够学习长距离依赖关系。在机器翻译领域,2014年由谷歌团队提出的Seq2Seq模型将编码器-解码器架构推向主流,使得“编码-解码”这一范式成为序列生成任务的标准框架。2015年提出的注意力机制(Attention Mechanism)更是成为后续突破的关键技术——它允许解码器在生成每个词时动态关注源序列的不同部分,显著提升了翻译质量。
尽管如此,这些模型仍然存在根本性的局限。循环架构的顺序计算特性使得训练时间随序列长度线性增长,难以并行化;当序列过长时,即使引入注意力机制,模型仍然难以有效捕捉远距离的依赖关系。这些瓶颈在2017年迎来了突破性的解决方案——Transformer架构的诞生标志着NLP领域进入了一个全新的时代。
Transformer架构详解
自注意力机制的工作原理
2017年,谷歌研究团队在论文《Attention Is All You Need》中提出了Transformer架构,彻底颠覆了序列建模的传统思路。这篇开创性论文的核心贡献在于:完全抛弃了循环结构,仅使用注意力机制来实现序列到序列的转换。这一设计决策带来了显著的优势——自注意力机制允许模型在计算某个位置的表示时,同时考虑序列中所有其他位置的关系,从而实现真正的并行计算,并有效捕捉长距离依赖。
理解自注意力机制,需要从向量运算的角度来审视。假设我们有一个输入序列,其词嵌入表示为 $X = [x_1, x_2, ..., x_n]$,其中每个 $x_i$ 是一个 $d_{model}$ 维向量。自注意力机制的核心是三组可学习的权重矩阵:查询矩阵 $W_Q$、键矩阵 $W_K$ 和值矩阵 $W_V$。通过这些矩阵,我们可以将每个输入向量投影为对应的查询、键和值表示:
$$ Q = XW_Q, \quad K = XW_K, \quad V = XW_V $$
其中,$Q$、$K$、$V$ 的维度均为 $n \times d_k$(假设使用相同的键维度 $d_k$)。
接下来,计算注意力分数。对于序列中的每个查询(通常对应一个特定位置),我们需要计算它与所有键的相似度。注意力分数通过点积运算得到:
$$ \text{scores} = QK^T $$
为了避免点积值过大导致梯度消失,我们对结果进行缩放处理:
$$ \text{scores}_{scaled} = \frac{QK^T}{\sqrt{d_k}} $$
然后,通过 softmax 函数将分数归一化为概率分布:
$$ \alpha = \text{softmax}(\text{scores}_{scaled}) $$
最后,加权求和得到注意力输出:
$$ \text{Attention}(Q, K, V) = \alpha V $$
直观理解这个过程:查询向量代表当前位置的“需求”,键向量代表其他位置提供的“属性”,而值向量则是实际要传递的信息。通过计算查询与键的匹配程度,我们可以确定应该从哪些位置获取信息以及获取多少。这正是自注意力机制能够捕捉词语间语义关联的数学本质。
举一个具体的例子。考虑句子:“猫坐在垫子上,因为它很舒服。”在处理代词“它”时,模型需要识别“它”指代的是“垫子”而不是“猫”。在自注意力机制中,“它”位置的查询向量会与“猫”和“垫子”位置的键向量进行点积运算。由于“垫子”在语义上与“舒服”的关联更强(键向量经过学习会捕捉这种关系),相应的注意力分数会更高,使得模型在生成“它”的表示时更多地聚合“垫子”的信息。
```mermaid graph LR A[输入序列 X] --> B[线性变换] B --> C[Query Q] B --> D[Key K] B --> E[Value V] C --> F[点积计算] D --> F F --> G[缩放] G --> H[Softmax] D --> H H --> I[加权求和] E --> I I --> J[注意力输出] ```
多头注意力与位置编码
单头注意力虽然能够捕捉序列元素之间的关系,但其表达能力有限。为此,Transformer引入了多头注意力(Multi-Head Attention)机制,在不同的子空间中并行执行多个注意力操作,然后将结果拼接起来:
$$ \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W^O $$
其中每个注意力头定义为:
$$ \text{head}_i = \text{Attention}(QW_Q^i, KW_K^i, VW_V^i) $$
不同的注意力头可以学习关注不同类型的关系。例如,在处理自然语言时,一个头可能专注于语法结构关系(如主语-谓语),另一个头可能关注语义关联(如指代消解),第三个头可能捕捉位置邻近关系。这种并行但互补的关注方式大大增强了模型的表达能力。
实践中,GPT系列模型通常使用12到96个注意力头,每个头的维度相对较小以控制总计算量。例如,GPT-3使用了96个注意力头,每个头的维度为128($d_{model}=12288$)。这种配置使得模型能够在保持可管理计算成本的同时,学习丰富的内部表示。
另一个关键组件是位置编码(Positional Encoding)。与循环网络不同,自注意力机制本身对序列顺序是“盲”的——它将输入视为集合而非序列。为了注入位置信息,Transformer采用了一种巧妙的位置编码方案:
$$ PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right) $$ $$ PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{model}}}\right) $$
其中 $pos$ 是位置,$i$ 是维度索引。这种基于正弦和余弦函数的设计具有一个重要特性:任意两个位置之间的相对距离可以通过线性变换来计算。这使得模型不仅知道每个词的绝对位置,还能有效地学习位置之间的相对关系。
```mermaid graph TD A[输入词嵌入] --> B[位置编码 PE] B --> C[词嵌入 + 位置编码] C --> D[多头自注意力层] D --> E[残差连接 & 层归一化] E --> F[前馈神经网络] F --> G[残差连接 & 层归一化] G --> H[输出] ```
前馈神经网络与层归一化
每个Transformer层除了自注意力模块外,还包含一个前馈神经网络(Feed-Forward Network,FFN)。这个模块独立地应用于序列的每个位置:
$$ \text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 $$
这实际上是一个两层全连接网络,中间使用ReLU激活函数。尽管结构简单,但FFN在Transformer中扮演着重要角色——研究表明,FFN可以被视为一种“键值记忆”,存储了训练数据中学到的知识。每个FFN可以被理解为从输入空间到输出空间的非线性变换,能够对注意力层提取的特征进行进一步处理和提炼。
残差连接(Residual Connection)和层归一化(Layer Normalization)是Transformer训练稳定性的重要保障。残差连接将模块的输入直接添加到输出上,形成 $x + \text{SubLayer}(x)$ 的形式,这使得梯度能够直接流过网络,缓解了深层网络的训练困难。层归一化则对每一层的输出进行归一化处理,稳定了激活值的分布:
$$ y = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} \cdot \gamma + \beta $$
其中 $\mu$ 和 $\sigma$ 是均值和标准差,$\gamma$ 和 $\beta$ 是可学习的缩放和偏移参数。
GPT系列模型完全由Transformer解码器堆叠而成。以GPT-3为例,它使用了96层Transformer解码器,每层包含自注意力模块和前馈网络,模型总参数量达到1750亿。这种大规模堆叠使得模型能够学习极其复杂的语言模式和知识表示。
GPT系列模型的发展脉络
GPT-1:生成式预训练的突破
2018年6月,OpenAI发布了第一代生成式预训练模型GPT-1。在论文《Improving Language Understanding by Generative Pre-Training》中,研究团队提出了一种创新的两阶段训练范式。
第一阶段是预训练(Pre-training)。模型在大规模无标注文本上进行语言建模任务——给定前文,预测下一个词。具体来说,GPT-1使用了标准的Transformer解码器架构,将文本序列 $u = \{u_1, u_2, ..., u_n\}$ 作为输入,通过最大化似然函数进行训练:
$$ L_1(u) = \sum_i \log P(u_i | u_{i-k}, ..., u_{i-1}; \theta) $$
其中 $k$ 是上下文窗口大小,$\theta$ 是模型参数。GPT-1的上下文窗口为512个token,预训练语料包括BooksCorpus数据集(约7000本书籍),模型参数量为1.17亿。
第二阶段是微调(Fine-tuning)。在预训练完成后,研究者将预训练好的模型参数作为起点,在下游任务的标注数据上进行监督学习。例如,对于文本分类任务,他们会在模型顶部添加一个分类层,然后在标注数据上微调整个网络。这种“预训练+微调”的范式充分利用了大规模无标注数据的语言知识,同时又能适应特定任务的需求。
GPT-1在多种自然语言理解任务上取得了当时的最佳成绩,包括自然语言推理、问答、语义相似度和文本分类等。这验证了生成式预训练范式的有效性,也为后续研究指明了方向。
GPT-2:规模扩张与涌现能力
2019年2月,OpenAI发布了GPT-2,模型的规模和能力都得到了显著提升。GPT-2使用了更大规模的Transformer架构,参数量从GPT-1的1.17亿增加到15亿,是前者的十倍以上。训练数据也从BooksCorpus扩展到了WebText数据集——一个从互联网上爬取的高质量网页数据集,包含约800万文档。
GPT-2的一个引人注目的发现是:随着模型规模的增大,模型开始展现出“零样本学习”(Zero-shot Learning)能力。这意味着模型在没有针对特定任务进行微调的情况下,仅通过自然语言提示就能执行各种任务。例如,模型可以接收“把以下句子翻译成法语:”这样的提示,然后完成翻译任务。
这一发现具有深远意义。传统机器学习需要为每个任务收集大量标注数据,而零样本学习能力使得模型可以通过语言描述来“理解”任务,大大减少了对任务特定数据的需求。GPT-2的论文标题《Language Models are Unsupervised Multitask Learners》充分表达了这一理念的雄心。
然而,早期版本的GPT-2能力相对有限,OpenAI出于安全考虑最初只发布了较小规模的版本。直到2019年11月,完全体的GPT-2才被完整发布。尽管如此,GPT-2开创的研究范式——通过扩大模型规模来解锁新能力——成为后续大模型发展的核心主线。
GPT-3:超大模型的里程碑
2020年5月,GPT-3的发布将语言模型的规模推向了新的高度。这个拥有1750亿参数的巨型模型成为当时最大的语言模型之一,在《Language Models are Few-Shot Learners》论文中展示了令人惊叹的能力。
GPT-3的核心突破在于“上下文学习”(In-context Learning)。与需要参数更新的微调不同,上下文学习允许模型在推理时仅通过提示中的几个示例来“学习”任务模式。OpenAI的研究表明,GPT-3在零样本、单样本和少样本设置下,在众多自然语言处理任务上都取得了极具竞争力的表现:
| 设置 | 说明 | 示例 | |------|------|------| | 零样本(Zero-shot) | 仅提供任务描述,无示例 | Q: 把以下句子翻译成法语:Hello | | 单样本(One-shot) | 提供一个示例 | 示例:Hello → Bonjour<br>Q: Hello | | 少样本(Few-shot) | 提供多个示例 | 示例1: Hello → Bonjour<br>示例2: World → Monde<br>Q: Hello |
GPT-3的少样本能力来自其庞大的参数规模和对大规模文本的学习。模型在预训练过程中“见过”无数的语言模式和任务形式,当在推理时接收到任务描述和示例时,能够激活相关的知识来完成推理。这种能力使得GPT-3可以在不进行任何参数更新的情况下适应新任务,大大提高了模型的通用性和实用性。
GPT-3还展示了在代码生成、数学推理、问答等领域的卓越能力,甚至能够编写简单的程序、解决数学奥林匹克级别的问题。然而,它也显示出明显的局限性——幻觉(生成看似合理但实际错误的内容)、推理能力有限、对提示敏感性高等问题仍有待解决。
GPT-3.5与GPT-4:安全性与能力的平衡
在GPT-3之后,OpenAI通过人类反馈强化学习(Reinforcement Learning from Human Feedback,RLHF)进一步优化了模型的输出质量。RLHF的核心思想是训练一个奖励模型来模拟人类对文本质量的判断,然后使用这个奖励模型来指导语言模型的微调。这一技术显著提升了模型的有用性和无害性,减少了有害输出的生成。
2022年11月,基于GPT-3.5的ChatGPT横空出世,将大语言模型的能力以对话的形式呈现给普通用户。ChatGPT能够进行自然流畅的对话,回答问题,解释概念,编写代码,其表现让公众第一次真正感受到了大语言模型的威力。用户可以像与人交流一样与模型互动,无需专业的技术背景,这大大降低了AI技术的使用门槛。
2023年3月,GPT-4的发布标志着多模态能力的加入。GPT-4不仅能够处理文本输入,还能接受图像输入,理解图片内容并据此回答