一、AI 发展脉络与 LLM 定位
AI 的演进路径是:机器学习(ML)→ 深度学习(DL)→ 大语言模型(LLM)。
深度学习包含两类模型:
- 判别式模型:学习数据边界,用于分类或预测(如判断图片"是猫"还是"不是猫")。
- 生成式模型:学习数据分布,用于生成新内容(如"画一只猫")。
LLM 本质上是生成式模型,但在微调阶段(如 RLHF、对比学习)也会引入判别式损失,因此两者存在交集。
二、从炸酱面理解神经网络演进
作者用"做老北京炸酱面"这个生动比喻,逐步讲解了 FNN → RNN → CNN → Attention → Self-Attention 的演进逻辑。
1. FNN(前馈神经网络)------ 新手厨师
FNN 每次只处理当前步骤,没有前后记忆。就像新手厨师看一步做一步,"切葱"时不知道葱是否洗干净,也不知道后续要大火爆炒,容易出错。
优点 :结构简单,适合独立步骤任务。
缺点:无法处理有序列依赖的任务。
2. RNN(循环神经网络)------ 有经验的厨师
RNN 通过循环机制记住之前的状态,能根据前几步调整当前操作。切葱时记得葱已洗净,炒肉时知道葱姜蒜的粗细,慢炖时综合前面步骤控制时间。
优点 :能处理顺序依赖。
缺点:记忆能力有限,序列过长时会"遗忘"早期步骤,且只能逐步处理,效率低。
3. CNN(卷积神经网络)------ 擅长找规律的厨师
CNN 用"放大镜"(卷积核)扫描相邻步骤,找出局部模式。比如发现"切细葱姜蒜 + 大火快炒 = 爆香效果好",或"调和酱汁 + 慢炖 = 香浓酱汁"。
优点 :快速捕捉局部规律,可并行处理。
缺点:只能看固定大小的局部窗口,无法处理远距离依赖(如最初选猪肉肥瘦对最终口感的影响)。
4. Attention(注意力机制)------ 资深厨师
Attention 能动态关注食谱中最相关的部分,通过计算当前步骤与所有过去步骤的相关性,为重要步骤分配更高权重。做"慢炖"时,会重点关注"葱姜蒜切法"和"酱汁比例",而非均匀对待所有步骤。
优点 :灵活处理长距离依赖,可解释性强。
局限:传统 Attention 常用于"输入-输出"任务(如翻译),需要外部"查询"引导。
5. Self-Attention(自注意力)------ 特级厨师
Self-Attention 是 Transformer 的核心。序列中每个步骤都能"自己关注"其他所有步骤,形成全局关系网。"切葱姜蒜"会计算自己与"炒肉"(关系强)、"慢炖"(关系中等)、"洗葱"(关系弱)的相关性,最终输出全局优化方案。
多头 Self-Attention 还能从多个角度同时优化(一个头关注爆香时间,另一个关注酱料搭配)。
优点 :全局关联、并行处理,克服了 RNN 的序列瓶颈和 CNN 的局部限制。
缺点:计算量大,需要大量训练数据。
三、Token 计算:算清这笔账
Token 是 LLM 处理文本的基本单位,不同语言的估算方式不同:
| 语言类型 | 估算关系 | 实际工作参考 |
|---|---|---|
| 英文 | 1 token ≈ 0.75 单词 ≈ 4 字符 | 4000 tokens ≈ 12000--16000 字符 |
| 中文 | 1 token ≈ 1--2 字符 | 4000 tokens ≈ 6000--8000 字符 |
| 中英混合 | 1 token ≈ 2--3 字符 | 4000 tokens ≈ 8000--12000 字符 |
注意事项:
- 不同模型使用不同分词器(BPE、WordPiece、SentencePiece 等),Token 计算结果有差异。
- 专业术语、标点密度等都会影响 Token 数。
- 需要精确计算时,推荐使用 OpenAI 的
tiktoken库。
Token 计算对测试工程师尤为重要:上下文超出 Token 限制会导致模型"幻觉"增加,影响输出质量。
四、超参数调优:控制模型行为的旋钮
超参数是模型推理时手动设置的配置参数,直接影响输出质量和风格。
temperature(温度)
控制输出的随机性和创造性,通过缩放 logits 改变 softmax 概率分布。
- 低值(0.1--0.5):输出更确定、更保守。
- 高值(>1.0):输出更随机、更有创意。
- 中间值(0.6--0.9):在确定性和创造性之间取得平衡。
- Greedy Decode = 0:始终选概率最高的词(但最高概率可能不止一个)。
注意:temperature 的影响是非线性的,在小区间(如 0.5--0.6)内调整效果远大于大区间(如 1.5--1.6)。大多数框架中,temperature 在 top_k、top_p 之后生效。
top_k
从概率最高的 k 个词中随机采样。
- k 值越高:输出越多样、越有创意。
- k 值越低:输出越受限、越基于事实。
- k = 1:等同于 Greedy Decode。
top_p(核采样)
根据累积概率阈值 p 动态选择采样词集合。
- p = 0:Greedy Decode。
- p = 1:从全部词汇中采样。
潜在风险:
- 扁平分布时,可能包含大量低概率 token,导致输出不一致。
- 峰值分布时,只有少数 token 被选中,多样性受限。
- 不能根据模型置信度动态调整候选集大小。
五、调参实战指南
| 问题现象 | 推荐调整方案 |
|---|---|
| 模型重复输出相同内容 | 增大 min_p 至 0.1,或增大 top_p 至 0.85;适当降低 temperature 至 0.7--0.8 |
| 仍然重复 | 尝试 repeat_penalty(1.05--1.15),再试 frequency_penalty 或 presence_penalty(0.1--0.5) |
| 输出太随机、相关性差 | 检查 top_k 是否为 0;适当增大 temperature;或降低 min_p 至 0.05--0.03 |
| 模型"一本正经地胡说" | 降低 temperature 至 0.3 甚至 0.1;增大 min_p 至 0.1--0.15 |
调参没有万能公式,需结合具体模型和任务场景。同时也要检查提示词是否有问题、上下文是否超出 Token 限制。
六、核心要点总结
理解 LLM 核心机制(FNN/RNN/CNN/Attention/Self-Attention)有助于测试工程师在序列任务和复杂依赖场景中更好地选择和使用模型。
Token 是 LLM 处理文本的基本单位,掌握不同语言的 Token 估算方法,能有效评估模型的上下文限制,避免因 Token 溢出导致的幻觉问题。
超参数(temperature、top_k、top_p 等)直接控制模型输出行为,测试工程师需要根据具体任务和模型特性灵活调整,而非套用固定公式。