你知道AI是怎么“变聪明”的吗?答案藏在一个看似负面的词——Loss。这篇文章用通俗语言讲清楚:损失函数到底是什么,它如何驱动模型学习,又为什么它是所有AI能力的起点。读完,你会对“训练”这件事有全新的理解。
想象⼀下,你正在教⼀个机器⼈下棋。每当它⾛错⼀步,你就会告诉它“这步不好”,并解释为什么。这个“不好”的反馈,就是⼀种“损失”(Loss)。在深度学习的世界里,
Loss是⼀个核⼼概念,它像⼀个严格的教练,精确地衡量着模型的预测与真实答案之间的差距。这个差距值,就是我们所说的“损失值”。
模型训练的整个过程,本质上就是⼀个不断“试错”并根据Loss进⾏“修正”的过程。就像⼀个登⼭者,⽬标是⼭⾕的最低点(最⼩的Loss),每⼀步都需要判断⽅向是否正确。Loss就是这个过程中最关键的指南针,它告诉模型下⼀步应该朝哪个⽅向调整参数,才能让预测结果更接近真相。
术语⼩贴⼠:Loss、Cost与ObjectiveFunction
-损失函数(LossFunction):通常针对单个训练样本,计算⼀次预测的“错误程度”。
-代价函数(CostFunction):针对整个训练集(或⼀批数据)的总损失,是所有单个样本损失的平均或总和。
-⽬标函数(ObjectiveFunction):⼀个更宽泛的概念,是模型训练最终需要优化的函数,它通常包含代价函数和⽤于防⽌过拟合的正则化项。
简单来说,我们的⽬标就是最⼩化⽬标函数,⽽其核⼼就是由Loss构成的代价函数
Loss有哪些种类?——应对不同任务的“标尺”不存在⼀个万能的Loss函数可以适⽤于所有任务。针对不同的问题(如预测房价、识别猫狗、或是⽣成⽂本),我们需要选择不同的“标尺”来衡量损失。那么以下就是我们常用的一些Loss函数。
1.用于“预测数值”的Loss(回归任务)回归任务的⽬标是预测⼀个具体的数值,⽐如天⽓预报中的温度、股票市场的价格等。
均⽅误差(MSE/L2Loss):这是最经典的损失函数之⼀。它计算预测值与真实值之差的平⽅。优点是数学处理⽅便,梯度稳定;缺点是对异常值(outliers)特别敏感,⼀个离谱的错误会不成⽐例地放⼤总损失。平均绝对误差(MAE/L1Loss):它计算预测值与真实值之差的绝对值。相⽐MSE,MAE对异常值不那么敏感,更加“宽容”,因此在数据中存在较多噪声时表现更稳健。HuberLoss:它是MSE和MAE的混合体。当误差较⼩时,它像MSE⼀样平滑;当误差较⼤时,它像MAE⼀样呈线性,从⽽兼具了MSE的稳定收敛和MAE的鲁棒性。不同回归损失函数的曲线对⽐
2.用于“做选择题”的Loss(分类任务)分类任务的⽬标是从多个选项中选出正确的类别,⽐如图⽚是猫还是狗,邮件是否为垃圾邮件。
交叉熵损失(Cross-EntropyLoss):这是分类任务的“黄⾦标准”。它的核⼼思想是衡量模型预测的概率分布与真实的标签分布之间的“距离”。如果模型对正确答案的预测概率越⾼,交叉熵损失就越⼩。
交叉熵损失⽰意图
当真实标签为1时(橙线),预测概率越接近1,损失越⼩;当真实标签为0时(蓝线),预测概率越接近0,损失越⼩。
3.用于“聊天和写作”的Loss(大语言模型)大语⾔模型的训练是⼀个复杂的过程,涉及多个阶段,每个阶段都有其特定的Loss函数。以流⾏的OpenRLHF框架为例:
SFT(监督微调)阶段-GPTLMLoss:这是最基础的损失,即标准的“下⼀个词预测”损失。模型学习根据前⾯的⽂本预测下⼀个最可能的词,本质上是多分类交叉熵损失的⼀种应⽤。RM(奖励模型)阶段-PairWiseLoss:在这个阶段,我们教模型理解⼈类的偏好。模型会看到两个回答,并被告知哪⼀个更好。PairWiseLoss的⽬标是让模型给“更好”的回答打出⽐“更差”的回答更⾼的分数(reward)。RL(强化学习)阶段-PPO/DPOLoss:这是对⻬的最后⼀步。模型(Policy)会⽣成回答,奖励模型(RewardModel)会给它打分。策略损失(如PPOLoss)的⽬标是让模型在⽣成⾼分回答的同时,不要偏离原始模型太远,以保持语⾔能力和多样性。DPO(DirectPreferenceOptimization)及其变种(如KTO)则提供了⼀种更直接、⽆需显式奖励模型的⽅式来完成对⻬。如何解读Loss?——读懂模型训练的“病历”Loss曲线是模型训练过程的“⼼电图”,通过观察它的形状,我们可以诊断模型的“健康状况”。我们通常会关注两条曲线:训练损失(TrainLoss)和验证损失(Validation Loss)。
1.完美拟合(GoodFit)理想情况下,训练损失和验证损失都会平稳下降并最终收敛到⼀个较低的⽔平,且两者差距很⼩。这表明模型既学到了数据中的规律,⼜具备了良好的泛化能⼒。
理想的Loss曲线:训练和验证损失都收敛且差距很⼩
2.过拟合(Overfitting)训练损失持续下降,但验证损失在下降到某个点后开始回升。这就像⼀个学⽣只会死记硬背,在练习题(训练集)上能得满分,但⼀到正式考试(验证集)就原形毕露。模型过度学习了训练数据中的噪声和细节,失去了泛化能⼒。
解决方法:增加数据量、使⽤数据增强、加⼊正则化(如Dropout、权重衰减)、提前停⽌训练(EarlyStopping)等。
典型的过拟合:训练损失(蓝线)持续下降,验证损失(橙线)先降后升
3.欠拟合(Underfitting)训练损失和验证损失都居⾼不下,或者下降得⾮常缓慢。这表明模型太简单,⽆法捕捉数据中的复杂模式,就像让⼩学⽣去做微积分,能⼒完全不够。
解决方法:增加模型复杂度(如加深⽹络层数)、延⻓训练时间、调整学习率、或者使⽤更强⼤的模型架构。
⽋拟合:损失曲线没有充分下降,仍有很⼤的学习空间
案例分析:两阶段训练策略在实际的⼤模型训练中,我们常常采⽤分阶段的策略。例如,在⼀个模型训练案例中,一般采⽤了两阶段学习率策略:
阶段⼀(0~12.5k步):使⽤较⾼的学习率并采⽤“余弦退⽕”策略,让学习率先热⾝(warmup)再快速下降。这使得模型的Loss出现断崖式下跌,快速掌握基础知识。阶段⼆(12.5k步之后):切换到较低的恒定学习率。此时Loss下降变缓,但仍在稳定优化,对模型进⾏精细打磨。学习率变化
对应的Loss和困惑度变化
这种张弛有度的训练策略在Loss曲线上得到了完美体现。
Loss为何会“发脾气”?——常见问题与排查指南有时,Loss曲线并不会温顺地下降,⽽是会出现各种“异常⾏为”。理解这些现象并找到原因,是“炼丹⼯程师”的必备技能。
1.Loss突然暴涨(LossSpike)现象:在平稳的训练过程中,Loss值突然像⽕⼭喷发⼀样急剧增⼤,有时能恢复,有时则导致训练崩溃。
LLaMA训练过程中出现的LossSpike
⼀篇深入分析的论文指出,这通常与Adam优化器在⼤模型训练中的不稳定性有关。特别是当模型某些浅层(如Embedding层)的梯度⻓时间接近于零后,突然因为某个特殊的数据批次⽽产⽣巨⼤的梯度变化,导致更新步骤过⼤,从⽽引发连锁反应,造成Loss爆炸。
解决方案:
回滚与重试:最直接的⽅法是回退到Spike出现前的检查点(checkpoint),并更换后续的训练数据批次。梯度收缩:GLM-130B团队发现,对Embedding层的梯度进⾏⼀定⽐例的收缩(GradientShrink),可以有效抑制这种尖峰。调整优化器参数:适当降低学习率或调整Adam优化器的`epsilon`参数,增加数值稳定性。2.Loss剧烈震荡Loss曲线上下跳动,像在坐过⼭车,⽆法稳定收敛。
原因:
学习率过⾼:这是最常⻅的原因。学习率太⼤,导致模型参数在最优点附近“反复横跳”,⽆法稳定下来。解决⽅法:降低学习率。BatchSize过⼩:批次⼤⼩太⼩,导致每次更新的梯度估计噪声很⼤,⽅向不稳定。解决⽅法:在显存允许的情况下,适当增⼤BatchSize。3.Loss停滞不前Loss在训练初期下降⼀些后,就变成⼀条⽔平线,不再变化。
原因:
学习率过低:学习率太⼩,导致模型“步履维艰”,⽆法有效⾛出局部最优的“⼭⾕”。解决⽅法:尝试提⾼学习率。数据问题:检查数据和标签是否正确,是否存在⼤量错误标注或脏数据。模型能⼒不⾜:对于复杂任务,如果模型结构太简单,可能根本不具备拟合数据的能⼒。解决⽅法:使⽤更深或更复杂的⽹络结构。梯度消失/爆炸:在深层⽹络中,梯度在反向传播时可能变得极⼩(消失)或极⼤(爆炸)。解决⽅法:使⽤合适的激活函数(如ReLU)、归⼀化层(如BatchNorm)和残差连接。Loss的未来是什么?——决定模型能⼒的关键钥匙传统观点认为,⼤模型的“涌现能⼒”(EmergentAbilities)——那些只在模型规模达到⼀定程度后才出现的神奇能⼒——主要与参数量有关。然⽽,来⾃清华⼤学和智谱AI的⼀项最新研究提出了⼀个颠覆性的视⻆:预训练Loss才是预测模型能⼒的关键指标,⽽⾮模型⼤⼩或训练数据量。
研究团队训练了超过30个不同规模和数据量的模型,并评估了它们在12个任务上的表现。他们惊奇地发现:
⽆论模型⼤⼩如何,只要它们的Pre-trainingLoss相同,它们在下游任务上的性能也⼏乎相同。所有模型(从1.5B到32B)的性能-损失数据点都落在同⼀条趋势曲线上。
不同⼤⼩的模型(⽤颜⾊区分)在多个任务上的性能-损失曲线。可以清晰地看到,所有数据点都遵循同⼀趋势,表明性能与Loss强相关,⽽与模型⼤⼩⽆直接关系
这项研究进⼀步将任务分为两类:
平滑提升型任务:性能随着Loss的降低⽽平稳提升。涌现型任务:如数学推理(GSM8K)、多任务知识问答(MMLU)等,只有当Pre-trainingLoss降低到某个关键阈值以下时,性能才开始显著提升,表现出“涌现”的特征。基于此,研究者重新定义了“涌现能⼒”:
⼀种能⼒是“涌现”的,如果它在Pre-trainingLoss较⾼的模型中不存在,但在Pre-trainingLoss较低的模型中存在。
这个视角为我们理解和预测⼤模型的能⼒提供了⼀个更根本、更可靠的度量衡。它告诉我们,与其盲⽬追求更⼤的模型,不如专注于如何更有效地降低模型的Pre-trainingLoss。
总结⽽⾔,Loss不仅仅是模型训练过程中的⼀个冰冷数字。它是指导优化的指南针,是诊断模型健康状况的病历,更是我们窥探⼤模型能⼒奥秘的⼀扇窗户。深刻理解Loss,才能真正驾驭这些强⼤的⼈⼯智能。
本文由 @凌波鱼 原创发布于人人都是产品经理。未经作者许可,禁止转载
题图来自Unsplash,基于CC0协议
网眼查提示:文章来自网络,不代表本站观点。