深度学习的损失函数怎么选?

发布时间:2026/9/6 4:44:29
深度学习的损失函数怎么选? 先看任务类型再看标签长什么样别在分类任务上死磕MSE。损失函数干一件事告诉模型“这次错在哪、错多少”。选错了模型会认真地朝错误方向学。最典型的翻车是多分类用了MSE检测只盯box_loss不管cls_loss分割用交叉熵却不处理类别极不平衡。loss降了指标不动多半是目标函数就设歪了。怎么选按任务对号入座。分类默认交叉熵类别不平衡再换。二分类用BCE多分类用CrossEntropy。标签是one-hot或类别编号输出是各类概率这两口对得上。别用MSE去拟合类别编号——模型会把“猫”和“狗”当成两个邻近的数距离没有语义。类别差一个数量级以上先试加权交叉熵或Focal Loss让模型多盯少数类。准确率虚高、少数类全漏优先查损失别先改网络。回归先MSE有离群点再换。预测分数、角度、温度这类连续值MSE最省事。数据里有明显脏点标成999、漏标成0MSE会被极值拽歪换成MAE或Huber更稳。归一化没做就上MSEloss数字会大得吓人不代表模型没学先把目标缩到合理量级。检测不是选一个loss是一组loss在打架。YOLO这类模型至少有分类损失、框回归损失新版本还有DFL。你要选的不是“用哪个神奇公式”而是这几项的权重别乱拧。默认配方先跑通某一项长期不降再针对那一项查数据cls不降看类别和标注box不降看框是不是标飘了、小目标是不是太多。自己换CIoU、SIoU当创新点可以但先保证和baseline同一套数据、同一套权重否则表格没法看。分割像素级交叉熵能起步前景太少必须加Dice/IoU。病斑、裂缝、车道线往往只占几个百分点的像素纯交叉熵会让模型学会“全预测成背景”。Dice或IoU损失盯的是重叠区域和这类任务更贴。实操上常见组合是CE Dice比单换一个花哨名字更稳。三个原则比背公式有用。原则一损失必须和输出头匹配。最后一层是Softmax后面接CrossEntropy是Sigmoid后面接BCE。激活和损失绑错一对梯度会很安静看起来像没在学。原则二看验证指标不看训练loss绝对值。换了损失函数量纲就变了0.3和1.2没法横比。该比的是验证集上的acc、mAP、Dice。loss只负责回答“这条更新方向对不对”。原则三一次只换一种损失并写进消融。同时换损失、换增强、换注意力涨了也不知道是谁的功劳。论文里写“改进损失函数”至少要有baseline损失和你的损失两行对比。给一套能直接抄的起点图像分类、类别还算均衡CrossEntropy完事。图像分类、长尾数据加权CE或Focal Lossgamma从2试起。数值回归MSE脏数据多就Huber。YOLO检测官方默认三项损失先别动权重保持默认。分割、前景很小CE Dice权重1:1起步。最后提醒一句损失函数不是创新点批发市场。换一个听起来高级的名字指标掉0.5个点删掉就行。任务对、标签对、默认损失能把验证曲线拉下去这个选择就已经合格。任务定损失标签检验损失指标验收损失。按这个顺序选比在论文里抄公式靠谱。