本文系统梳理深度学习各任务领域的核心损失函数,包含精确数学公式、符号定义、特性分析及实践指南,适用于研究参考与工程实现。


一、分类任务

1. 交叉熵损失(Cross-Entropy Loss)

多分类(单标签)

L=1Ni=1Nc=1Cyi,clog(pi,c)\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{i,c} \log(p_{i,c})

  • 符号
    NN=样本数,CC=类别数,yi,cy_{i,c}=真实标签(one-hot),pi,cp_{i,c}=Softmax输出概率
  • 特性
    • 梯度 L(pi,cyi,c)\nabla \mathcal{L} \propto (p_{i,c} - y_{i,c}),误差越大梯度越强
    • 框架实现:PyTorch CrossEntropyLoss = LogSoftmax + NLLLoss(输入为logits,避免数值不稳定)

二分类

L=1Ni=1N[yilog(σ(xi))+(1yi)log(1σ(xi))]\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N} \left[ y_i \log(\sigma(x_i)) + (1-y_i)\log(1-\sigma(x_i)) \right]

  • 符号σ(x)=1/(1+ex)\sigma(x)=1/(1+e^{-x})yi{0,1}y_i \in \{0,1\}
  • 实践:优先使用 BCEWithLogitsLoss(融合Sigmoid+BCE,数值稳定)

多标签分类

  • 对每个类别独立计算BCE,yi,c{0,1}y_{i,c} \in \{0,1\}(标签非互斥)

2. Focal Loss

