二、大模型基础与核心概念:从Transformer到采样温度的深度拆解
大模型应用开发面试中,基础概念的考察往往不是简单的名词解释,而是通过场景化问题检验候选人是否真正理解模型的工作原理与工程约束。本章围绕Transformer架构、注意力机制、预训练与微调、上下文窗口、与温度等六个核心概念展开,结合面试真题与实战案例,帮助你建立从理论到落地的完整认知框架。
2.1 Transformer架构:从RNN到自注意力的范式跃迁
核心原理:Transformer摒弃了循环神经网络(RNN)的时序递归结构,完全基于自注意力机制(Self-Attention)建模序列依赖。其核心创新在于两点:一是通过位置编码(Positional Encoding)注入序列顺序信息,二是通过多头注意力并行捕捉不同子空间的特征关系。标准Transformer由编码器(Encoder)和解码器(Decoder)堆叠而成,编码器负责理解输入,解码器负责生成输出,两者均包含多头自注意力子层、前馈网络子层以及残差连接与层归一化。
面试高频考点:面试官常问“为什么Transformer能替代RNN?”答案要点包括:并行计算能力(RNN必须逐步计算,Transformer可同时处理整个序列)、长距离依赖捕捉(RNN存在梯度消失问题,自注意力通过直接计算任意两个位置的相关性,路径长度为1)、以及训练效率的提升。但也要注意Transformer的代价:自注意力的计算复杂度为O(n²),其中n为序列长度,这直接引出了上下文窗口的物理限制。
| 对比维度 | RNN / LSTM | Transformer |
|---|---|---|
| 计算方式 | 逐步递归,依赖前一步隐藏状态 | 并行计算,全局建模 |
| 长距离依赖 | 路径长度随距离增长,信息衰减 | 任意位置直接交互,路径长度为1 |
| 训练效率 | 难以并行,训练慢 | 高度并行,适合GPU加速 |
| 复杂度 | O(n) | O(n²) 自注意力 |
| 典型应用 | 早期机器翻译、语音识别 | 、BERT、LLaMA等主流大模型 |
2.2 注意力机制:Query、Key、Value的直觉理解
核心原理:注意力机制的本质是“按相关性加权求和”。在自注意力中,每个生成三个向量:Query(查询)、Key(键)、Value(值)。Query与所有Key计算相似度(通常用缩放点积),经过Softmax归一化得到权重,再对Value加权求和。缩放因子√d_k(d_k为Key的维度)用于防止点积过大导致Softmax梯度消失。多头注意力则将输入拆分为多个子空间,分别计算注意力后拼接,使模型能同时关注不同位置的不同语义关系。
案例拆解:假设输入句子“猫坐在垫子上,它很舒服”,模型在处理“它”这个时,Query会与“猫”的Key产生高相似度,从而将注意力权重集中在“猫”上,正确理解“它”指代猫。这种动态权重分配使模型能够根据上下文调整关注点,而非像RNN那样机械地按顺序传递信息。
# 缩放点积注意力的简化实现
import numpy as np
def scaled_dot_product_attention(Q, K, V):
d_k = Q.shape[-1]
scores = np.matmul(Q, K.T) / np.sqrt(d_k)
weights = np.exp(scores) / np.sum(np.exp(scores), axis=-1, keepdims=True)
output = np.matmul(weights, V)
return output, weights
2.3 预训练与微调:两阶段范式与迁移学习
核心原理:预训练(Pre-training)是在海量无标注文本上通过自监督学习(如语言建模、掩码预测)训练模型,学习通用的语言表示。微调(Fine-tuning)则是在预训练模型基础上,使用任务相关的有标注数据继续训练,使模型适配特定下游任务。这种“预训练+微调”范式大幅降低了NLP任务的训练成本,使小团队也能基于大模型构建应用。
操作流程:预训练阶段通常需要数千张GPU、数周时间,数据规模达TB级;微调阶段则只需少量数据(数百至数万条)和较短时间。微调方式包括全量微调(更新所有参数)、LoRA(低秩适配,只训练少量新增参数)、Prefix-Tuning(在输入前添加可学习前缀)等。参数高效微调(PEFT)方法在工业界尤为流行,因为其显存占用小、训练速度快。
| 微调方法 | 更新参数 | 显存占用 | 适用场景 |
|---|---|---|---|
| 全量微调 | 全部参数 | 高 | 数据充足、算力充足 |
| LoRA | 低秩矩阵 | 低 | 资源受限、快速迭代 |
| Prefix-Tuning | 前缀向量 | 低 | 生成任务、指令微调 |
| Adapter | 适配器层 | 低 | 多任务学习 |
2.4 上下文窗口:模型的“工作记忆”边界
核心原理:上下文窗口(Context Window)指模型一次能处理的最大数量,包括输入和输出。它受限于两个因素:一是自注意力的O(n²)计算复杂度,窗口翻倍则计算量翻四倍;二是位置编码的外推能力,超出训练长度的位置编码可能导致性能骤降。主流模型的窗口从的2048扩展到 Turbo的128K、Claude 3的200K,但长窗口并非免费午餐,实际推理时显存和延迟都会显著增加。
判断方法与工程应对:当输入超过窗口限制时,常见策略包括:截断(丢弃最早的内容)、滑动窗口(保留最近N个)、摘要压缩(将历史对话总结为摘要)、以及RAG(检索增强生成,只将相关片段放入上下文)。面试中常问“如何设计一个支持超长文档问答的系统?”答案应围绕分块(Chunking)、向量检索、重排序、分段输入等方案展开。
2.5 :模型眼中的文本单位
核心原理:是模型处理文本的最小单位,可以是单词、子词或字符。现代大模型普遍使用子词分词(如BPE、WordPiece、SentencePiece),在词汇表大小和序列长度之间取得平衡。例如,“unbelievable”可能被拆分为“un”、“believ”、“able”三个。化直接影响模型的理解能力和推理成本:越多,计算量越大,响应越慢。
面试常见问题:“1个汉字大约等于多少个?”答案因分词器而异,中文在多数模型中约1个汉字=1-2个,英文约1个单词=1-2个。这直接影响API调用的费用估算和上下文窗口的规划。例如,的128K窗口约能容纳8-10万汉字,但实际可用长度需扣除输出数。
# 使用transformers库查看化结果
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")
tokens = tokenizer.tokenize("大模型应用开发")
print(tokens) # ['大', '模', '型', '应', '用', '开', '发']
2.6 温度(Temperature)与采样策略:控制生成的“随机性”
核心原理:温度参数T在Softmax层调整概率分布的平滑程度。T=1时保持原始分布;T>1时分布更均匀,生成更多样、更具创造性;T<1时分布更尖锐,生成更确定、更保守。温度并不改变的排序,只改变概率的相对差距。实际应用中,常与Top-K(只从概率最高的K个中采样)和Top-P(累积概率超过P的最小集合)结合使用。
案例拆解:某客服机器人项目初期使用T=0.7,发现回答过于发散,经常出现不相关的内容。将T调至0.2后,回答变得稳定,但略显机械。最终采用动态策略:常规问题T=0.1,开放性问题T=0.6,并配合Top-P=0.9,既保证了准确性又保留了灵活性。关键教训是:温度不是越大越好,需要根据业务场景对“确定性”和“创造性”的权衡来调参。
| 温度值 | 概率分布 | 生成特点 | 适用场景 |
|---|---|---|---|
| T < 0.3 | 尖锐 | 确定性高,重复风险 | 代码生成、数据提取 |
| T = 0.7~1.0 | 适中 | 平衡创造与稳定 | 通用对话、文案写作 |
| T > 1.2 | 平坦 | 多样性强,可能不连贯 | 创意写作、头脑风暴 |
本章从Transformer的架构创新出发,逐步拆解了注意力机制的计算逻辑、预训练与微调的工程范式、上下文窗口的资源约束、化的成本影响以及温度采样的效果控制。这些概念不是孤立的,而是相互关联的:Transformer决定了窗口限制,窗口限制影响规划,规划影响成本,温度控制影响输出质量。在面试中,能够串联这些概念并给出工程化解决方案的候选人,往往更能获得面试官的认可。