返回列表

2nd Place Solution: trainable custom frontend [EventHorizon]

454. G2Net Gravitational Wave Detection | g2net-gravitational-wave-detection

开始: 2021-06-30 结束: 2021-09-29 物理与天文 数据算法赛
第二名方案:可训练的自定义前端 [EventHorizon]

第二名方案:可训练的自定义前端 [EventHorizon]

作者: RabotniKuma (Grandmaster)
比赛排名: 第 2 名

首先,我要向组织者和所有团队表达深深的感谢,感谢你们让这场比赛变得如此有趣和激动人心。同时,我要热烈祝贺第一名,他们仅凭一个 ResNet34 模型就统治了这场比赛 :)

代码已发布在:https://github.com/analokmaus/kaggle-g2net-public

通用设置

  • 训练轮数 = 8
  • 优化器 = Adam
  • 学习率调度器 = CosineAnnealingWarmRestarts(8)
  • 损失函数 = BCE (二元交叉熵)
  • 交叉验证 = 目标分层 5 折交叉验证

前端架构

神经网络架构在提升性能方面起到了最重要的作用。以下是我使用的前端架构。总体而言,可训练的前端优于固定前端。

Frontend Architecture 1 Frontend Architecture 2 Frontend Architecture 3 Frontend Architecture 4

预处理

我对所有网络都应用了带通滤波器。CWT-CNN 和可训练前端 CNN 使用 [16, 512],1d-CNN 使用 [30, 300]。白化处理没有效果。

数据增强

我在波形和频谱图上测试了几种类型的数据增强,但只有少数波形增强有效。我为 2d-CNN 网络添加了高斯噪声,为 1d-CNN 翻转了波形幅度。

伪标签

在软(连续)伪标签测试数据集上重新训练使 AUC 提高了约 0.001。在伪标签过程中进行标签平滑也有少许帮助。

模型堆叠

我保留了我所有实验的 oof(样本外)预测结果和预测值。使用交叉验证的 Ridge 回归模型来组合神经网络模型的输出。随着我在堆叠模型中添加更多模型,观察到 CV(交叉验证分数)和 LB(排行榜分数)都有持续的提升。最后,我运行了贪婪模型选择,选择了 20(/10/5) 个模型以最大化 CV 分数。

堆叠 20 个模型:CV 0.88283 / Public LB 0.8845 / Private LB 0.8829
堆叠 10 个模型:CV 0.88270 / Public LB 0.8842 / Private LB 0.8827
堆叠 5 个模型:CV 0.88242 / Public LB 0.8839 / Private LB 0.8825

附录:所有网络架构

All Networks 1 All Networks 2
同比赛其他方案