一、深度学习中常见的损失函数(按任务类型分类)

1. 回归任务

  • MSE(Mean Squared Error):L2损失,对异常值敏感
  • MAE(Mean Absolute Error):L1损失,鲁棒性好
  • Huber Loss:MSE与MAE的折中,平滑过渡
  • Log-Cosh Loss:平滑的MAE近似,二阶可导

2. 分类任务

  • 交叉熵损失 Cross Entropy Loss
    • 二分类:Binary Cross Entropy (BCE)
    • 多分类:Categorical Cross Entropy (CCE)
    • 带Softmax:Softmax + CCE(最常用)
  • Hinge Loss:SVM风格,用于最大间隔分类
  • Focal Loss:解决类别不平衡(RetinaNet提出)
  • Label Smoothing Cross Entropy:防止过拟合,提升泛化

3. 序列/生成任务

  • CTC Loss(Connectionist Temporal Classification):用于语音识别等输入输出不对齐场景
  • 负对数似然(NLL Loss):常与LogSoftmax配合

二、大模型时代主要使用的损失函数

核心答案:大模型(尤其是LLM)几乎统一使用「带Label Smoothing的交叉熵损失」

1. 标准形式:

loss = CrossEntropyLoss(logits, labels, label_smoothing=0.1)

2. 为什么是它?

  • 理论基础扎实:最大化似然 = 最小化交叉熵,符合语言建模本质(预测下一个token的概率分布)
  • 梯度性质好:配合Softmax,梯度计算稳定,适合大规模优化
  • 可扩展性强:适用于自回归(GPT)、自编码(BERT)、Encoder-Decoder(T5)等所有主流架构
  • Label Smoothing加持
    • 防止模型对“正确标签”过度自信 → 提升泛化能力
    • 缓解过拟合,尤其在数据量巨大但存在噪声时效果显著
    • 原理:将one-hot标签 [0,0,1,0] → [ε/K, ε/K, 1-ε, ε/K](K为词表大小)

3. 其他相关变体(面试加分项)

  • Token-level vs Sequence-level Loss:大模型通常按token计算loss,忽略padding
  • Masked Language Modeling Loss(BERT):只计算被mask位置的交叉熵
  • 对比学习损失(Contrastive Loss):如InfoNCE,在多模态大模型(CLIP)中常用
  • RLHF阶段的损失:PPO中的策略梯度损失 + KL散度约束(非监督学习阶段)

三、与传统损失函数的区别

核心目标

分类准确、回归拟合

语言建模、序列生成、世界知识压缩

损失函数

MSE, Hinge, Focal等任务定制

统一使用带Label Smoothing的交叉熵

输出空间

固定类别/数值

超大词表(50K~100K+ token)

优化重点

防止欠拟合、调参

防止过拟合、提升泛化、稳定训练

正则化手段

Dropout, L2正则

Label Smoothing + 大数据 + 大模型容量

梯度特性要求

一般

必须稳定、可并行、支持超长序列

关键区别总结:大模型不再追求“任务特异性损失”,而是回归“语言建模本质”——用最基础、最通用的概率建模损失(交叉熵)+ 正则化技巧(Label Smoothing),靠数据和规模取胜。


四、面试回答技巧(STAR结构 + 亮点提炼)

✅ 标准回答模板:

“在深度学习中,损失函数根据任务类型分为回归类(如MSE、MAE)、分类类(如交叉熵、Hinge Loss)和序列类(如CTC)。但在大模型时代,尤其是LLM(如GPT、LLaMA、BERT),几乎全部采用带Label Smoothing的交叉熵损失函数。”

“这是因为语言建模本质是下一个token的条件概率预测,交叉熵天然适配概率建模目标;而Label Smoothing通过软化one-hot标签,有效缓解大模型在海量数据下的过拟合问题,提升泛化能力。”

“相比传统任务中使用的Focal Loss或Hinge Loss,大模型更强调通用性、稳定性和可扩展性,交叉熵+Label Smoothing在超大词表、超长序列、千亿参数下表现稳健,已成为工业界和学术界的默认选择。”

“当然,在RLHF阶段会切换为PPO等强化学习损失,但在预训练和SFT阶段,交叉熵仍是绝对主流。”


✅ 高阶加分回答(体现深度):

  • “其实交叉熵等价于最小化模型分布与经验分布的KL散度,这在信息论角度是最自然的语言建模目标。”
  • “Label Smoothing可以看作是在标签空间引入均匀分布先验,避免模型熵坍缩(entropy collapse)。”
  • “最近也有工作探索替换交叉熵,比如用序列级损失(如BLEU优化)或对比损失,但在大规模预训练中尚未取代交叉熵的地位。”
  • “在MoE模型中,辅助损失(如负载均衡loss)会与交叉熵联合优化,但主损失仍是交叉熵。”

五、可能的追问 & 应对

  1. Q:为什么不用MSE做分类? → A:MSE假设输出是连续值,且误差服从高斯分布;分类是离散概率分布,交叉熵更符合信息度量本质,梯度也更合理。

  2. Q:Label Smoothing的ε怎么选? → A:经验上0.05~0.2,LLaMA用0.1,太大会模糊标签,太小没效果。可作为超参调优。

  3. Q:交叉熵和NLL Loss区别? → A:NLL作用于log概率,常与LogSoftmax配对;交叉熵内部包含Softmax+log+NLL,二者在数值上等价。

  4. Q:大模型有没有尝试不用交叉熵的? → A:有,比如用对比学习(CLIP)、MAE式重建损失(非自回归)、甚至强化学习直接优化任务reward,但预训练阶段交叉熵仍是基石。


✅ 总结一句话应答(电梯演讲版):

“大模型时代,损失函数高度统一:带Label Smoothing的交叉熵损失,因其完美契合语言建模的概率本质、梯度稳定、泛化强,成为千亿参数时代的默认选择。”

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