450. SETI Breakthrough Listen - E.T. Signal Search | seti-breakthrough-listen
我得分最高的预测是以下模型预测结果的平均值:eca_nfnet_l1 (384x384 和 420x420)、EfficientNet-B2 (384x384)、-B6 (512x512 和 640x640) 以及 -B7 (640x640),并使用了 2x TTA(原始图像 + 水平翻转)。这些模型是在本地使用 FastAI 在我的 3070 以及后来的 3080Ti(eca_nfnet_l1 和 B2)上训练的,并在 Kaggle TPU 上使用 TensorFlow(B6 和 B7)训练,采用 LAMB 作为优化器,SGD with restarts 作为学习率调度策略,并在交叉熵损失函数中应用了轻微的权重调整 (2)。训练数据包括新的训练数据、归一化的旧训练和测试数据,以及带有软标签的新测试数据,训练时使用了 MixUp 和水平翻转作为增强手段。所有 6 个时间片的 cadence 数据被堆叠起来,并分两步调整大小:首先使用 INTER_NEAREST 插值放大到 1638x1638,然后使用 INTER_AREA 缩小。
正如其他团队也注意到的那样,并非所有具有良好本地 CV(交叉验证)分数的模型都有相应良好的公共 LB(Leaderboard,排行榜)分数。事实证明,表现良好的两个模型家族是 eca_nfnet_l 和 EfficientNets,而 ResNets(常规和 d 版本)、ecaresnets、resnests 和其他一些模型的 LB 分数低于我从它们的 CV 分数所预期的。不幸的是,我没能从这种 LB 和 CV 之间的差异中提取出太多有用的见解……此外,不出所料,较大的模型比稍小的模型表现略好,同时,从最终集成中排除较小的模型确实会让分数稍微降低。最好的单一模型是一个 4 折的 EfficientNet-B7 (640x640),公共 LB 为 0.80092,私人 LB 为 0.79648。
在训练中,我使用了所有 6 个时间片的 cadence 数据,因为在比赛重启之前,这种方法表现最好。虽然在重启后我继续使用同样的方法,因为当我只使用 3 个正样本时间片时,我发现分数没有提升甚至略有下降。此外,在比赛初期我就发现分数对调整大小的方法非常敏感。当将图像缩小到 256x256 时,INTER_AREA 插值是首选方法,因为 OpenCV 中可用的任何其他插值方法都会导致任何测试模型的 AUC 持续降低 0.02-0.03。此外,同时改变两个维度(如 1638x256 -> 320x320),无论使用何种插值方法,我都无法获得比 256x256 输入更好的分数。对我来说,让频率维度大于 256 像素的图像获得更好分数的唯一方法是,首先使用 INTER_NEAREST 插值将原始输入缩放到 1638x1638,然后将这些大图像调整为任何较小的尺寸。当以这种两步方式放大输入时,较大的输入尺寸总是会产生较大的 CV 和 LB 分数。最终,我在训练中使用的输入尺寸是在可用资源和分数之间的一个折衷。
事实证明,与我尝试过的任何其他优化器相比,LAMB 优化器能持续提供更好的分数(在 TensorFlow 和 FastAI 中都是),尽管 LAMB 是所有优化器中最慢的。然而,分数的持续提升值得每个 epoch 10-20% 的减速。关于学习率调度,带有热重启的 SGD 并训练 7 个 epoch(1 + 2 + 4)在训练时间和 CV 分数方面给出了最好的结果,相比于 1-cycle 策略或带预热的余弦衰减以及训练更多 epoch。最后,使用带有轻微正样本加权的交叉熵优于普通交叉熵和 Focal Loss。
在我的实验中,将归一化的旧训练数据和测试数据添加到新的训练数据中,导致本地 CV 持续增加 0.02-0.03。由于很明显新的测试数据与训练集有很大不同,使用带有软标签的测试数据有助于进一步提高公共 LB 分数(同时它略微降低了本地 CV,但在这一点上,相比我的 CV,我更信任 LB 分数)。
我几乎所有的实验都是在本地电脑上使用 FastAI 进行的,配备了一块 RTX 3070。直到比赛最后几周,我才找到了一种很好的放大输入的方法,那时我的本地资源耗尽了(尽管我将 GPU 升级到了 3080Ti),于是转而在 Kaggle 上使用 TensorFlow 和 TPU。总的来说,我发现训练数据的数量非常适合在这样相对较小的机器上进行快速实验。还有一点很有趣,在几次测试中 FastAI 竟然比 Lightning 快(至少在我手中 :D),所以我决定不再寻找任何替代品,几乎只使用 FastAI。最后,为了跟踪所有实验,我使用了 wandb,我得说它对我没有迷失在成百上千个实验中帮助很大。