返回列表

Dinov3 + DoRA + Tweedie Loss + Ballanced R2

687. CSIRO - Image2Biomass Prediction | csiro-biomass

开始: 2025-10-28 结束: 2026-01-28 作物智能识别 数据算法赛
Dinov3 + DoRA + Tweedie 损失 + 平衡 R²

Dinov3 + DoRA + Tweedie 损失 + 平衡 R²

作者: HF Sunny
发布时间: 2026-01-29
竞赛排名: 31

引言

  • 在这篇 writeup 中,我将重点介绍该方法中的一些关键点。基线模型灵感来源于:Dinov3 Baseline LB 0.70

预处理

  • 使用 StratifiedGroupKFold 基于 labels="State"groups="Sampling_Date" 将数据划分为 5 个对应的折。然而,可以通过对多个 random_seed 进行暴力分析来找到 golden_seed(黄金种子)
  • 用于寻找 golden_seed 的指标是基于训练集和验证集的 "Dry_Total" 列计算得出的均值。

模型微调

  • 使用 DoRA 代替 LoRA。简而言之,LoRA(低秩适应)通过在原始权重上添加低秩矩阵来更新模型,主要专注于高效微调。DoRA(权重分解低秩适应)通过将权重分解为两个分量——大小(magnitude)和方向(direction),并仅将 LoRA 应用于方向部分,从而改进了这一点。这使得 DoRA 能够通过分别学习 scale 和 orientation 的变化,更准确地模拟全量微调。
  • 目标:使用 Tweedie 损失 代替 L1、L2 或 Huber 损失。您可以通过下图查看原始数据的分布:
    数据分布图
    可以得出结论:
  • 零膨胀 (Zero-inflation):大量样本的生物量恰好为 0g。
  • 右偏态 (Right-skewness):非零值高度偏斜,具有长尾。

因此,使用 Tweedie 损失函数最适合描述这种分布。它是一种复合泊松 - 伽马分布。您可以在此处查看更多关于 Tweedie 分布函数的信息:Tweedie Distribution Wiki

平衡指标

其中一个错误是过于依赖组织者提供的整体 分数。较高的整体 可能会产生误导,并可能掩盖模型中的显著偏差。

由于我们需要一个在所有三个目标 "Dry_Green""Dry_Clover""Dry_Dead" 上都能良好泛化的模型。我们应该分别计算每个类别的 。为了防止模型在一个类别上表现良好而在其他类别上失败,我引入了一个自定义评估指标:

S = {(R²Green, R²Clover, R²Dead)}
Score = mean(S) - α × std(S)

为什么这样有效:
通过减去标准差 (std),我们惩罚了不一致性。这迫使模型在所有类别之间取得平衡,确保预测在整个数据集中稳定且无偏差。

同比赛其他方案