670. NeurIPS - Ariel Data Challenge 2025 | ariel-data-challenge-2025
非常感谢组织者以及工作人员举办这场精彩的竞赛!我在数据工程和建模技术方面学到了很多,期待未来继续参赛!
我的方法包含以下步骤:
我使用了竞赛本身提供的标准校准技术。它包括增益/偏移校正的校准,并处理非线性、暗像素、坏点和热像素。此外,在校准步骤的最后,我移除了时间维度上偏离超过 $8 \sigma$ 的信号。仅这一项添加就使我的 CV(交叉验证,仅仅是简单的 80-20 分割,结果与 LB 几乎相同;LB 反馈时间为 5-8 小时)提高了约 0.05。我在这个部分没能花太多时间,因为即使使用 joblib,对所有数据重新运行也需要 1 个多小时。
mean = np.nanmean(signal, 0)[None, :, :]
std = np.nanstd(signal, 0)[None, :, :]
signal[(signal > mean + 8.0 * std) | (signal < mean - 8.0 * std)] = np.nan
以上是推理中使用的确切添加代码。
给定包含诸如 Rs 之类的特征以及少量的特征工程,如 Rs ** 2,但它们似乎不太重要。
相位提取是通过梯度的极值完成的。
然后通过每个相位的简单均值/最小值/最大值/范围/最小值除以边缘(近似凌日深度)/8 次多项式拟合等提取特征。此外,airs 数据沿频率维度(大小 356)被 array_split 成 32 块。每块然后像上面一样以相同方式处理,它们的特征被添加到我们的特征列表中。这增加了很多分辨率,并使 CV 提高了约 0.025。
CNN 不关心相位;输入 simply 是第一次移动平均后的 airs 和 fgs1 信号,跨时间分成 92 块,每块取平均。额外的步骤可能包括将相位信号加入 CNN,以及将 airs/fgs1 数据分离到不同的子网中,因为它们可能没有时间对齐,但这些想法并未实施。
有很多 CNN 实例,因为它们被集成到 RQ NN 集成中。为了防止过拟合,CNN 的几乎所有层都具有相同的权重和形状。除了最大池化外,未使用其他激活函数。
一个想法 borrowed from https://arxiv.org/pdf/2407.04491。
这个想法是深度集成,集成中的每个实例都以完全相同的方式训练,只是权重初始化不同。我们直接预测所有内容,即 pred 和 sigma,不使用采样或分位数回归。
直观地说,我选择了 soft RBF/RQ(它们表现相似,都增加了约 0.15 CV),因为有很多凌日曲线形状(提到添加了许多不同的临边昏暗模型)。所以这个 soft RQ 旨在首先将实例分类到软组中,然后在组内执行简单的线性回归。图片显示了第一个实例的第一个 RQ 聚类的分布。
训练非常独特;我不是在损失的平均值(竞赛指标)上训练,而是花更多精力训练表现较差的模型。类似于进化,最好的模型不再需要变得更好。这避免了过拟合,并使我的 CV 提高了约 0.03+。
m = jnp.median(losses, 0) # 0 是集成维度
w = jax.nn.relu(losses - m)
w = w / w.sum(0, keepdims=True) # 缩放以便每个通道被平等对待
w = jax.lax.stop_gradient(w)
return (losses * w).sum() / w.sum()
以上是训练中使用的确切代码。只有比中位数差的值才会被训练。
如果在训练期间存在同一行星的两个观测值,我都使用了,但在推理期间只使用第一个观测值。NN 推理是瞬间的,数据读取占据了大部分时间。
总之,在对 underlying physics 几乎没有理解,也没有使用先进的漂移/凌日窗口去噪技术的情况下,取得了可接受的结果。