454. G2Net Gravitational Wave Detection | g2net-gravitational-wave-detection
首先,我要感谢我的团队成员 @vladimirsydor、@zekamrozek、@yakuben 和 @uulott 的辛勤工作,同时感谢组织者和 Kaggle 社区为我们带来了如此精彩的比赛体验。
融合了 6 个 2D CNN 和 3 个 1D CNN 模型:包含 1 个 EfficientNet_b0、3 个 EfficientNet_b3、2 个 EfficientNet_b5,以及 2 个带有 Transformer 头的 1D ResNet 和 1 个基础 1D CNN。
带通滤波器 对于本次数据至关重要,我们进行了大量实验并尝试了不同的设置,以下参数显示的结果优于我们尝试的其他方案:
fmin=20,
fmax=1024 或 fmax=500 或 fmax=600(具体取决于模型),
hop_length=4,
bins_per_octave=12,
filter_scale=0.5,
pad=10。
对于图像输入,我们仅使用了 CQT,并未尝试 CWT。
有效的数据增强:
new_wave = (wave1 + wave2) / 2 且 new_target = max(target1, target2);模型
在比赛的大部分时间里,我们都在训练 EfficientNets,直到最后 1-2 周才开始尝试 1D 模型。
我们发现,增加输入图像尺寸可以提高性能,即使是对于 EfficientNet_B0 也是如此,因此我们对此进行了更多尝试。对我们来说,最好的结果是在输入形状不变的情况下,使用 stride=(1,2) 代替默认的 (2,2)。这允许模型在频率轴上自行“拉伸”输入,从而产生向网络输入更高分辨率图像的效果。
我们的 2D 模型在最初的几个 Epoch 中受到 BatchNorm 层梯度破坏的影响,为了克服这个问题,我们采用了两种方法。第一个有效的方法是将整个模型中的 BatchNorm 替换为 InstanceNorm。第二个有效的方法是冻结除 BatchNorm 以外的所有编码器层,在最初的 2 个 Epoch 中仅训练它们以及 Linear 头。
如前所述,我们较晚开始研究 1D 模型,主要是简单的堆叠 Conv 层,但在与 @uulott 合并后,他带来了一个非常有前景的 1D ResNet 模型,其表现与我们最好的 2D 模型水平相当(LB 约为 0.879)。
最后,当我们开始在较小的学习率下对模型进行微调,并关闭数据增强进行多个 Epoch 时,所有模型都从中受益。这将我们的 LB 分数提升到了 0.88 以上,并让我们保持在银牌区,随着我们微调和融合的模型越来越多,LB 排名也在不断上升。
集成
对于集成,我们使用了直接的 hyperopt 融合。加入任何 1D 模型都能提升我们所有的融合效果。
最终融合 由 6 个 2D-CNN 和 3 个 1D-CNN 组成:
附言。我们尝试过但未能进入最终融合的其他方法:
我们停止使用的增强方法: