news 2026/5/1 9:51:59

大模型面试题49:从白话到进阶详解SFT 微调的 Loss 计算

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型面试题49:从白话到进阶详解SFT 微调的 Loss 计算

SFT 的全称是Supervised Fine-Tuning(监督微调),它的核心目标是:让预训练好的大模型,在人工标注的「指令-回答」数据上学习,精准匹配人类的指令意图

而 Loss(损失值)的作用,就是衡量模型生成的回答和人工标注的「标准答案」之间的差距——差距越小(Loss 越低),模型学得越好。

一、白话入门:用「老师批改作业」理解 SFT Loss

我们把 SFT 微调的过程,比作「老师教学生写作业」

  • 学生 = 预训练大模型:已经有了基础的语言能力(比如认识字、懂语法),但还不会按指令写标准答案。
  • 作业题 = SFT 训练样本:格式是指令 + 标准答案,比如:

    指令:解释什么是 LoRA?
    标准答案:LoRA 是低秩适配技术,能轻量化微调大模型。

  • 老师批改 = Loss 计算:老师只看「学生的答案」和「标准答案」的差异,扣分规则如下:
    1. 学生写的每个字(对应模型生成的每个 token),和标准答案越像,扣分越少;
    2. 只给「答案部分」扣分,指令部分不算分(因为指令是题目,不是学生要写的内容);
    3. 所有字的扣分加起来求平均,就是这次作业的「总 Loss」——Loss 越低,学生学得越到位。

核心结论:SFT 的 Loss 本质是「只计算回答部分的 token 预测误差」,和预训练阶段的 Loss 最大区别就是「不计算指令部分的损失」。

二、基础原理:SFT Loss 的核心是「交叉熵损失」

大模型生成文本的过程,是逐 token 预测(比如先预测第一个字,再用第一个字预测第二个字,以此类推)。SFT Loss 用的是生成任务的「标配损失函数」——交叉熵损失(Cross-Entropy Loss),计算分 3 步走。

步骤1:准备 SFT 训练样本的格式

SFT 的训练数据必须是「结构化的」,标准格式是:

<指令> [SEP] <标准答案>

其中[SEP]是分隔符(区分指令和答案),模型训练时会被编码成特殊 token。

举个和你项目相关的例子:

指令:检测到人手进入侧身危险区域,请生成告警文本
标准答案:告警!人手进入侧身危险区域,存在安全风险,请立即处理

关键规则:计算 Loss 时,只对「标准答案」部分的 token 计算,指令 + 分隔符部分的 token 全部「屏蔽」(不计算损失)

步骤2:模型输出每个 token 的概率分布

把训练样本输入模型后,模型会对「标准答案」的每个位置,输出一个「全词表概率分布」:

  • 假设模型的词表大小是 30000(常用量级),那么每个位置会输出 30000 个概率值,分别对应「这个位置是词表中第 1 个 token、第 2 个 token……第 30000 个 token」的概率;
  • 这些概率值的总和是 1(满足概率分布的基本要求)。

比如「标准答案」的第一个 token 是「告」,模型输出的概率分布里,「告」这个 token 的概率是 0.8,其他 token 的概率加起来是 0.2。

步骤3:计算交叉熵损失(逐 token 计算,再平均)

交叉熵损失的核心思想是:对每个位置,计算「标准答案 token 的概率」的负对数,然后求和取平均

单个 token 的 Loss 计算公式

对于标准答案的第iii个 token(记为yiy_iyi),模型预测它的概率是pip_ipipip_ipi是模型输出的概率分布中,yiy_iyi对应的概率值),那么这个 token 的 Loss 是:
lossi=−log(pi)loss_i = -log(p_i)lossi=log(pi)

  • 这个公式的直观意义:pip_ipi越大(模型越确定这个位置是yiy_iyi),lossiloss_ilossi越小
    比如pi=0.8p_i=0.8pi=0.8lossi=−log(0.8)≈0.223loss_i=-log(0.8)≈0.223lossi=log(0.8)0.223
    比如pi=0.1p_i=0.1pi=0.1lossi=−log(0.1)≈2.303loss_i=-log(0.1)≈2.303lossi=log(0.1)2.303
    极端情况pi=1p_i=1pi=1lossi=0loss_i=0lossi=0(完全预测正确)。
