CV损失函数与训练策略

CV损失函数与训练策略


一、CV损失函数体系

分类损失函数

损失函数 公式核心 适用场景 不适用场景
CrossEntropy -sum(y*log(p)) 多分类通用 -
BCE Loss -sum(ylog(p)+(1-y)log(1-p)) 二分类/多标签 -
BCE + Sigmoid BCE自动内含Sigmoid PyTorch中BCE默认含Sigmoid 手动加Sigmoid会重复
Focal Loss CE * (1-p)^gamma 目标检测(正负样本极度不均衡) 图像分类(基本不work)
Label Smoothing y_smooth = y*(1-eps) + eps/K 分类后期提分 标签本身不确定时
Bi-tempered Loss 双温度参数替代softmax 噪声标签场景 干净标签无额外收益

Focal Loss详解

维度 说明
出发点 目标检测中正负样本极度不均衡(1:1000)
核心公式 FL(p) = -alpha * (1-p)^gamma * log(p)
alpha参数 正负样本权重平衡,通常0.25
gamma参数 难分样本聚焦程度,论文推荐2
调优建议 论文经验值不是所有场景都有效,需根据验证集调整
关键结论 Focal Loss在图像分类和语义分割中基本不work,仅在目标检测中有效

Label Smoothing详解

维度 说明
原理 将one-hot硬标签软化: y_smooth = 1-eps(正确类), eps/(K-1)(其他类)
eps取值 通常0.05~0.1
效果 防止模型过度自信,增强泛化能力
本质 将离散标签空间变为连续分布
与MixUp关系 MixUp是样本空间连续化,Label Smoothing是标签空间连续化
适用阶段 分类后期提分,通常提升0.1~0.5个百分点

Bi-tempered Logistic Loss

维度 说明
问题 噪声标签导致模型学习错误信息
核心思想 用两个温度参数替代标准softmax
温度t1 控制对噪声标签的容忍度(>1更容忍)
温度t2 控制对困难样本的聚焦度(<1更聚焦)
适用 木薯叶等噪声标签分类任务
效果 比CE/Loss Smoothing对噪声标签更鲁棒

Soft Label

维度 说明
来源 知识蒸馏中Teacher模型的输出概率分布
思路 用连续概率分布替代one-hot硬标签作为训练目标
与Label Smoothing区别 Label Smoothing是均匀分配,Soft Label可用非均匀分布
效果 训练更稳定,泛化更好

二、分割损失函数

分割损失函数对比

损失函数 关注点 优势 劣势
BCE 像素级分类 稳定,梯度好 不关注全局结构
Dice Loss 区域重叠度 直接优化IoU相关指标 梯度不稳定(小目标)
IoU Loss 交并比 与评价指标一致 梯度不连续
BCE + Dice 像素+区域 互补,最常用 需调权重
Focal + Dice 难样本+区域 处理类别不均衡 分割中Focal收益有限

Dice Loss优化

维度 说明
原始Dice 2*
分母平方优化 将分母项平方后再求和: 2sum(xy)/(sum(x^2)+sum(y^2))
来源 VNet模型的做法
效果 梯度下降更稳定,避免小目标时梯度震荡
平滑系数 分母加smooth(如1e-5)防止除零

分割损失函数选择建议

场景 推荐损失 理由
Baseline BCE + Dice 互补,最稳定
类别不均衡 BCE + Dice + Class Weight 加权处理小类
小目标 BCE + Dice(square) 平方分母稳定梯度
噪声标签 BCE + Dice + Bi-tempered 对噪声更鲁棒

Lovasz Loss

维度 说明
核心思想 直接优化IoU指标的可凸松弛代理损失
与Dice Loss区别 Dice Loss是IoU的近似,Lovasz Loss是IoU的精确凸松弛
优势 理论上与IoU指标更一致,梯度更稳定
适用场景 语义分割中评价指标为IoU/mIoU时
实现 lovasz_losses.py (公开实现)
竞赛经验 分割任务后期提分,通常比Dice Loss更优0.1~0.3个百分点

Tversky Loss

维度 说明
核心公式 TL = 1 - (TP + eps) / (TP + alphaFP + betaFN + eps)
alpha/beta 控制FP和FN的权重,alpha+beta=1
与Dice关系 alpha=beta=0.5时退化为Dice Loss
不均衡调节 alpha<beta时更关注FN(漏检),适合小目标分割
Focal Tversky 加入Focal机制: FT = (1-TL)^gamma
适用场景 小目标分割、类别极度不均衡

ArcFace / Center Loss(分类辅助损失)

