概述
自然语言处理(NLP)经历了从规则方法到统计方法、从深度学习到预训练大模型的演进历程。ChatGPT 的出现标志着 NLP 进入了一个全新的时代——大语言模型不仅能够理解和生成自然语言,还能执行推理、编码、创作等复杂任务。而 Prompt Engineering 作为与这些模型交互的核心技能,已经从"艺术"发展为有方法论支撑的"工程学科"。
本模块从语言模型的技术原理出发,深入解析注意力机制、RLHF 对齐等核心技术,然后系统介绍 Prompt Engineering 的核心方法论。无论你是 AI 应用开发者还是日常使用者,掌握这些技能都将极大提升你与 AI 协作的效率和质量。
语言模型的演进历程
语言模型的发展可以分为四个关键阶段,每个阶段都代表了范式上的根本性转变。
从统计语言模型到神经网络
早期的 N-gram 语言模型基于统计方法,通过计算词序列的共现频率来估计概率。这种方法简单直接,但无法捕捉长距离依赖关系,且存在数据稀疏问题。Word2Vec 的出现是一个重要转折——它通过浅层神经网络学习词的分布式表示(词向量),使得语义相近的词在向量空间中距离较近。"king - man + woman = queen"这一经典案例展示了词向量的算术性质,也揭示了分布式表示的强大能力。
预训练语言模型时代
ELMo 使用双向 LSTM 学习上下文相关的词表示;BERT 通过掩码语言模型(MLM)和下一句预测(NSP)进行预训练,在多个 NLP 任务上取得突破;GPT 系列采用自回归方式从左到右生成文本。BERT 的双向编码器和 GPT 的单向解码器代表了两种不同的预训练范式。当前的 LLM(如 GPT-4、Claude、Gemini)大多沿用了 GPT 的自回归架构,因为生成能力使其能够处理更广泛的任务。
大语言模型(LLM)的涌现能力
当模型规模超过某个临界点时,会出现"涌现能力"(Emergent Abilities)——模型突然具备了在训练中未明确教授的能力,如链式推理、上下文学习(In-Context Learning)等。这些能力不是通过精细设计获得的,而是从大规模数据和参数中自然涌现的。理解涌现现象对于理解 LLM 的能力和局限性至关重要:它既是机遇(模型能做超出预期的事),也是风险(模型行为难以完全预测和控制)。
注意力机制详解
注意力机制是 Transformer 架构的核心,也是理解 LLM 工作原理的关键。
自注意力的计算过程
自注意力机制通过三个线性变换将输入序列分别映射为查询(Query)、键(Key)和值(Value)三个矩阵。注意力权重的计算公式为:Attention(Q, K, V) = softmax(Q * K^T / sqrt(d_k)) * V。直觉理解:Query 是"我在找什么",Key 是"我能提供什么",Value 是"我的实际内容"。通过计算 Query 和所有 Key 的点积,模型能够决定"我应该关注序列中的哪些位置"。
# 自注意力计算的核心步骤
Q = X @ W_q # 将输入 X 映射为查询向量
K = X @ W_k # 将输入 X 映射为键向量
V = X @ W_v # 将输入 X 映射为值向量
scores = Q @ K.T / sqrt(d_k) # 计算注意力分数
weights = softmax(scores) # 归一化为概率分布
output = weights @ V # 加权求和得到输出
多头注意力与旋转位置编码
多头注意力(Multi-Head Attention)将注意力空间分成多个"头",每个头独立计算注意力,然后拼接结果。这允许模型同时关注不同类型的信息——某些头关注语法关系,某些头关注语义相似性,某些头关注位置关系。在位置编码方面,现代 LLM(如 LLaMA)普遍采用旋转位置编码(RoPE),相比原始的正弦位置编码,RoPE 具备更好的外推性和相对位置表达能力。
RLHF / RLAIF 对齐技术
对齐(Alignment)是指让 AI 模型的行为符合人类期望和价值观。原始的语言模型只是"文本续写器",它学会了生成流畅的文本,但未必是有用、诚实和无害的。RLHF 是目前最主流的对齐方法。
RLHF 三阶段流程
第一阶段:监督微调(SFT)。使用人工编写的高质量问答对微调预训练模型,使其学会遵循指令。第二阶段:奖励模型训练。让模型生成多个回复,由人类标注员进行偏好排序(哪个回复更好),训练一个奖励模型来预测人类偏好。第三阶段:使用 PPO(Proximal Policy Optimization)算法,以奖励模型的输出为信号优化语言模型,使其生成更符合人类偏好的回复。
RLAIF 与 Constitutional AI
RLAIF(AI 反馈的强化学习)用 AI 模型替代人类标注员进行偏好评估,大幅降低对齐成本。Constitutional AI 进一步提出了一套"宪法"原则(如"不要帮助人类做有害的事"),让 AI 根据这些原则自我批评和修正。这种方法不需要大量人类标注数据,同时能够实现更一致、更可扩展的价值观对齐。
Prompt Engineering 方法论
Prompt Engineering 是一门关于如何高效与大语言模型交互的技术学科。好的 Prompt 能够显著提升模型输出的质量、准确性和可控性。
指令设计原则
清晰的指令应该包含四个要素:角色设定(你是一个资深的 XX 专家)、任务描述(请完成以下 XX 任务)、输出格式(以 JSON 格式返回)、约束条件(不要超过 500 字)。指令应该具体而明确,避免模糊表达。"分析这段代码"就不如"分析这段代码的时间复杂度,找出性能瓶颈,并提供优化建议"。
Chain-of-Thought(思维链)
CoT 的核心思想是让模型"先思考再回答",而不是直接给出最终答案。通过在 Prompt 中添加"请一步一步思考"或提供推理示例,模型能够将复杂问题分解为多个中间步骤,显著提升推理准确性。Tree-of-Thought 进一步扩展了这一思想,允许模型探索多条推理路径并进行自我评估,适用于需要探索和回溯的复杂问题。
Few-shot 与 Zero-shot
Zero-shot 直接向模型描述任务,不提供示例。Few-shot 提供若干(通常 3-5 个)输入-输出示例,帮助模型理解任务的具体要求。示例的质量比数量更重要——好的示例应该覆盖典型情况和边界情况,展示期望的输出格式和推理深度。对于复杂的分类任务或格式化输出,Few-shot 通常能取得更好的效果。
结构化输出与 System Prompt
在实际应用中,我们通常需要模型输出结构化数据(如 JSON)。通过在 Prompt 中指定输出 Schema 或使用函数调用(Function Calling)机制,可以让模型以可解析的格式返回结果。System Prompt 是设置模型全局行为的高级工具——它定义了模型的角色、能力边界、语气风格和行为准则。一个好的 System Prompt 应该包含:角色定位、核心能力、行为约束、输出规范和边界声明。
# System Prompt 设计示例
你是一位资深的 Python 后端工程师。
你的职责是:代码审查、性能优化建议、架构设计指导。
约束:只回答与 Python 后端开发相关的问题。
输出格式:先给出结论,再展开分析,最后给出代码示例。
如果问题超出你的专业范围,请明确说明。
学习建议
- 阅读论文:精读《Attention Is All You Need》《Training Language Models to Follow Instructions with Human Feedback》《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》三篇论文。
- 动手实验:使用 OpenAI / Claude / Gemini API,编写脚本测试不同 Prompt 策略的效果差异,建立直观感受。
- 系统性练习:在 Prompt 工程社区参与挑战赛,学习他人的优秀 Prompt 模板,建立自己的 Prompt 库。
- 理解原理:不要满足于"会写 Prompt",要深入理解 Tokenizer、KV Cache、Temperature 等底层概念,这将帮助你写出更高效的 Prompt。
- 迭代优化:Prompt Engineering 是一个持续迭代的过程,建立评估指标并记录每次修改的效果。
推荐资源
- 课程: Stanford CS224n(Natural Language Processing with Deep Learning)— NLP 领域最权威课程
- 指南: OpenAI Prompt Engineering Guide + Anthropic Prompt Engineering 文档 — 官方最佳实践
- 论文: 《Language Models are Few-Shot Learners》(GPT-3)— 理解涌现能力和 In-Context Learning
- 实践: Learn Prompting (learnprompting.org) — 开源的 Prompt Engineering 教程,从入门到高级
- 工具: LangSmith / PromptFlow — Prompt 版本管理和评估平台
Transformer 变体与应用
BERT 与双向编码:MLM 任务、NSP 任务
BERT(Bidirectional Encoder Representations from Transformers)是 Google 于 2018 年提出的预训练语言模型,采用 Transformer 编码器架构,通过双向上下文学习深度语言表示。
BERT 架构特点:
- 仅使用 Transformer 编码器,不使用解码器
- 双向注意力,每个词可以关注左右两侧的所有词
- 预训练+微调范式,在大量无标注数据上预训练,在下游任务上微调
预训练任务:
BERT 采用两个无监督预训练任务:
-
掩码语言模型(Masked Language Model, MLM):
随机遮蔽输入序列中 15% 的词,模型预测被遮蔽的词。具体策略:
- 80% 的概率用 [MASK] 替换
- 10% 的概率用随机词替换
- 10% 的概率保持不变
MLM 使模型能够利用双向上下文,学习深层语义表示。
-
下一句预测(Next Sentence Prediction, NSP):
给定两个句子 A 和 B,预测 B 是否是 A 的下一句。50% 的样本中 B 是真实下一句,50% 是随机采样。NSP 帮助模型理解句子间关系,对问答、推理任务有益。
BERT 变体:
- BERT-Base:12 层,768 维,12 个注意力头,1.1 亿参数
- BERT-Large:24 层,1024 维,16 个注意力头,3.4 亿参数
BERT 的成功开启了 NLP 的预训练时代,后续模型如 RoBERTa、ALBERT 等在此基础上进行了改进。
GPT 与自回归生成:因果语言建模
GPT(Generative Pre-trained Transformer)是 OpenAI 于 2018 年提出的生成式预训练模型,采用 Transformer 解码器架构,通过自回归方式学习语言模型。
GPT 架构特点:
- 仅使用 Transformer 解码器
- 因果(自回归)注意力,每个词只能关注之前的位置
- 从左到右的单向语言建模
因果语言建模:
GPT 的训练目标是最大化给定前文条件下的下一个词概率:
这种训练方式使 GPT 能够生成连贯的文本,适合文本生成、续写等任务。
GPT 系列演进:
- GPT-1(2018):1.17 亿参数,证明预训练+微调范式的有效性
- GPT-2(2019):15 亿参数,展示强大的零样本生成能力
- GPT-3(2020):1750 亿参数,实现少样本学习(few-shot learning)
- GPT-4(2023):多模态能力,推理能力显著提升
GPT 系列的成功证明了规模化的力量:更大的模型、更多的数据、更多的计算资源可以带来能力的质变。
T5 与统一框架:Text-to-Text 框架
T5(Text-to-Text Transfer Transformer)是 Google 于 2019 年提出的统一框架,将所有 NLP 任务都转换为文本到文本的格式。
Text-to-Text 统一框架:
T5 的核心思想是:所有 NLP 任务都可以统一为"输入文本 -> 输出文本"的形式:
- 翻译:
translate English to German: Hello world -> Hallo Welt - 摘要:
summarize: The article text... -> Summary text - 分类:
cola sentence: The movie is great -> acceptable - 问答:
question: What is the capital of France? context: France is... -> Paris
这种统一框架的优势:
- 单一模型处理多种任务,简化部署
- 任务间的知识迁移,提升样本效率
- 统一的评估标准,便于比较
T5 架构:
T5 采用完整的 Transformer 编码器-解码器架构,与原始 Transformer 基本一致,但进行了以下改进:
- 去除了 LayerNorm 的偏置项
- 将 LayerNorm 放置在残差连接之外
- 使用相对位置编码
T5 预训练:
T5 采用**跨度损坏(Span Corruption)**任务:随机遮蔽输入序列中的连续片段,模型需要重构被遮蔽的内容。相比 BERT 的 MLM,跨度损坏更接近生成任务,更适合编码器-解码器架构。
高效 Transformer 变体:稀疏注意力、线性注意力
标准 Transformer 的注意力计算复杂度为 ,其中 是序列长度。这限制了 Transformer 处理长序列的能力。研究者提出了多种高效变体:
稀疏注意力(Sparse Attention):
稀疏注意力通过限制每个 Query 只能关注部分 Key 来降低计算复杂度。
- 局部注意力(Local Attention):只关注固定窗口内的位置
- 空洞注意力(Dilated Attention):在窗口内以固定步长采样
- 全局注意力(Global Attention):部分位置可以关注所有位置
- Longformer:组合局部注意力和全局注意力,复杂度
- BigBird:结合随机注意力、窗口注意力和全局注意力
线性注意力(Linear Attention):
线性注意力通过核技巧将注意力复杂度从 降低到 :
其中 是特征映射函数。代表性工作包括:
- Performer:使用随机特征映射近似 softmax 注意力
- Linformer:低秩近似 Key 和 Value 矩阵
- Linear Transformer:使用核方法实现线性复杂度
其他高效变体:
- Reformer:使用局部敏感哈希(LSH)近似最近邻注意力
- Routing Transformer:学习动态路由选择关注的 token
- Flash Attention:通过 IO 优化减少内存访问,保持 计算但显著加速
BERT、GPT、T5 对比
| 特性 | BERT | GPT | T5 |
|---|---|---|---|
| 架构 | 仅编码器 | 仅解码器 | 编码器-解码器 |
| 注意力 | 双向 | 单向(因果) | 编码器双向,解码器单向 |
| 预训练任务 | MLM + NSP | 因果语言建模 | 跨度损坏 |
| 适用任务 | 理解任务 | 生成任务 | 通用任务 |
| 典型应用 | 分类、NER、问答 | 文本生成、对话 | 翻译、摘要、问答 |
| 参数规模 | 1.1 亿-3.4 亿 | 1.17 亿-1750 亿+ | 2.2 亿-110 亿 |
| 预训练数据 | BookCorpus + Wikipedia | WebText | C4 数据集 |
这三种模型代表了 Transformer 的不同应用范式:
- BERT 专注于理解任务,双向编码提供丰富的上下文表示
- GPT 专注于生成任务,自回归训练使模型能够生成连贯文本
- T5 追求统一框架,一个模型处理多种任务
Transformer 及其变体的出现彻底改变了自然语言处理领域。从机器翻译到文本生成,从问答系统到代码生成,Transformer 架构已成为现代 NLP 的基石。理解 Transformer 的原理和变体,是掌握当代 AI 技术的必修课。