整个回答的总 Loss 计算公式

假设标准答案的 token 长度是NNN,那么整个回答的平均 Loss 就是:
LSFT=1N∑i=1Nlossi=−1N∑i=1Nlog(pi)L_{SFT} = \frac{1}{N} \sum_{i=1}^N loss_i = -\frac{1}{N} \sum_{i=1}^N log(p_i)LSFT=N1i=1Nlossi=N1i=1Nlog(pi)

举个极简例子

假设标准答案只有 2 个 token:「告警」,模型预测的概率分别是p1=0.8p_1=0.8p1=0.8(「告」)、p2=0.7p_2=0.7p2=0.7(「警」)。
总 Loss =12×(−log0.8−log0.7)≈12×(0.223+0.357)=0.29\frac{1}{2} \times (-log0.8 - log0.7) ≈ \frac{1}{2} \times (0.223 + 0.357) = 0.2921×(log0.8log0.7)21×(0.223+0.357)=0.29

三、进阶细节:SFT Loss 计算的关键技巧与注意事项

1. 「屏蔽指令部分」的实现:用 Mask 矩阵

实战中,我们不会手动区分指令和答案,而是用一个Mask 矩阵(掩码矩阵)来标记「哪些位置需要计算 Loss」:

  • Mask 矩阵是和输入序列等长的 0/1 向量;
  • 指令 + 分隔符部分的 Mask 值为0→ 计算 Loss 时跳过;
  • 标准答案部分的 Mask 值为1→ 计算 Loss 时保留。

比如输入序列的 token 索引是[0,1,2,3,4,5],其中0-2是指令,3是分隔符,4-5是答案,那么 Mask 矩阵就是[0,0,0,0,1,1]
最终 Loss 计算公式会变成:
LSFT=−1∑i=1Mmaski∑i=1Mmaski×log(pi)L_{SFT} = -\frac{1}{\sum_{i=1}^M mask_i} \sum_{i=1}^M mask_i \times log(p_i)LSFT=i=1Mmaski1i=1Mmaski×log(pi)
其中MMM是整个输入序列的长度,∑i=1Mmaski\sum_{i=1}^M mask_ii=1Mmaski就是标准答案的 token 数NNN

2. 为什么不用 MSE(均方误差)?

有同学会问:为什么不用回归任务的 MSE 损失?

  • 大模型的 token 预测是「多分类任务」(每个位置从 3 万 token 里选 1 个),而 MSE 适合「连续值预测」;
  • 交叉熵损失能直接衡量「概率分布的差距」,对多分类任务的优化效果远好于 MSE。

3. SFT Loss 的优化目标:让 Loss 稳步下降

训练过程中,我们通过 AdamW 等优化器,不断调整模型参数,让 SFT Loss 逐渐降低:

  • 理想情况:训练 Loss 稳步下降,验证 Loss 也同步下降 → 模型在学懂任务;
  • 过拟合情况:训练 Loss 持续下降,但验证 Loss 上升 → 模型「死记硬背」训练数据,泛化能力差;
  • 欠拟合情况:训练 Loss 和验证 Loss 都很高 → 模型没学懂任务,需要调大学习率或增加训练数据。

4. 和 RLHF 的关系:SFT 是 RLHF 的第一步

SFT 是RLHF(基于人类反馈的强化学习)的基础:

  • SFT 用「监督信号」(标准答案)训模型,Loss 是硬指标;
  • RLHF 用「人类偏好」训模型,会在 SFT 的基础上,用奖励模型(RM)和强化学习(PPO)进一步优化。