损失 核心思想 适用场景
ArcFace 在角度空间增加分类间隔(margin),使同类更紧凑、异类更分离 细粒度分类、图像检索
Center Loss 学习每个类别的中心,最小化样本到中心的距离 分类正则化
CosFace 在余弦空间增加间隔,比ArcFace训练更稳定 细粒度分类
SphereFace 在角度空间乘性间隔,最早的间隔损失 细粒度分类

损失函数选择决策

场景 推荐损失组合 理由
分类baseline CrossEntropy 简单稳定
分类不均衡 Focal Loss / Class Weight 关注难分样本
分类噪声标签 Bi-tempered Loss 对噪声鲁棒
分割baseline BCE + Dice 互补最稳定
分割冲分 BCE + Lovasz 与IoU指标更一致
分割小目标 BCE + Tversky(alpha<beta) 减少漏检
细粒度分类 CE + ArcFace 增加类间间隔

三、学习率调度策略

调度策略对比

策略 曲线特征 适用场景 参数
指数衰减 平滑持续下降 通用 decay_rate
固定步长衰减 阶梯式下降 通用 step_size, gamma
余弦退火 平滑下降到最低 竞赛常用 T_max, eta_min
余弦退火+重启 周期性下降重启 跳出局部最优 T_0, T_mult
OneCycleLR 先升后降 快速收敛 max_lr, pct_start
WarmUp + Cosine 先升后降 大模型训练必备 warmup_epochs

WarmUp详解

维度 说明
问题 训练初期离最优很远,大学习率容易跑偏
方案 前几个epoch用小学习率,平稳后再调高
比例 通常warmup占总训练的5%~10%
实现 线性从0增长到目标学习率
必要性 大模型(EfficientNet-B5+)训练时几乎必须
YOLOv5 内置WarmUp,默认前3个epoch

学习率调度选择建议

阶段 推荐策略 理由
Baseline CosineAnnealing 简单有效
大模型 WarmUp + CosineAnnealing 防止初期跑偏
冲分 CosineAnnealingWarmRestarts 周期重启跳出局部最优
快速实验 OneCycleLR 收敛最快

四、训练策略

输入尺寸与精度权衡

维度 说明
规律 输入图片尺寸越大,模型精度越高
原因 更多细节信息被保留
限制 显存随尺寸平方增长
实践 先用小尺寸(256/384)验证流程,再用大尺寸(512/640)冲分
分割特例 医学大图需从TIF裁剪,裁剪尺寸影响精度

交叉验证策略

策略 说明 适用场景
按图片划分 以大图为单位划分折 医学大图(入侵肾脏)
按切片划分 裁剪后按切片划分 切片间独立时
K折 K=4/5/8 通用
留出法 简单train/val划分 快速验证
分层划分 按类别比例划分 类别不均衡时

交叉验证与线上分数一致性

问题 说明
CV与LB不一致 本地交叉验证分数与线上排行榜分数不匹配
原因 验证集分布与测试集分布不一致
解决 对抗验证(Adversarial Validation)调整验证集
数据泄露 测试集存在泄露时LB不可靠
建议 以CV分数为主,LB为辅

SWA在CV中的应用

维度 说明
时机 训练末期最后5~10个epoch
方法 维持较高固定学习率,对权重取算术平均
效果 更稳健的最终模型,减少单次保存的随机性
CV验证 有交叉验证时SWA收益更明显

OHEM(在线困难样本挖掘)

维度 说明
原理 筛选模型预测错误且高置信度的困难负样本
实现 按OHEM ratio计算keep_number,只保留top-k困难样本
适用 目标检测(正负样本极度不均衡)
不适用 图像分类(容易过拟合训练集)
本质 等价于对困难样本做上采样
风险 过拟合训练集,需谨慎使用

五、自动调参

自动调参工具对比

工具 特点 适用场景
NNI (Microsoft) 支持多种搜索算法,可视化 通用超参搜索
Optuna 贝叶斯优化,易用 轻量级搜索
Ray Tune 分布式搜索 大规模搜索
AutoAugment 专门搜索增强策略 数据增强优化

需要搜索的关键超参数

超参数 搜索范围 优先级
学习率 1e-5 ~ 1e-3 最高
输入尺寸 256/384/512/640
Batch Size 8/16/32/64
增强强度 弱/中/强
权重衰减 0/1e-4/1e-3
Label Smoothing 0/0.05/0.1

六、CV训练实战流程

1. 小尺寸(256)快速验证数据管线和训练流程
2. 切换到中等尺寸(384/512)正式训练
3. 选择最优模型架构(EfficientNet-B3~B5)
4. 加入高级增强(MixUp/CutMix/Mosaic)
5. 调优损失函数(BCE+Dice/Focal+Dice)
6. 加入SWA/EMA提升泛化
7. 多折交叉验证 + TTA
8. 多模型融合