LFL=1Ni=1Nαt(1pt)γlog(pt),pt={piif yi=11piif yi=0\mathcal{L}_{FL} = -\frac{1}{N}\sum_{i=1}^{N} \alpha_t (1 - p_t)^\gamma \log(p_t), \quad p_t = \begin{cases} p_i & \text{if } y_i=1 \\ 1-p_i & \text{if } y_i=0 \end{cases}

  • 符号αt\alpha_t=类别权重(平衡正负样本),γ0\gamma \geq 0=聚焦参数
  • 作用(1pt)γ(1-p_t)^\gamma 压制易分样本梯度(如 pt=0.9,γ=2p_t=0.9, \gamma=2 时权重降至0.01)
  • 应用:RetinaNet(目标检测)、严重不平衡分类(γ=2,α=0.25\gamma=2, \alpha=0.25 常用)

3. Hinge Loss(二分类)

L=max(0,1yf(x)),y{1,+1}\mathcal{L} = \max(0, 1 - y \cdot f(x)), \quad y \in \{-1, +1\}

  • 符号f(x)f(x)=模型原始输出(未归一化)
  • 特点:SVM核心损失,要求分类间隔>1;深度学习中较少直接使用(需配合线性层)

二、回归任务

1. MSE (L2 Loss)

L=1Ni=1N(yiy^i)2\mathcal{L} = \frac{1}{N}\sum_{i=1}^{N} (y_i - \hat{y}_i)^2

  • 梯度L=2(yiy^i)\nabla \mathcal{L} = 2(y_i - \hat{y}_i)
  • 假设:误差服从高斯分布;对异常值敏感(大误差梯度平方级增长)

2. MAE (L1 Loss)

L=1Ni=1Nyiy^i\mathcal{L} = \frac{1}{N}\sum_{i=1}^{N} |y_i - \hat{y}_i|

  • 梯度L=sign(yiy^i)\nabla \mathcal{L} = \text{sign}(y_i - \hat{y}_i)(0点次梯度)
  • 优势:对异常值鲁棒;缺点:0点不可导,收敛较慢

3. Huber Loss / Smooth L1

Lδ={12(yy^)2if yy^δδyy^12δ2otherwise\mathcal{L}_\delta = \begin{cases} \frac{1}{2}(y - \hat{y})^2 & \text{if } |y-\hat{y}| \leq \delta \\ \delta |y - \hat{y}| - \frac{1}{2}\delta^2 & \text{otherwise} \end{cases}

  • 符号δ\delta=阈值(常用1.0)
  • 应用:Faster R-CNN边界框回归(Smooth L1 = δ=1\delta=1 的Huber)
  • 优势:小误差用MSE(平滑),大误差用MAE(鲁棒)

4. Log-Cosh Loss

L=1Ni=1Nlog(cosh(yiy^i)),cosh(x)=ex+ex2\mathcal{L} = \frac{1}{N}\sum_{i=1}^{N} \log(\cosh(y_i - \hat{y}_i)), \quad \cosh(x)=\frac{e^x + e^{-x}}{2}

  • 特性
    • e1|e| \ll 112e2\approx \frac{1}{2}e^2(MSE)
    • e1|e| \gg 1elog2\approx |e| - \log 2(MAE)
  • 优势:全程二阶可导,对异常值鲁棒

三、图像分割 & 医学影像

1. Dice Loss

LDice=12ipigi+ϵipi2+igi2+ϵ\mathcal{L}_{Dice} = 1 - \frac{2\sum_i p_i g_i + \epsilon}{\sum_i p_i^2 + \sum_i g_i^2 + \epsilon}

  • 符号pip_i=预测概率(0~1),gig_i=真实标签(0/1),ϵ=105\epsilon=10^{-5}(平滑项)
  • 关键:训练用“软Dice”(概率值),非二值化;对小目标/不平衡数据敏感
  • 变体:Dice系数 = 1LDice1 - \mathcal{L}_{Dice}

2. IoU (Jaccard) Loss

LIoU=1ipigiipi+igiipigi+ϵ\mathcal{L}_{IoU} = 1 - \frac{\sum_i p_i g_i}{\sum_i p_i + \sum_i g_i - \sum_i p_i g_i + \epsilon}

  • 特点:分母为并集,与评估指标IoU直接对齐
  • 注意:无重叠时梯度为0,需加ϵ\epsilon或改用Generalized IoU Loss

3. Tversky Loss

LTversky=1pigipigi+βpi(1gi)+γ(1pi)gi+ϵ\mathcal{L}_{Tversky} = 1 - \frac{\sum p_i g_i}{\sum p_i g_i + \beta \sum p_i(1-g_i) + \gamma \sum (1-p_i)g_i + \epsilon}

  • 符号β\beta=假阳性(FP)权重,γ\gamma=假阴性(FN)权重

  • 医学应用γ>β\gamma > \beta(如 β=0.3,γ=0.7\beta=0.3, \gamma=0.7)强化减少漏检(FN惩罚更高)


4. Combo Loss

L=αLBCE+(1α)LDice,α[0,1]\mathcal{L} = \alpha \cdot \mathcal{L}_{BCE} + (1-\alpha) \cdot \mathcal{L}_{Dice}, \quad \alpha \in [0,1]

  • 目的:BCE提供像素级梯度,Dice优化区域重叠(α=0.5\alpha=0.5 常用)
  • 场景:医学分割(如U-Net变体)

四、序列与结构化预测

1. CTC Loss

LCTC=logπB1(y)P(πx)\mathcal{L}_{CTC} = -\log \sum_{\pi \in \mathcal{B}^{-1}(\mathbf{y})} P(\pi | \mathbf{x})

  • 符号

    x\mathbf{x}=输入序列(如音频帧),y\mathbf{y}=目标标签序列,

    B1(y)\mathcal{B}^{-1}(\mathbf{y})=所有合法对齐路径(含blank符号)

  • 核心:动态规划计算路径概率和,解决输入/输出长度不匹配

  • 应用:语音识别(DeepSpeech)、OCR(CRNN)


2. NLL Loss(Negative Log Likelihood)

L=1Ni=1Nlog(pi,yi)\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N} \log(p_{i, y_i})

  • 前提:输入需经 LogSoftmaxpi,yip_{i,y_i} 为对数概率)
  • 关系CrossEntropyLoss = LogSoftmax + NLLLoss

五、生成模型 & 对抗学习

1. GAN系列

原始GAN (Minimax)