四、实战补充:SFT Loss 计算的常见坑

  1. 坑1:忘记屏蔽指令部分→ 模型会浪费算力去拟合指令,导致回答任务的效果变差;
  2. 坑2:标签平滑(Label Smoothing)→ 为了防止过拟合,可以给标准答案 token 的概率加一点「噪声」(比如把 1.0 改成 0.95),其他 token 分一点概率(比如 0.05/词表大小);
  3. 坑3:长序列截断→ 如果标准答案太长,超过模型的上下文窗口,需要截断,否则会报错,且 Loss 计算会失真。

五、总结

SFT Loss 的计算可以浓缩成 3 句话:

  1. 核心是交叉熵损失,衡量模型预测 token 和标准答案 token 的概率差距;
  2. 关键是只计算回答部分的 Loss,用 Mask 矩阵屏蔽指令和分隔符;
  3. 目标是让训练 Loss 和验证 Loss 稳步下降,避免过拟合或欠拟合。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 6:49:00

导师推荐!专科生必看8个AI论文平台测评与推荐

导师推荐&#xff01;专科生必看8个AI论文平台测评与推荐 2026年专科生AI论文平台测评&#xff1a;为何值得一看&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI论文平台已成为越来越多专科生撰写论文的重要工具。然而&#xff0c;面对市场上琳琅满目的选择&#xff0c…

作者头像 李华
网站建设 2026/5/1 6:49:06

Agent 成新基建,2030 年渗透率 90%,7 大赛道 + 标杆厂商深度拆解

前言 当生成式 AI 从 “内容工具” 进化为 “自主执行者”&#xff0c;智能体&#xff08;Agent&#xff09;正以国家战略为背书&#xff0c;掀起一场生产力革命。国务院《关于深入实施 “人工智能 ” 行动的意见》明确将其列为 “新基础设施”&#xff0c;硬性要求 2027 年应用…

作者头像 李华
网站建设 2026/5/1 7:51:26

交通仿真软件:Aimsun_(7).信号控制与优化

信号控制与优化 1. 信号控制的基本概念 信号控制是交通仿真中一个重要的组成部分&#xff0c;它通过控制交通信号灯的切换时间来优化交通流量。在Aimsun中&#xff0c;信号控制可以通过多种方式实现&#xff0c;包括固定时间信号控制、自适应信号控制和基于优化模型的信号控制。…

作者头像 李华
网站建设 2026/5/1 6:54:18

揭秘 Spring Boot 事务:动态增强的底层实现与核心组件

在分布式系统和复杂业务场景中&#xff0c;事务管理是保障数据一致性的核心技术之一。Spring Boot 提供的声明式事务机制&#xff0c;通过 “动态” 方式简化了事务配置&#xff0c;让开发者无需手动编写事务控制代码&#xff0c;仅通过简单注解即可实现事务管理。本文将从 “问…

作者头像 李华
网站建设 2026/4/27 16:40:29

ES在SpringBoot集成使用

1. 在Docker中安装Elasticsearch 这里不了解docker甚至还没安装虚拟机的小伙伴可以去黑马的视频下找到资源&#xff0c;去下一个虚拟机 这里就不对ES进行过多介绍了&#xff0c;具体的效果去b站看看叭&#xff0c;这里直接速成使用 安装ES并启动 docker pull elasticsearch &l…

作者头像 李华
网站建设 2026/5/1 6:49:24

基于微信小程序的新鲜到家生鲜超市销售系统(毕设源码+文档)

课题说明本课题聚焦基于微信小程序的新鲜到家生鲜超市销售系统的设计与实现&#xff0c;核心目标是解决传统生鲜超市销售中线下客流有限、商品展示不全面、订单处理效率低、配送调度混乱、生鲜保鲜追溯难及用户购物体验差等痛点问题。系统深度依托微信小程序生态优势&#xff0…

作者头像 李华