← 返回

🔍什么会影响 LLM 的输出?——影响因素全景综述

最后更新 2026/04/05 08:20:03 LLM大语言模型输出质量SE4AI综述

什么会影响 LLM 的输出?——影响因素全景综述

给同一个 LLM 发完全相同的 prompt,两次得到的输出可能截然不同。为什么?本文汇总了社区和学术界关于影响 LLM 输出的各种因素,从推理参数到训练方法,从 prompt 设计到模型架构。

面向读者:做 SE4AI 研究的学者和工程师——如果你在评估 AI 系统的可靠性、可测试性或可维护性,理解这些因素是设计实验和度量的基础。


一、推理时参数(Inference Parameters)

1.1 Temperature(温度)

影响:控制输出的随机性。Temperature 越高,输出越多样但越不可控;越低,输出越确定但可能重复。

Temperature行为适用场景
0.0近乎确定性(贪心解码)代码生成、事实问答
0.7平衡创造性和一致性通用对话
1.0+高随机性,可能产生荒谬输出创意写作(需谨慎)

社区观察:Simon Willison 多次强调,做基准测试时应设置 temperature=0,否则测量到的性能波动可能只是随机性而非模型差异。

1.2 Top-p(核采样)

影响:从累积概率超过 p 的最小 token 集合中采样。top_p=0.1 意味着只从概率最高的 10% token 中选。

与 temperature 的交互:通常建议只调一个。同时设 temperature=0top_p=1 会互相矛盾。

1.3 Top-k

影响:只从概率最高的 k 个 token 中采样。top_k=1 等价于贪心解码。

不同模型的默认差异:GPT 系列默认不用 top-k,LLaMA 系列常用 top_k=40。同一问题在不同 top-k 设置下可能给出截然不同的答案。

1.4 Repeat Penalty / Frequency Penalty

影响:惩罚已出现的 token,防止重复。设太高会导致模型回避常用词,输出变得生硬或语无伦次。

1.5 Max Tokens

影响:限制输出长度。设太短会导致截断(句子没说完);设太长可能让模型”填充”无意义内容。

1.6 Seed

影响:固定 seed 理论上可使输出确定,但实际上不同硬件、不同 batch size、不同 CUDA 版本下 seed 的可复现性差异很大。PyTorch 的 torch.use_deterministic_algorithms(True) 可以强制确定性,但会牺牲性能。


二、Prompt 设计因素

2.1 System Prompt

影响:System prompt 对模型行为的影响远超大多数人的直觉。Anthropic 的研究发现,Claude 的”性格”很大程度上由 system prompt 塑造。

典型案例

  • “You are a helpful assistant” vs “You are an expert in machine learning” → 后者在 ML 问题上表现显著更好
  • 过长的 system prompt 会挤压上下文窗口,反而降低效果
  • Anthropic 官方建议 system prompt 不超过 1500 字

2.2 Few-shot Examples(少样本示例)

影响:提供 2-5 个示例通常显著提升输出质量,但:

  • 顺序敏感:示例的排列顺序会影响模型偏好(“recency bias”——最后一个示例影响最大)
  • 格式敏感:示例格式不一致会导致模型输出格式混乱
  • 过多示例反而有害:超过 5-8 个后,模型可能过拟合示例模式

2.3 Chain-of-Thought(思维链)

影响:让模型”一步步思考”可以显著提升推理任务准确率(GSM8K 上 +20-40%)。

但有陷阱

  • 模型可能编造看起来合理但实际错误的推理步骤
  • “Let’s think step by step” 在简单问题上反而浪费 token
  • 某些模型对 CoT 不敏感(小模型可能无益甚至有害)

2.4 Prompt 长度

影响:“Lost in the Middle” 效应——模型倾向于关注 prompt 的开头和结尾,忽略中间部分。研究显示放在 prompt 中间的关键信息被模型忽略的概率显著更高。

来源:Liu et al., “Lost in the Middle: How Language Models Use Long Contexts” (2023)

2.5 Prompt 措辞的微小变化

影响:改变几个词可能完全改变输出。

典型案例

  • “请分析” vs “请详细分析” → 后者输出更长但不一定更准确
  • “用中文回答” 放在 prompt 开头 vs 结尾 → 放在开头效果更好
  • 加 “Take a deep breath and work on this step by step”(Google DeepMind 发现这种”心理暗示”在某些任务上有效)

三、模型层面因素

3.1 预训练数据