minGmaxDV(D,G)=Ex[logD(x)]+Ez[log(1D(G(z)))]\min_G \max_D V(D,G) = \mathbb{E}_{x}[\log D(x)] + \mathbb{E}_{z}[\log(1 - D(G(z)))]

  • 实践改进:生成器常用 logD(G(z))-\log D(G(z))(避免初期梯度消失)

LSGAN

LD=12Ex[(D(x)b)2]+12Ez[(D(G(z))a)2]LG=12Ez[(D(G(z))c)2]\begin{aligned} \mathcal{L}_D &= \frac{1}{2}\mathbb{E}_x[(D(x)-b)^2] + \frac{1}{2}\mathbb{E}_z[(D(G(z))-a)^2] \\ \mathcal{L}_G &= \frac{1}{2}\mathbb{E}_z[(D(G(z))-c)^2] \end{aligned}

  • 参数(a,b,c)(a,b,c) 常取 (0,1,1)(0,1,1),用最小二乘替代对数损失,训练更稳定

WGAN-GP

LD=Ez[D(G(z))]Ex[D(x)]+λEx~[(x~D(x~)21)2]LG=Ez[D(G(z))]\begin{aligned} \mathcal{L}_D &= \mathbb{E}_z[D(G(z))] - \mathbb{E}_x[D(x)] + \lambda \mathbb{E}_{\tilde{x}}[(\|\nabla_{\tilde{x}} D(\tilde{x})\|_2 - 1)^2] \\ \mathcal{L}_G &= -\mathbb{E}_z[D(G(z))] \end{aligned}

  • 符号x~=ϵx+(1ϵ)G(z)\tilde{x} = \epsilon x + (1-\epsilon)G(z), ϵU(0,1)\epsilon \sim U(0,1), λ=10\lambda=10
  • 优势:梯度惩罚替代权重裁剪,解决模式崩溃

2. VAE Loss

