450. SETI Breakthrough Listen - E.T. Signal Search | seti-breakthrough-listen
感谢 Kaggle 和伯克利 SETI 研究中心举办这次比赛。寻找外星人的过程非常激动人心。为了缩小交叉验证(CV)和排行榜(LB)之间的差距,我尝试了很多方法,但成功的寥寥无几,因此,我的解决方案非常简单。
我的解决方案包含两个步骤。第一阶段仅使用训练数据进行训练,下一阶段使用测试数据和伪标签进行训练。在第一阶段,我只使用了垂直翻转、Cutout 和 Mixup,以防止模型因意外的数据增强导致信号丢失而产生混淆。此外,为了防止过拟合,我强力使用了 StochasticDepth 和 Dropout。Mixup 在混合目标时使用了逻辑“或”运算,而不是 Alpha 混合。这使得模型能够对微弱信号产生强烈响应。在此阶段,通过训练 EfficientNetB5,我们达到了 PublicLB 0.800 的成绩。
在第二阶段,我们使用第一阶段预训练模型生成的伪标签,对第一阶段的模型进行微调。在这种情况下,我们参考了 NoisyStudent 方法,并更强力地使用 Stochastic Depth 和 Dropout 来防止对伪标签的过拟合。通过重复此过程几次,PublicLB 达到了 0.813。最后,我简单地对 LB 分数最高的五次提交结果进行了平均。
您可以在这里查看代码示例。
https://www.kaggle.com/hirune924/2ndplace-solution
y = y + y[index] - (y * y[index])
有时会出现损失变为 NaN 或验证集 AUC 变为 0.5 且训练无法推进的情况。在这种情况下,我通过先仅训练头部和编码器的 BN 层一个 epoch 解决了该问题。
代码与第一步几乎相同,增加了伪标签,并在训练中进一步加强了 Stochastic Depth 和 Dropout。