626. NeurIPS - Ariel Data Challenge 2024 | ariel-data-challenge-2024
我们(@daiwakun 和 @cnumber)感谢组织者举办了这场迷人的竞赛,特别是 @gordonyip 和 @lorenzomugnai,他们不知疲倦地工作,使得参赛者能够专注于更“有趣”的部分。
此外,向 @jeroencottaar 致以热烈的掌声,他在几乎整个比赛期间都保持着第一名的位置。虽然我们在比赛结束时取得了胜利,但我们相信如果比赛时间缩短或延长一天,我们就会输掉。
我们解决方案中的许多想法是在深入研究用于数据生成的 ExoSim2 和 TauREx3 代码期间发现的,包括增益漂移拟合和前景处理。虽然我们没有(或无法)找到任何漏洞,但我们必须承认我们的解决方案在某种程度上“破解”了模拟器。尽管如此,我们希望主办方可以利用我们解决方案的某些方面,并希望它对实际数据有用。
对于那些对我们比赛最后两天分数显著提高感到好奇的人,我们决定在 另一篇帖子 中展示我们团队当时的情況。
仅使用了 AIRS-CH0 通道,因为我们的解决方案 heavily 依赖于相邻波长之间的相关性,而且由于 FGS1 通道数据存在点扩散函数失真和波动的问题,我们不确定如何有效利用它。
使用了公共 Notebook(我们想放链接,但找不到我们使用的 Notebook),并进行了以下更改:
[0:8] 和 [24:32] 估计前景信号,并将其从中心区域 [8:24] 中减去。适当考虑前景的效果可以在 这篇讨论帖 中看到。
为了识别凌日的时间位置,使用了波长平均信号。在使用基于规则的算法估计近似时间位置后,使用拟合算法识别确切时间。
增益漂移是指探测器的增益随时间和不同波长的变化。这些漂移会在观测信号中引入系统误差,必须进行校正才能准确估计凌日深度。
ExoSim2 将增益漂移建模为:
$$
(1 + f(t) \cdot g(\lambda))
$$
其中 \( f(t) \) 和 \( g(\lambda) \) 是多项式函数。
值得注意的是,最终的函数形式不同于双变量多项式 \( h(t, \lambda) \),因为在前者中波长和时间分量可以分离,而在后者中不能。
通过在下面描述的拟合中直接使用这种函数形式,我们能够在深度估计中实现高性能。
用于拟合的函数如下:
$$
y_{\text{pred}} = I(\lambda) \times \text{Box}(\lambda) \times (1 + f(t) \cdot g(\lambda))
$$
其中 \( I(\lambda) \) 是恒星的光谱,\( \text{Box}(\lambda) \) 描述凌日深度;它在凌日外为 1,在凌日内为 \( 1 - d_\lambda \)。
拟合参数的数量如下:
值得一提的是,如果其他参数固定,最小化均方误差的最佳 \( I(\lambda) \) 和 \( \text{Box}(\lambda) \) 中使用的最佳深度可以解析找到,不需要由拟合算法考虑。
为了稳定拟合过程,使用了两阶段拟合。在第一阶段,\( I(\lambda) \) 直接从原始信号通过时间平均估计,并在拟合期间固定。在第二阶段,\( I(\lambda) \) 不固定,并在拟合期间为每一步优化设置,而对于拟合参数,使用第一阶段的结果作为初始参数。拟合中使用的每个数据点的误差是从每个波长处的信号变化估计的。
每个波长处的深度估计误差不同,因为与每个波长相关的信噪比不同。使用了 Bootstrap 法 来克服这个问题并估计每个波长的深度误差。
更多细节可在我们的代码中找到。
使用了三个模型:高斯过程回归、自编码器和非负矩阵分解 (NMF)。它们以 6:2:2 的比例进行集成。
没什么花哨的,不像第二名的解决方案。
采用了由 RBF 和 Matern 核组成的简单核,并将通过 Bootstrap 法计算的误差传递给 sklearn.gaussian_process.GaussianProcessRegressor,以便模型可以考虑每个数据点的不确定性。
我们应用自编码器来捕捉数据中的关系。
与捕捉线性关系的 PCA 不同,自编码器可以建模更复杂的非线性模式。
此外,我们期望通过使用 MSE 损失训练模型,自编码器模型可以考虑噪声并恢复“最佳”光谱。
重要要点是为每个系外行星标准化数据,并取深度光谱的移动中位数以平滑输入深度光谱。
我们使用的模型如下,隐藏层有 4 个节点:
input_data = Input(shape=(input_dim,))
encoded = Dense(encoding_dim, activation='relu')(input_data)
decoded = Dense(input_dim, activation='linear')(encoded)
autoencoder = Model(input_data, decoded)
与自编码器非常相似,但我们添加它是为了增强多样性。
与自编码器不同,NMF 的秩数设置为 5。
下图显示了训练数据中 NMF 识别的光谱成分。
可以看出每个成分的主要贡献气体是:
这表明 NMF 能够无监督地考虑光谱的相关性。
我们 took 了以下成分的加权平均值:
常数值在深度光谱几乎恒定但存在一些偏差的情况下发挥了重要作用。
由于我们的解决方案包含了各种想法,我们通过后期提交检查了那些看起来重要的成分的贡献。
| 方法 | 公共分数 | 私有分数 | 公共损失 | 私有损失 |
|---|---|---|---|---|
| 最终提交 | 0.7330321 | 0.7420624 | 0.0000000 | 0.0000000 |
| 仅高斯过程回归 | 0.7221480 | 0.7343485 | -0.0108841 | -0.0077139 |
| 仅自编码器 | 0.7078056 | 0.7181137 | -0.0252265 | -0.0239487 |
| 仅 NMF | 0.7017943 | 0.7122631 | -0.0312378 | -0.0297993 |
| 带有热像素处理 | 0.7021653 | 0.7224989 | -0.0308668 | -0.0195635 |
| without 前景处理 预测值 * 1.008 |
0.7225193 | 0.7298121 | -0.0105128 | -0.0122503 |
我们尝试使用 TauREx3 拟合深度光谱。
虽然它在训练数据上效果很好,但 leaderboard 分数很糟糕,可能是因为大气成分的变化。
我们确实尝试识别测试数据中的气体,但没有成功。
很难假设取 [8:24] 通道的和是最佳的。
在某些情况下,最佳范围可能是 [9:23] 或 [10:22],甚至取加权和可能是最佳的。
为了解决这个问题,我们尝试了几种机器学习方法,但未能击败 [8:24],可能是由于信号的时间空间波动。
对模拟代码的深入分析导致了我们需要胜利的关键想法。如果没有观察 ExoSim2 代码,就无法找到增益漂移的函数或前景处理方法。虽然我们曾认为这是使用模拟生成数据的竞赛的宿命,但我们非常惊讶一些顶级团队能够在不使用它们的情况下取得高分,所以再次向他们致以热烈的掌声。