You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

视频分类CNN训练中F1分数停滞问题求助

损失下降但F1分数停滞的排查方案

1. 数据与标签层面排查

  • 检查标签分布:多标签任务中如果存在严重类别不平衡(比如大部分样本标签为0,少数为1),模型会倾向于输出全0,大量负样本被正确预测会让损失下降,但正样本识别能力差会导致F1停滞。统计每个类别的正样本占比,确认是否存在极端失衡。
  • 验证shot袋帧采样逻辑:论文中对每个shot采样固定数量帧,你的自定义VideoDataset是否正确实现?如果采样的帧都是冗余信息(静态帧、重复帧),模型学到的特征无效,虽能拟合损失但无法泛化到有效分类。
  • 排查标签标注错误:大量标注错误(正样本标负、负样本标正)会让模型拟合错误标签,损失下降但实际分类能力没提升,F1自然不动。随机抽取部分样本人工核对标签。

2. 损失与评价指标匹配问题

  • 确认MultilabelF1Score计算参数:是否设置了正确的average方式(macro/micro/weighted)?类别不平衡时用macro会被少数类拉低,而BCEWithLogitsLoss是对每个标签单独计算再平均,逻辑不匹配会导致指标脱节。另外,默认阈值0.5是否适合你的数据?模型输出logits经sigmoid后,正样本概率可能普遍低于该阈值,导致F1计算异常。
  • 检查损失函数输入正确性:BCEWithLogitsLoss输入是未经过sigmoid的logits,标签必须是float类型的one-hot编码。如果标签是整数类型,损失计算会异常,数值虽降但学习方向错误。

3. 训练流程细节排查

  • 查看训练/验证集划分:是否存在数据泄露?比如验证集样本和训练集高度重叠,或划分时未考虑视频独立性(同一视频的不同shot分到训练、验证集),会导致损失下降但验证集F1无法提升。
  • 检查优化器与学习率设置:学习率过高会导致模型震荡,过低则无法有效更新;是否添加了合适的权重衰减?模型过拟合时,损失下降但泛化能力差,F1停滞。另外,训练过程中是否未调整学习率,导致后期陷入局部最优。
  • 验证模型特征提取能力:抽取模型中间层特征,用TSNE等工具可视化训练集和验证集的特征分布,如果两类样本特征无明显区分,说明模型没学到有效特征,换模型也没用,问题出在数据或训练流程。

4. 推理阶段阈值调整

  • 尝试动态调整分类阈值:BCEWithLogitsLoss基于概率计算损失,但F1分数对阈值敏感。在验证集上测试0.1到0.9的不同阈值,找到能最大化F1的阈值。默认0.5若不匹配数据分布,就会出现损失降但F1停滞的情况。

内容的提问来源于stack exchange,提问作者zulle99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:57:27