626. NeurIPS - Ariel Data Challenge 2024 | ariel-data-challenge-2024
这是一次非常有趣且独特的比赛。能够学习到这么多此前对我来说非常陌生的领域知识,非常有趣。
我队友的解决方案:
https://www.kaggle.com/competitions/ariel-data-challenge-2024/discussion/543681
(待添加)
首先,我在空间维度上聚合信号并使用时间分箱(time-binning)。这样,在连接 FGS1 数据和反转的 AIRS 数据后,我得到一个大小为 (data_size, 375, 283) 的数组。
我计算不同频率的加权平均值,以降低相对于信号幅值的信号噪声。当我们使用频率信号的逆方差作为权重(首先按频率信号的幅值归一化)时,可以最小化这种噪声。这假设只有高斯噪声,且频率间的噪声不相关,这并不完全准确。但我认为它仍然提供了一个很好的估计。
设 S 为特定样本的信号数组,形状为 (375, 283)。利用计算出的方差,我们可以按以下方式估计相对于信号大小方差最小的信号:
首先,我们按平均信号强度归一化每个频率:
为了不扭曲这个方差,我实际上不仅仅计算方差,而是有一种考虑信号形状的方法。使用这个加权平均信号,我通过对信号的一阶导数使用高斯一维滤波器来找到 ingress(进入)和 egress(离开)时间。
类似于公共 notebook 中的做法,我正在寻找一个拟合输入信号曲线的多项式。这样我可以得到每个信号 transit depth(凌日深度)的初步估计。
我的神经网络模型现在接收几个值作为输入,x_1, x_2, 和 x_3:
在网络中,只要使用非线性激活函数,我就只使用对缩放不变的特征。否则,模型会因为强烈的分布偏移而失效。
模型产生整体 transit depth 的全局预测。为此,我再次简单地使用逆方差作为不同频率的权重,而不是学习到的加权平均。我发现这样泛化效果稍好一些。
我的模型还为每个频率生成 transit depth 预测。这是通过一个一维卷积滤波器完成的,它学习局部附近频率的 transit depth 的加权平均。我使用另一个学习到的加权平均来结合前两个预测。
sigma 预测涉及三个步骤:
我使用 wavg 信号的方差估计全局 sigma,并计算这个全局方差与 individual frequency variances(在频率维度上略微平滑)之间的学习加权平均。我在逆平方空间中对它们进行平均。
第二种估计 sigma 的方法是使用预测深度的轮廓作为 sigma 的基线:depths - min(depths)(例如,高深度预测更可能是错误的)。这第二种方法在 CV 和 LB 上给我的分数带来了非常大的提升(我相信是 +0.03)。
x_1 在时间维度上归一化,并传入一个小型卷积网络,以计算应用于深度预测的小因子和应用于 sigma 预测的因子。
我使用一个 LSTM 处理 min-max 归一化的深度和 sigma 预测,向其添加残差,然后缩放回以恢复原始的 min-max。事实证明,这是一种应用深度学习而不发生过拟合的有效方法。
最后,我使用一个自定义的负对数似然损失函数,直接优化预测的光谱和 sigma 预测:
我的单模型 2 折 CV 约为 0.64,私有 LB 得分为 0.658。
最后,感谢我的队友们的辛勤工作!