返回列表

7th Place Solution : My First Gold And I am in Tears

442. Bristol-Myers Squibb – Molecular Translation | bms-molecular-translation

开始: 2021-03-02 结束: 2021-06-03 药物研发 数据算法赛
第7名解决方案:我的第一枚金牌,我热泪盈眶

第7名解决方案:我的第一枚金牌,我热泪盈眶

作者: Mr_KnowNothing | 比赛排名: 第7名 | 发布时间: 2021-06-04

大家好,

我们要感谢 Kaggle 和组织者举办了如此精彩的比赛。我在这里学到了很多东西,虽然很多人可能会批评这场比赛是一场硬件的较量,但对我来说,与其说是 GPU 的折磨,不如说是一次学习的经历,这主要归功于我可爱的队友 @pheadrus@shivamcyborg@atsunorifujita@nishcaydnk,他们允许并鼓励我不断地探索。

我一直以为我完全理解了 Transformer,但在这次比赛中,这一切都动摇了。我们要感谢 @hengck23 非常谦虚地与我们分享了 Transformer 到 Transformer 的基线代码,没有它,这枚奖牌是不可能获得的。代码很容易理解,我们在比赛中理清了很多概念。还有很多东西我们没能实现,比如 Transformer 模型的 Beam Search(束搜索),但最终我们对结果非常满意。

我们(@nischaydnk、我和 @shivamcyborg)像其他人一样从 CNN 编码器和 LSTM 解码器开始,很快转向了 GRU,然后 Rajneesh 加入,带来了 Transformer 到 Transformer 的想法。我们努力奋斗到了 1.30,然后 @atsunorifujita 加入,从那以后就像坐过山车一样。

最后一天对我们来说非常紧张,我们的分数是 0.65,我们知道除了 rdkit 后处理之外,我们需要别的东西才能进入金牌区,剩下的唯一办法就是在每个时间步进行 logits 集成,我们之前没有成功,但我们还是尝试了,结果成功了。我们的集成模型在 11:30 UTC 提交时给出了(LB 0.66,CV 0.71)的成绩,然后在 rdkit 后处理之后,我们在 11:45 UTC 提交时达到了(LB 0.60,CV 0.66),并跃升至第 7 名,最终也保持在这个名次。

我们的最终解决方案包括四个主要部分:

  • 有效地训练 Transformer 到 Transformer 模型
  • 每个时间步的 Logit 级集成
  • Rdkit 后处理
  • 最重要的一点:分析所有提交和验证集的 INCHI

使用的模型:

我们的最终集成包括:

  • 编码器 - 2个 ViT 384 Base,解码器 - Vanilla Transformer(CV-0.85,LB-0.76)和(CV-0.86,LB-0.77)
  • 编码器 - 1个 Swin Transformer 384,解码器 - Vanilla Transformer(CV - 0.99,LB -0.96)

模型训练:

我们开始训练 ViT 时类似于 heng 的方法,使用 lookahead 优化器并手动降低学习率。我们利用了增加分辨率训练的方法,首先用 224 的图像大小进行训练,然后微调同一个模型到 384,最后到 448。这给了我们很大的提升,我们能够达到 1.27 LB,但这还不够。在分析了有效预测后,我们意识到模型在很长的链状分子和有噪声的分子上总是失败,我们的假设是它过拟合了正常的分子。由于图像有噪声以及我们的发现,我们决定在训练中加入 Label Smoothing(标签平滑)和 Cutout,结果奏效了,我们用同样的 ViT 模型达到了(LB 0.77)。之后我们尝试了同样的策略在 448 图像大小上,但效果不是很好,因此被排除在最终集成之外。我们训练了另一个 ViT 模型,使用了不同的学习率和增加的 Random Scale 作为增强,并能够得分(LB 0.76)。

然后我们开始寻找多样化的模型库,继续训练 SWIN 和 Transformer-in-transformer,使用相同的训练策略,然而 Swin 击败了 tnt,得分为(0.96 lb),而 tnt 为

同比赛其他方案