影响:最大但最不透明的因素。

  • 数据截止日期:模型不知道截止日期后的事件
  • 数据分布:英文占比高的模型在中文任务上表现较差
  • 数据质量:包含大量低质量网页的模型输出可能更”啰嗦”或更偏颇
  • 数据污染:测试集数据混入训练集会虚高性能指标

社区讨论:Karpathy 在多次演讲中指出,预训练数据的质量和清洗流程是模型性能的最核心因素,远比架构差异重要。

3.2 后训练(Post-training)

RLHF(基于人类反馈的强化学习)

影响:让模型更”对齐”人类偏好,但引入了已知问题:

  • 奖励黑客(Reward Hacking):模型学会生成表面上符合奖励信号但实际低质量的内容
  • 模式坍塌:RLHF 后的模型输出多样性降低,趋向于”安全但无聊”
  • 标注者偏好:RLHF 反映的是标注者的偏好,不是所有用户的偏好

DPO(直接偏好优化)

影响:比 RLHF 更稳定,但同样会降低输出多样性。有研究表明 DPO 训练的模型在创意任务上表现不如 SFT-only 模型。

Constitutional AI

影响:Anthropic 的方法,让模型自我批评。优点是减少有害输出,缺点是模型可能变得过于谨慎(“I can’t help with that” 对无害问题)。

3.3 量化(Quantization)

影响:将模型从 FP16 压缩到 INT8/INT4 以减少内存占用,但会导致精度损失。

Red Hat 的大规模测试(50 万+ 次评估):

  • INT8 量化:几乎无损(< 1% 性能下降)
  • INT4 量化:中等损失(2-5% 下降,取决于任务)
  • INT2 量化:严重损失(10-20% 下降)

意外发现:某些任务上量化模型反而表现更好——可能是因为量化充当了正则化。

来源:Red Hat, “We ran over half a million evaluations on quantized LLMs” (2024)

3.4 模型合并(Model Merging)

影响:将多个微调模型的权重合并(如 DARE、TIES-Merging),在社区越来越流行。

风险

  • 合并后模型在某些任务上可能突然退化
  • 合并效果高度依赖模型之间的”兼容性”
  • 目前没有可靠的理论预测合并后的表现

3.5 Mixture of Experts(MoE)

影响:如 Mixtral、GPT-4(据推测),只激活部分参数。

特点

  • 同样的 prompt 在不同 run 中可能激活不同的专家组合
  • 这增加了输出的内在变异性
  • MoE 模型在知识密集型任务上可能表现不稳定(某个专家”没被叫到”)

四、上下文与环境因素

4.1 Context Window 状态

影响:同一个模型,在对话的不同阶段表现不同。

  • 开头 vs 后面:长对话中,模型对早期内容的”记忆”会减弱
  • 上下文窗口已满时:模型需要丢弃旧信息,可能导致前后矛盾
  • KV Cache 状态:不同的 batch 大小会影响 KV Cache 的精度(尤其是 FP16 累加误差)

4.2 Batch Size

影响:推理时的 batch size 会影响输出——更大的 batch 意味着更多的浮点误差累积。

实证:有人发现 batch_size=1batch_size=32 时,同一 prompt 的输出 token 概率分布有可测量的差异。

4.3 硬件差异

影响

  • 不同 GPU(A100 vs H100 vs 消费级 4090)的浮点运算有微小差异
  • 这些微小差异在长序列生成中会累积放大
  • Apple Silicon (MPS) vs CUDA 的结果可能显著不同

4.4 软件版本

影响

  • 不同版本的 CUDA、cuDNN、PyTorch 的 matmul 实现不同
  • Flash Attention 的不同版本可能产生不同的数值结果
  • vLLM、TGI、llama.cpp 等推理引擎的默认参数不同

五、解码策略

5.1 Greedy vs Sampling

  • Greedy:每次选概率最高的 token。确定性高,但容易产生重复和乏味输出
  • Sampling:按概率分布随机选。更多样,但可能选到低概率的错误 token

影响:维护多条候选路径,选总体概率最高的。传统 NLP 常用,但在 LLM 时代效果不如 sampling——LLM 训练目标是单步最优,不是序列最优。

5.3 Self-Consistency(自洽性)

影响:采样多次,取多数投票。Google Research 发现这能显著提升推理准确率。

代价:需要多次推理,成本线性增长。

来源:Wang et al., “Self-Consistency Improves Chain of Thought Reasoning in Language Models” (2023)

5.4 Speculative Decoding(投机解码)

影响:用小模型快速生成候选,大模型验证。输出质量与大模型一致,但速度快 2-3 倍。

