617. LEAP - Atmospheric Physics using AI (ClimSim) | leap-atmospheric-physics-ai-climsim
感谢主办如此有趣的比赛。我们深深感谢主办者和 Kaggle 工作人员。我还要感谢 @sae20gorilla、@hidebu、@takatoyoshikawa 和 @khiroki 与我组队。尽管我们在截止前一周才组建团队,但我们进行了许多非常有教育意义的讨论,每次看到我们的分数和公共 LB 排名提高都很愉快。
我们最好的私有解决方案是 8 个模型的集成。
组建团队后,我们开始使用外部数据进行验证集成,这是我们任何人都未用于训练的数据。由于本次比赛中 CV 和公共 LB 之间的关系良好,我们使用 Nelder-Mead 方法计算了每个模型的系数,从而显著提高了 CV (sub1)。此外, anticipating 存在异常值,我们使用 Nelder-Mead 方法计算了每列的系数 (sub2),但正如预期的那样,这方面的私有 LB 并不好。下面我们将更详细地描述 sub1 的每个部分。
| 模型 | 部分 | 模型架构 | 损失函数 | 使用训练数据量 | 备注 | CV | 公共分数 | 私有分数 | 权重 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | tenten | 1dConv-Transformer-GRU | Huberloss | 73.5M | 0.77776 | 0.77697 | 0.77157 | 0.49187 | |
| 2 | tenten | 1dConv-Transformer-GRU | Huberloss | 35M | 0.77257 | 0.77292 | 0.76602 | 0.09789 | |
| 3 | chumajin | squeeze former | Huberloss | 16M | dim 192 + 重训练 | 0.76961 | 0.77050 | 0.76239 | 0.32106 |
| 4 | sae | 1dConv - GRU | Huberloss | 16M | 0.76787 | 0.76890 | 0.76192 | 0.01156 | |
| 5 | tenten | 1dUnet | Huberloss | 73.5M | 0.76723 | 0.76611 | 0.76139 | 0.07264 | |
| 6 | sae | 1dConv - LSTM | Huberloss | 16M | 0.76618 | 0.76739 | 0.76001 | 0.18994 | |
| 7 | chumajin | squeeze former | Huberloss | 16M | dim 128 | 0.76121 | 0.76278 | 0.75497 | -0.24416 |
| 8 | tenten | 1dConv-Transformer-GRU | MSEloss | 16M | 0.76108 | 0.75965 | 0.75654 | 0.07312 |
最终集成 CV : 0.78116375, 公共 LB : 0.78052, 私有 LB : 0.77477

模型:
・ 1D CNN + GRU
・ 1D CNN + LSTM
预处理:
对特征和目标都应用了 StandardScaler。
训练数据:
・使用了 Kaggle 的 train.csv。
・600 万额外数据(感谢 @khirokifor 从 Hugging Face 提取数据!)
训练:
分别训练序列目标和标量目标。
损失函数:
RMSE
后处理:
对于 ptendq0002_x(1<=x<=27),使用了线性模型。
ptend_q0002_x = state_q0002_x * coef + intercept_
预处理
・序列部分的差分以及 StandardScaler
・标量部分在应用 StandardScaler 后重复。
训练数据:
・使用了 Kaggle 的 train.csv。
・600 万额外数据
架构
SqueezeFormer 来自 Stanford Ribonanza RNA Folding 比赛的第 2 名解决方案,(https://www.kaggle.com/competitions/stanford-ribonanza-rna-folding/discussion/460316)
损失掩码
我没有使用不可预测目标的损失。
重训练
20 个 epoch 后额外进行 10 个 epoch 的微调。
cv 0.767055 → 0.768034112 (我称此为 chumajin model1.)
来自队友的见解
・ Huberloss(delta=1)
CV 提高了约 0.01。
・通过分离损失进行重训练 (re-finetune)
通过再次训练限制损失,并从上述 chumajin model1 创建三个额外模型,我将它们的预测平均,这些预测是从模型的限制损失部分推断出来的,并与 chumajin model1 结合
通过这样做,我将模型的 CV 从 0.7680 提高到了 0.7696。结果,重训练导致 CV 提高了 +0.0026。
后处理
・应用 tenten 的 torch.min 后处理用于标量部分。
・应用 sae 的后处理,CV 提高了约 0.002。
遗憾与致谢
在 tenten 的见解下,改进 CV 的 SqueezeFormer 是在截止日期前大约一天半创建的。在 A100 上训练 1600 万训练数据大约需要 24 小时,所以我无法在所有 7350 万低分辨率数据上进行训练……但是从组队中学到了很多,尤其是从队友那里。感谢队友!!