大语言模型输出头:从语言建模到条件生成与价值评估

发布时间:2026/7/30 13:57:23
大语言模型输出头:从语言建模到条件生成与价值评估
你可能已经注意到同一个大语言模型有时能流畅地续写文章有时能精准地回答你的问题有时又能扮演特定角色与你对话。这背后往往不是模型本身发生了本质变化而是一个关键但常被忽视的组件在起作用——输出头Output Head。如果把大语言模型的核心——那个经过海量数据预训练、拥有千亿参数的 Transformer 解码器——比作一个博闻强识的“大脑”那么输出头就像是连接这个大脑与外部世界的“翻译官”或“接口”。大脑内部处理的是高维、抽象的数学表示即隐藏状态而输出头的任务就是将这些抽象表示“翻译”成我们能理解的具体形式可能是下一个词的概率分布也可能是一个二分类的判断是/否甚至是一个具体的数值。很多人初学 LLM 时会误以为模型的能力完全由预训练决定。但实际情况是同一个预训练模型通过更换不同的输出头就能被“塑造”成完成不同任务的专用工具。理解输出头是理解如何真正“用好”而不仅仅是“知道”一个大模型的关键一步。这篇文章我们就来彻底搞懂 LLM 输出头家族的核心成员、它们的工作原理以及如何在实际中选择和运用它们。1. 输出头模型能力的“最后一公里”在深入具体类型之前我们有必要先建立两个核心认知输出头在模型中的位置以及它承担的真正价值。1.1 它在模型架构中的位置一个典型的、用于生成的 LLM 架构可以简化为一个流水线输入文本 - 嵌入层 - Transformer 层N x- 输出头 - 具体输出如词、分类标签等。输出头通常位于最后一个 Transformer 层的顶部。它接收的是最后一个 Transformer 层输出的、经过层层抽象和提炼的隐藏状态Hidden State。这个隐藏状态是一个高维向量蕴含了模型对输入文本的“理解”。输出头的作用就是基于这个“理解”完成特定任务所需的最终计算。1.2 为什么它如此重要从“通才”到“专才”的桥梁预训练让模型学会了语言的统计规律和世界知识成为一个“通才”。但现实中的任务千差万别有些任务需要模型预测下一个词如文本生成。有些任务只需要模型回答“是”或“否”如情感分析、内容审核。有些任务需要模型给出一个数值如评分预测。让“通才”去直接解决所有这些“专才”任务是低效甚至不准确的。输出头在这里扮演了“适配器”的角色。通过为“通才”模型安装上不同的“专才”输出头我们就能以极低的成本通常只需要训练输出头本身即“头部微调”让模型高效地适应下游任务。这就好比给同一台高性能电脑主机接上不同的外设接上显示器就是工作站接上游戏手柄就成了游戏机。主机预训练模型的强大是基础而外设输出头决定了它的具体用途。2. 语言建模头文本生成的基石语言建模头Language Modeling Head, LM Head是最经典、最基础的输出头。它的任务非常直观预测下一个词的概率分布。2.1 它是如何工作的输入最后一个 Transformer 层输出的隐藏状态通常对应输入序列的最后一个词元。线性变换通过一个线性层全连接层将隐藏状态向量的维度例如 4096 维映射到词表大小例如 50000 维。这个线性层就是 LM Head 的核心。Softmax 归一化对线性变换后的 logits 向量应用 Softmax 函数将其转换为一个概率分布。这个分布中的每个值对应词表中每个词作为“下一个词”出现的概率。# 一个极其简化的概念性代码帮助理解 hidden_state model.transformer_layers(input_ids)[-1][:, -1, :] # 获取最后一个隐藏状态的最后一个词元位置 logits lm_head_linear_layer(hidden_state) # 线性变换hidden_dim - vocab_size next_token_probs torch.softmax(logits, dim-1) # 得到概率分布 next_token_id torch.argmax(next_token_probs, dim-1) # 选择概率最高的词贪婪解码2.2 它的核心应用场景自回归文本生成这是 LM Head 最核心的用途。模型根据给定的上文Prompt利用 LM Head 预测下一个最可能的词然后将预测出的词作为新的输入的一部分继续预测下一个词如此循环生成完整的文本。你使用的 ChatGPT 等模型的对话能力底层就是基于 LM Head 的自回归生成。预训练目标在模型预训练阶段如 GPT 系列LM Head 被用来执行“下一个词预测”任务这是模型学习语言规律的核心机制。评估模型困惑度Perplexity困惑度是衡量语言模型好坏的重要指标其计算直接依赖于 LM Head 输出的概率分布。2.3 使用时的关键考量解码策略得到概率分布后如何选择下一个词这引出了不同的解码策略如贪婪搜索总是选概率最高的、束搜索保留多个候选序列、核采样从高概率候选词中随机选择等。不同的策略会在生成文本的“准确性”和“多样性”之间做出权衡。温度Temperature参数在应用 Softmax 之前可以对 logits 除以一个温度参数。温度越高1概率分布越平滑生成结果更多样、更有创造性温度越低1概率分布越尖锐生成结果更确定、更保守。注意LM Head 生成的内容质量高度依赖于其接收到的上文Prompt。模糊或存在矛盾的 Prompt 很容易导致生成内容混乱或“胡言乱语”。清晰的指令和上下文是高质量生成的前提。3. 条件生成头让生成“有章可循”有时候我们不仅希望模型能续写更希望它能根据特定条件或指令来生成内容。例如将英文翻译成中文或者根据一段摘要生成一篇文章。这时就需要条件生成头Conditional Generation Head。3.1 与 LM Head 的异同从架构上看条件生成头往往就是一个 LM Head。它们的核心区别不在于输出头的结构而在于模型的输入和训练方式。LM Head无条件/基础生成输入通常是单一的文本序列目标是学习序列内部的概率分布。P(输出 | 输入)更像是P(序列的下一个词 | 序列的上文)。条件生成头输入被明确分为两部分条件或源序列和目标序列。模型的目标是学习在给定条件的前提下生成目标序列的概率。P(输出 | 输入)在这里是P(目标序列 | 源序列)。例如在机器翻译任务中源序列条件“I love deep learning.”目标序列“我热爱深度学习。”模型在训练时会学习如何基于源序列来生成目标序列。在推理时你提供源序列模型就会自动开始生成对应的目标序列。3.2 实现条件生成的关键机制为了实现这种有条件的生成模型架构或输入格式需要做一些调整编码器-解码器架构这是最经典的方式如 T5、BART 模型。编码器专门处理源序列生成其表示解码器则基于编码器的输出和已生成的目标序列前缀通过 LM Head 自回归地生成下一个词。仅解码器架构 特殊格式对于像 GPT 这样的仅解码器模型可以通过在输入中插入特殊标记来区分条件和目标。例如在微调时将输入构造成[翻译] 英文I love deep learning. 中文我热爱深度学习。。模型会学习到[翻译]和后缀的“英文”“中文”是一种指令模式。推理时你输入[翻译] 英文I love deep learning. 中文模型就会接着生成“我热爱深度学习。”。3.3 主要应用场景机器翻译经典的序列到序列任务。文本摘要将长文本条件生成短摘要目标。问答将问题条件生成答案目标。现代聊天模型通常也基于此机制。指令跟随用户指令是条件模型的回复是目标。这是 ChatGPT 等对话模型的核心能力。核心洞察条件生成能力很大程度上是通过在特定格式的数据上微调通常是全部参数微调或 LoRA 等高效微调而注入到模型中的。微调过程让模型学会了如何解读“条件”并据此生成“目标”。4. 价值头评估生成内容的“裁判”当我们让模型生成内容时可能会得到多个候选结果。哪个结果更好、更符合人类偏好价值头Value Head就是用来解决这个问题的。4.1 价值头的作用价值头不直接参与文本生成而是作为一个独立的“评估模块”。它的任务是为给定的文本序列或序列的某个位置预测一个标量价值Value。这个价值可以理解为模型对该序列的“满意度”、“质量分”或“符合人类偏好的程度”。4.2 它如何与生成过程结合价值函数在强化学习尤其是 RLHF, Reinforcement Learning from Human Feedback的框架下价值头扮演着“价值函数”的角色。训练阶段首先需要训练一个价值头来拟合人类的偏好。例如给模型呈现两个生成结果让人选择更喜欢哪一个。价值头的目标是为被人类偏好的结果预测更高的价值。推理/生成阶段在生成文本时可以利用训练好的价值头来引导搜索过程例如在束搜索中不仅考虑生成序列的概率由 LM Head 提供还考虑其价值由 Value Head 提供综合打分选择最终输出。这被称为“奖励加权解码”或“价值引导解码”。4.3 实际应用中的意义价值头是 RLHF 技术栈中的核心组件之一。通过引入人类反馈价值头学会了区分“语法正确但无聊或有害的回复”和“既正确又有用、无害的回复”。这使得像 ChatGPT 这样的模型能够输出更符合人类价值观和期望的内容。重要区别LM Head 关心的是“下一个词是什么最自然”基于训练数据分布而 Value Head 关心的是“整个回复好不好”基于人类偏好。两者共同作用才能产生既流畅又优质的输出。5. 其他重要输出头成员除了上述三位“主角”输出头家族还有其他一些在特定任务中非常重要的成员。5.1 分类头用于文本分类任务如情感分析正面/负面、主题分类、垃圾邮件检测等。工作原理通常在线性变换后接一个 Softmax将隐藏状态映射到几个固定的类别概率上。与 LM Head 映射到整个词表不同分类头只映射到有限的几个类别。输入处理通常使用整个输入序列的特定表示如第一个词元[CLS]的隐藏状态或所有词元隐藏状态的平均池化作为分类头的输入。5.2 回归头用于预测一个连续的数值如评分预测、难度估计等。工作原理通过一个线性层将隐藏状态映射到一个单一的标量值通常不使用 Softmax。5.3 序列标注头用于对输入序列中的每一个词元进行分类如命名实体识别NER、词性标注POS。工作原理为输入序列中每个词元对应的隐藏状态都接上一个分类头通常是同一个线性层独立预测每个词元的标签。6. 如何为你的任务选择合适的输出头了解了各类输出头后面对一个具体任务该如何选择呢下面是一个决策框架。6.1 第一步明确你的任务输出形式首先问自己我期望模型给我什么期望的输出形式首选的输出头类型典型任务一段自然的文本语言建模头 (LM Head)故事创作、对话、续写根据指令或条件生成文本条件生成头 (本质是 LM Head 条件训练)翻译、摘要、问答、指令跟随一个类别标签如正面/负面分类头情感分析、主题分类、内容审核一个数值回归头评分预测、价格预测对输入文本中每个词打标签序列标注头命名实体识别、词性标注评估生成文本的质量价值头与 LM Head 配合用于 RLHF 或结果重排序6.2 第二步考虑模型微调策略选定输出头类型后接下来要考虑如何让预训练模型适配你的任务。直接使用零样本/少样本对于强大的对话模型如 ChatGPT你可以通过设计精巧的 Prompt直接利用其内置的条件生成能力而无需任何微调。这适用于通用任务或探索阶段。头部微调如果你的任务比较直接如分类且与预训练任务差异较大可以冻结预训练模型的所有参数只训练新添加的输出头。这种方式训练快、成本低但性能可能有限。全参数微调对于复杂任务如新的条件生成任务通常需要解冻整个模型包括输出头进行微调。这样模型能更好地适应新任务但计算成本高。参数高效微调如 LoRA、QLoRA它们在模型内部插入少量可训练参数而不是更新全部参数。这是一种在效果和成本之间取得很好平衡的现代方法。6.3 第三步实战中的注意事项不要混淆训练和推理在训练分类模型时我们使用分类头和交叉熵损失。但在推理时ChatGPT 这样的生成模型其“分类”能力如判断情感也是通过生成“正面”或“负面”这类文本来实现的这背后依然是 LM Head 在工作。要理解你使用的工具底层是哪种机制。关注损失掩码在训练条件生成或序列标注任务时非常重要的一点是只计算需要模型预测的部分的损失。例如在条件生成中损失只应针对目标序列部分计算条件部分应被掩码掉。 improper 的掩码会导致模型无法正常学习。输出头并非万能输出头决定了模型的“输出接口”但模型最终的表现上限取决于预训练模型本身的能力和质量。为一个弱小的预训练模型安装再强大的输出头也难以完成复杂任务。7. 总结掌握输出头真正驾驭 LLM输出头虽然只是 LLM 庞大架构中的“最后一层”但它却是模型能力释放的关键阀门。通过这篇文章我们希望你能建立起以下几点核心认知功能开关输出头是连接模型内部“智慧”与外部具体任务的桥梁。不同的输出头将同一个预训练模型变成了不同的工具。理解生成本质文本生成的核心是 LM Head 进行的自回归下一个词预测。所有看似复杂的对话、创作、翻译都源于这个简单的机制。条件生成是微调出来的模型理解指令并按要求生成的能力是通过在指令格式数据上微调注入的其物理基础仍然是 LM Head。质量与偏好需要额外引导让生成内容不仅正确而且优质、无害需要引入人类反馈价值头在这一过程中扮演着关键角色。正确选型是成功的一半根据任务目标选择正确的输出头类型和微调策略是应用 LLM 解决实际问题的高效起点。下一次当你惊叹于大模型的多才多艺时不妨想一想是哪个“输出头”正在幕后默默工作。理解它能让你从模型的使用者变为模型的驾驭者。