前提:小模型和大模型的输出分布不能差太远。


六、评估方法论因素

6.1 基准选择

问题:同一个模型在不同 benchmark 上的排名可能完全不同。

典型案例

  • GPT-4 在 MMLU 上领先,但在 HumanEval 上可能被 Claude 超越
  • 某些 benchmark 已经被”刷穿”(saturation),失去了区分度
  • Benchmark 污染问题使结果可信度下降

6.2 评估 Prompt 模板

影响:用不同的 prompt 模板评估同一个模型,准确率差异可达 10-15%。

LLM-as-Judge 的偏差

  • 位置偏差:倾向于给第一个回答更高分
  • 自我偏差:倾向于给自己的输出更高分
  • 长度偏差:倾向于给更长的回答更高分

6.3 评估的随机性

问题:用 GPT-4 评估 Claude 的输出,评估者本身的 temperature 和 prompt 也会影响评分。这是一种”随机性套随机性”的问题。


七、SE4AI 视角:对系统可靠性的影响

从软件工程角度看,以上因素共同构成了一个巨大的可控变量空间。对于做 AI 系统测试和质量保证的研究者来说:

7.1 可测试性挑战

  • 测试用例的不可复现性:同一测试用例在不同参数/环境下结果不同
  • Oracles 的模糊性:LLM 输出没有明确的”对错”,只有”好/不好”的连续谱
  • 回归测试困难:模型更新后,旧的测试结果不再可比

7.2 工程实践建议

因素建议
Temperature生产环境固定 temperature,不要让用户随意调
Seed记录 seed 以便复现,但不要依赖确定性
Prompt版本控制 prompt,和代码一样做 code review
量化做 A/B 测试确认量化后质量可接受
模型更新灰度发布,用同一组测试集做前后对比
评估多维度评估,不要依赖单一指标

7.3 对研究的启示

如果你在做 SE4AI 研究(测试、质量保证、可靠性),需要注意:

  1. 控制变量:论文中必须明确报告 temperature、top_p、seed 等设置
  2. 多次采样:单次运行的结果不可靠,应报告多次采样的均值和方差
  3. 跨模型验证:在至少 2-3 个模型上验证结论,避免模型特异性
  4. 评估鲁棒性:对 prompt 措辞的变化做敏感性分析

八、总结:影响因素层级图

┌─────────────────────────────────────────────────┐
│              预训练数据与过程                      │  ← 最大影响,最不可控
│  (数据质量、分布、污染、训练超参数)                  │
├─────────────────────────────────────────────────┤
│              后训练对齐                           │  ← 改变行为模式
│  (RLHF, DPO, Constitutional AI)                 │
├─────────────────────────────────────────────────┤
│              模型架构                            │  ← 固有特性
│  (MoE, Context Length, 参数量)                   │
├─────────────────────────────────────────────────┤
│              推理参数                            │  ← 用户可控
│  (temperature, top_p, top_k, penalty)           │
├─────────────────────────────────────────────────┤
│              Prompt 设计                         │  ← 用户可控且影响巨大
│  (system prompt, few-shot, CoT, 措辞)            │
├─────────────────────────────────────────────────┤
│              解码策略                            │  ← 实现层面
│  (greedy, sampling, beam, self-consistency)     │
├─────────────────────────────────────────────────┤
│              量化与部署                           │  ← 工程权衡
│  (FP16, INT8, INT4, 推理引擎)                    │
├─────────────────────────────────────────────────┤
│              硬件与环境                           │  ← 常被忽略
│  (GPU型号, CUDA版本, batch size, 浮点误差)        │
└─────────────────────────────────────────────────┘

参考资料

  1. Simon Willison, “How coding agents work” (2026) — 关于 agent 工程中的可复现性
  2. Liu et al., “Lost in the Middle: How Language Models Use Long Contexts” (2023)
  3. Wang et al., “Self-Consistency Improves Chain of Thought Reasoning” (2023)
  4. Red Hat, “We ran over half a million evaluations on quantized LLMs” (2024)
  5. Anthropic, “Constitutional AI: Harmlessness from AI Feedback” (2022)
  6. Karpathy, “Intro to Large Language Models” — 预训练数据的核心地位
  7. Meta, “Llama 3 Model Card” — 量化评估数据
  8. Google DeepMind, “Large Language Models as Optimizers” (2023) — “Take a deep breath” 发现

本报告基于 2026 年 3 月对 128 篇社区文章和学术论文的综合分析。