本文系统梳理深度学习各任务领域的核心损失函数,包含精确数学公式、符号定义、特性分析及实践指南,适用于研究参考与工程实现。
一、分类任务
1. 交叉熵损失(Cross-Entropy Loss)
多分类(单标签)
L=−N1i=1∑Nc=1∑Cyi,clog(pi,c)
- 符号:
N=样本数,C=类别数,yi,c=真实标签(one-hot),pi,c=Softmax输出概率
- 特性:
- 梯度 ∇L∝(pi,c−yi,c),误差越大梯度越强
- 框架实现:PyTorch
CrossEntropyLoss = LogSoftmax + NLLLoss(输入为logits,避免数值不稳定)
二分类
L=−N1i=1∑N[yilog(σ(xi))+(1−yi)log(1−σ(xi))]
- 符号:σ(x)=1/(1+e−x),yi∈{0,1}
- 实践:优先使用
BCEWithLogitsLoss(融合Sigmoid+BCE,数值稳定)
多标签分类
- 对每个类别独立计算BCE,yi,c∈{0,1}(标签非互斥)
2. Focal Loss
LFL=−N1i=1∑Nαt(1−pt)γlog(pt),pt={pi1−piif yi=1if yi=0
- 符号:αt=类别权重(平衡正负样本),γ≥0=聚焦参数
- 作用:(1−pt)γ 压制易分样本梯度(如 pt=0.9,γ=2 时权重降至0.01)
- 应用:RetinaNet(目标检测)、严重不平衡分类(γ=2,α=0.25 常用)
3. Hinge Loss(二分类)
L=max(0,1−y⋅f(x)),y∈{−1,+1}
- 符号:f(x)=模型原始输出(未归一化)
- 特点:SVM核心损失,要求分类间隔>1;深度学习中较少直接使用(需配合线性层)
二、回归任务
1. MSE (L2 Loss)
L=N1i=1∑N(yi−y^i)2
- 梯度:∇L=2(yi−y^i)
- 假设:误差服从高斯分布;对异常值敏感(大误差梯度平方级增长)
2. MAE (L1 Loss)
L=N1i=1∑N∣yi−y^i∣
- 梯度:∇L=sign(yi−y^i)(0点次梯度)
- 优势:对异常值鲁棒;缺点:0点不可导,收敛较慢
3. Huber Loss / Smooth L1
Lδ={21(y−y^)2δ∣y−y^∣−21δ2if ∣y−y^∣≤δotherwise
- 符号:δ=阈值(常用1.0)
- 应用:Faster R-CNN边界框回归(Smooth L1 = δ=1 的Huber)
- 优势:小误差用MSE(平滑),大误差用MAE(鲁棒)
4. Log-Cosh Loss
L=N1i=1∑Nlog(cosh(yi−y^i)),cosh(x)=2ex+e−x
- 特性:
- ∣e∣≪1 时 ≈21e2(MSE)
- ∣e∣≫1 时 ≈∣e∣−log2(MAE)
- 优势:全程二阶可导,对异常值鲁棒
三、图像分割 & 医学影像
1. Dice Loss
LDice=1−∑ipi2+∑igi2+ϵ2∑ipigi+ϵ
- 符号:pi=预测概率(0~1),gi=真实标签(0/1),ϵ=10−5(平滑项)
- 关键:训练用“软Dice”(概率值),非二值化;对小目标/不平衡数据敏感
- 变体:Dice系数 = 1−LDice
2. IoU (Jaccard) Loss
LIoU=1−∑ipi+∑igi−∑ipigi+ϵ∑ipigi
- 特点:分母为并集,与评估指标IoU直接对齐
- 注意:无重叠时梯度为0,需加ϵ或改用Generalized IoU Loss
3. Tversky Loss
LTversky=1−∑pigi+β∑pi(1−gi)+γ∑(1−pi)gi+ϵ∑pigi
-
符号:β=假阳性(FP)权重,γ=假阴性(FN)权重
-
医学应用:γ>β(如 β=0.3,γ=0.7)强化减少漏检(FN惩罚更高)
4. Combo Loss
L=α⋅LBCE+(1−α)⋅LDice,α∈[0,1]
- 目的:BCE提供像素级梯度,Dice优化区域重叠(α=0.5 常用)
- 场景:医学分割(如U-Net变体)
四、序列与结构化预测
1. CTC Loss
LCTC=−logπ∈B−1(y)∑P(π∣x)
-
符号:
x=输入序列(如音频帧),y=目标标签序列,
B−1(y)=所有合法对齐路径(含blank符号)
-
核心:动态规划计算路径概率和,解决输入/输出长度不匹配
-
应用:语音识别(DeepSpeech)、OCR(CRNN)
2. NLL Loss(Negative Log Likelihood)
L=−N1i=1∑Nlog(pi,yi)
- 前提:输入需经
LogSoftmax(pi,yi 为对数概率)
- 关系:
CrossEntropyLoss = LogSoftmax + NLLLoss
五、生成模型 & 对抗学习
1. GAN系列
原始GAN (Minimax)
GminDmaxV(D,G)=Ex[logD(x)]+Ez[log(1−D(G(z)))]
- 实践改进:生成器常用 −logD(G(z))(避免初期梯度消失)
LSGAN
LDLG=21Ex[(D(x)−b)2]+21Ez[(D(G(z))−a)2]=21Ez[(D(G(z))−c)2]
- 参数:(a,b,c) 常取 (0,1,1),用最小二乘替代对数损失,训练更稳定
WGAN-GP
LDLG=Ez[D(G(z))]−Ex[D(x)]+λEx~[(∥∇x~D(x~)∥2−1)2]=−Ez[D(G(z))]
- 符号:x~=ϵx+(1−ϵ)G(z), ϵ∼U(0,1), λ=10
- 优势:梯度惩罚替代权重裁剪,解决模式崩溃
2. VAE Loss
L=重构损失Eq(z∣x)[logp(x∣z)]−β⋅正则项KL(q(z∣x)∥p(z))
- 重构损失:连续数据用MSE,二值图像用BCE
- KL项:p(z)=N(0,I),β 控制隐空间约束(β-VAE中 β>1)
3. Perceptual Loss
Lperc=l∑λl∥ϕl(Ihr)−ϕl(Isr)∥22
- 符号:ϕl=预训练VGG第l层特征图,Ihr=高清图,Isr=生成图
- 优势:匹配高层语义特征,避免MSE导致的模糊(超分、风格迁移)
4. Style Loss
Lstyle=l∑λl∥Gl^−Gl∥F2,Gl=ϕlϕl⊤
- 符号:Gl=Gram矩阵(捕获通道间相关性)
- 应用:Gatys风格迁移、AdaIN
六、度量学习 & 对比学习
1. Triplet Loss
L=max(∥f(a)−f(p)∥2−∥f(a)−f(n)∥2+margin, 0)
- 符号:a=锚点,p=正样本(同类),n=负样本(异类)
- 关键:难样本挖掘(semi-hard mining)提升效率
2. Contrastive Loss
L=(1−y)⋅d2+y⋅max(margin−d, 0)2,y∈{0,1}
- 符号:y=0=同类对,y=1=异类对,d=样本对距离
3. InfoNCE Loss
L=−log∑i=0Kexp(q⋅ki/τ)exp(q⋅k+/τ)
- 符号:q=查询向量,k+=正样本键,{ki}=1正+K负,τ=温度参数
- 基石:SimCLR、MoCo、CLIP等对比学习框架核心(τ=0.07 常用)
七、其他关键损失
1. KL散度
KL(P∥Q)=i∑P(i)logQ(i)P(i)(离散)/∫p(x)logq(x)p(x)dx(连续)
- 特性:非对称(KL(P∥Q)=KL(Q∥P))
- 应用:知识蒸馏(教师P→学生Q)、VAE正则项
2. Center Loss
Lc=21i=1∑m∥xi−cyi∥22
- 符号:xi=样本特征,cyi=类别yi中心(可学习)
- 联合训练:L=Lsoftmax+λLc(λ=0.01)
- 效果:增强类内紧凑性(人脸识别)
3. 目标检测组合损失(Faster R-CNN示例)
L=分类Lcls(p,p∗)+λ⋅回归I(p∗≥0.5)⋅Lreg(t,t∗)
- 符号:Lcls=交叉熵,Lreg=Smooth L1,I=指示函数
- 权重:λ=1.0(平衡分类与回归)
实践核心建议表
| 问题场景 |
推荐损失函数 |
关键参数提示 |
| 严重类别不平衡 |
Focal Loss / Dice Loss |
γ=2, α=0.25 |
| 医学小目标分割 |
Tversky Loss (γ>β) |
β=0.3,γ=0.7 |
| 生成图像质量 |
Perceptual + Style Loss |
VGG16 relu3_3层加权 |
| 对比学习 |
InfoNCE |
τ=0.07, 负样本量K↑ |
| 边界框回归 |
Smooth L1 |
δ=1.0 |
| 知识蒸馏 |
α⋅CE+(1−α)⋅KL |
α=0.3 |
黄金准则(必读)
- 激活-损失配套:Softmax + CrossEntropy,Sigmoid + BCE
- 数值稳定性:优先用封装函数(
BCEWithLogitsLoss > Sigmoid + BCELoss)
- 损失≠评估指标:优化目标(Loss)与评估指标(Accuracy/F1/mAP)需区分
- 组合损失常态:分割(BCE+Dice)、检测(Cls+Reg)、蒸馏(CE+KL)
- 超参敏感:Focal Loss的γ、InfoNCE的τ需网格搜索验证
- 框架差异:
- PyTorch
CrossEntropyLoss 接收logits
- TensorFlow
SparseCategoricalCrossentropy 支持整数标签
📌 最后建议:初学者从任务标准损失入手(分类→CrossEntropyLoss),根据数据问题(不平衡、噪声)迭代调整。所有公式符号已明确定义,可直接用于论文写作或代码实现。建议结合具体任务进行消融实验验证!