返回列表

8th place solution: matched filter and CNN

524. G2Net Detecting Continuous Gravitational Waves | g2net-detecting-continuous-gravitational-waves

开始: 2022-10-04 结束: 2023-01-03 物理与天文 数据算法赛
第8名方案:匹配滤波器和CNN

第8名方案:匹配滤波器和CNN

作者: s_shohei (Grandmaster) | 比赛排名: 第8名

祝贺获奖者,我也要感谢组织者和我的队友。

摘要

  • 使用 PyFstat 的匹配滤波器
  • 使用伪标签和合成数据的 CNN
  • 集成 MF 和 CNN 的结果

匹配滤波器

匹配滤波器(MF)是搜索连续波的一种极具竞争力的方法。PyFstat 提供了一个 MF 模块,我们在本次比赛中使用了它。然而,PyFstat(及其底层的 LALpulsar)需要特定的文件结构(.sft 文件),这与 hdf5 或 ndarray 不兼容。我们将提供的数据转换为了 sft 文件。
当提供四个值:f0、f1、alpha 和 delta 时,匹配滤波器会计算一个“twoF”值,这是目标波存在的“似然性”的统计度量。

  • 我们使用了 PyFstat 的 SemiCoherentSearch,参数设置为 "nsegs=1000"。
    在这里,我们使用了相对较大的 "nsegs" 值来平滑 "twoF" 关于参数 f0/f1/alpha/delta 的函数形状。这个技巧有助于在更少的网格搜索试验中找到目标波的存在。
  • 我们对 alpha 和 delta 进行了网格搜索。
  • 我们使用 Optuna 搜索 f0 和 f1,以最大化 twoF 值。
  • 我们对每个样本进行了大约 600 次 Optuna 探索。
  • 您可以在我们的实现中找到更多信息:
    https://www.kaggle.com/code/iiyamaiiyama/g2net-pyfstat-matched-filter

交叉验证结果

展示了训练数据(600个样本)的匹配滤波器直方图。右图是左图的放大版。如您所见,如果 MF 结果大于 4600,精度为 100%。因此我们将 4600 设为阈值。
MF Histogram

600 个样本的 AUC 为 0.8406。
AUC Curve

排行榜结果

如果我们仅提交 MF 结果,私有/公开排行榜得分为 0.764/0.760,这并不是一个非常理想的竞争结果。我们认为这可能是由于非平稳噪声造成的。因此,我们决定集成 MF 和 CNN 的结果来提高我们的分数。

CNN

数据集

训练数据仅包含 600 个样本。我们必须解决这个问题。

平稳噪声

  • 使用匹配滤波器的伪标签
    我们从测试集中选择了 MF 结果大于 4600 的样本。大约有 1700 个样本。
  • 合成数据
    我们使用以下公式从 train1 和 train2 合成了新数据:
    new_data = train1 * alpha + train2 * beta
    (alpha 和 beta 满足条件 alpha^2 + beta^2 == 1

非平稳噪声

我们参考了以下笔记本来创建我们自己的新数据。
https://www.kaggle.com/code/vslaykovsky/g2net-pytorch-generated-realistic-noise
创建新数据后,我们像处理平稳噪声数据一样,通过合成两个数据来增强数据。

模型

我们有两个独立的模型:一个用于平稳噪声,一个用于非平稳噪声。模型本身是普通的 CNN。我们使用了数据增强技术,如水平/垂直翻转、掩码和滚动。