L=Eq(zx)[logp(xz)]重构损失βKL(q(zx)p(z))正则项\mathcal{L} = \underbrace{\mathbb{E}_{q(z|x)}[\log p(x|z)]}_{\text{重构损失}} - \beta \cdot \underbrace{KL(q(z|x) \| p(z))}_{\text{正则项}}

  • 重构损失:连续数据用MSE,二值图像用BCE
  • KL项p(z)=N(0,I)p(z) = \mathcal{N}(0,I)β\beta 控制隐空间约束(β\beta-VAE中 β>1\beta>1

3. Perceptual Loss

Lperc=lλlϕl(Ihr)ϕl(Isr)22\mathcal{L}_{perc} = \sum_{l} \lambda_l \|\phi_l(I^{hr}) - \phi_l(I^{sr})\|_2^2

  • 符号ϕl\phi_l=预训练VGG第ll层特征图,IhrI^{hr}=高清图,IsrI^{sr}=生成图
  • 优势:匹配高层语义特征,避免MSE导致的模糊(超分、风格迁移)

4. Style Loss

Lstyle=lλlGl^GlF2,Gl=ϕlϕl\mathcal{L}_{style} = \sum_{l} \lambda_l \|G_l^{\hat{}} - G_l\|_F^2, \quad G_l = \phi_l \phi_l^\top

  • 符号GlG_l=Gram矩阵(捕获通道间相关性)
  • 应用:Gatys风格迁移、AdaIN

六、度量学习 & 对比学习

1. Triplet Loss

L=max(f(a)f(p)2f(a)f(n)2+margin, 0)\mathcal{L} = \max( \|f(a)-f(p)\|_2 - \|f(a)-f(n)\|_2 + \text{margin},\ 0 )

  • 符号aa=锚点,pp=正样本(同类),nn=负样本(异类)
  • 关键:难样本挖掘(semi-hard mining)提升效率

2. Contrastive Loss

L=(1y)d2+ymax(margind, 0)2,y{0,1}\mathcal{L} = (1-y) \cdot d^2 + y \cdot \max(\text{margin} - d,\ 0)^2, \quad y \in \{0,1\}

  • 符号y=0y=0=同类对,y=1y=1=异类对,dd=样本对距离

3. InfoNCE Loss

L=logexp(qk+/τ)i=0Kexp(qki/τ)\mathcal{L} = -\log \frac{\exp(q \cdot k_+ / \tau)}{\sum_{i=0}^{K} \exp(q \cdot k_i / \tau)}

  • 符号qq=查询向量,k+k_+=正样本键,{ki}\{k_i\}=1正+KK负,τ\tau=温度参数
  • 基石:SimCLR、MoCo、CLIP等对比学习框架核心(τ=0.07\tau=0.07 常用)

七、其他关键损失

1. KL散度

KL(PQ)=iP(i)logP(i)Q(i)(离散)/p(x)logp(x)q(x)dx(连续)KL(P\|Q) = \sum_i P(i) \log \frac{P(i)}{Q(i)} \quad \text{(离散)} \quad / \quad \int p(x)\log\frac{p(x)}{q(x)}dx \quad \text{(连续)}

  • 特性:非对称(KL(PQ)KL(QP)KL(P\|Q) \neq KL(Q\|P)
  • 应用:知识蒸馏(教师PP→学生QQ)、VAE正则项

2. Center Loss

Lc=12i=1mxicyi22\mathcal{L}_c = \frac{1}{2} \sum_{i=1}^{m} \|x_i - c_{y_i}\|_2^2

  • 符号xix_i=样本特征,cyic_{y_i}=类别yiy_i中心(可学习)
  • 联合训练L=Lsoftmax+λLc\mathcal{L} = \mathcal{L}_{softmax} + \lambda \mathcal{L}_cλ=0.01\lambda=0.01
  • 效果:增强类内紧凑性(人脸识别)

3. 目标检测组合损失(Faster R-CNN示例)

L=Lcls(p,p)分类+λI(p0.5)Lreg(t,t)回归\mathcal{L} = \underbrace{\mathcal{L}_{cls}(p, p^*)}_{\text{分类}} + \lambda \cdot \underbrace{\mathbb{I}(p^* \geq 0.5) \cdot \mathcal{L}_{reg}(t, t^*)}_{\text{回归}}

  • 符号Lcls\mathcal{L}_{cls}=交叉熵,Lreg\mathcal{L}_{reg}=Smooth L1,I\mathbb{I}=指示函数
  • 权重λ=1.0\lambda=1.0(平衡分类与回归)

实践核心建议表

问题场景 推荐损失函数 关键参数提示
严重类别不平衡 Focal Loss / Dice Loss γ=2\gamma=2, α=0.25\alpha=0.25
医学小目标分割 Tversky Loss (γ>β\gamma > \beta) β=0.3,γ=0.7\beta=0.3, \gamma=0.7
生成图像质量 Perceptual + Style Loss VGG16 relu3_3层加权
对比学习 InfoNCE τ=0.07\tau=0.07, 负样本量KK
边界框回归 Smooth L1 δ=1.0\delta=1.0
知识蒸馏 αCE+(1α)KL\alpha \cdot CE + (1-\alpha) \cdot KL α=0.3\alpha=0.3

黄金准则(必读)

  1. 激活-损失配套:Softmax + CrossEntropy,Sigmoid + BCE
  2. 数值稳定性:优先用封装函数(BCEWithLogitsLoss > Sigmoid + BCELoss
  3. 损失≠评估指标:优化目标(Loss)与评估指标(Accuracy/F1/mAP)需区分
  4. 组合损失常态:分割(BCE+Dice)、检测(Cls+Reg)、蒸馏(CE+KL)
  5. 超参敏感:Focal Loss的γ\gamma、InfoNCE的τ\tau需网格搜索验证
  6. 框架差异
    • PyTorch CrossEntropyLoss 接收logits
    • TensorFlow SparseCategoricalCrossentropy 支持整数标签

📌 最后建议:初学者从任务标准损失入手(分类→CrossEntropyLoss),根据数据问题(不平衡、噪声)迭代调整。所有公式符号已明确定义,可直接用于论文写作或代码实现。建议结合具体任务进行消融实验验证!