返回列表

3rd place solution: brief summary

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

开始: 2021-03-02 结束: 2021-06-03 药物研发 数据算法赛
第三名方案:简要总结

第三名方案:简要总结

作者:KF
队友:lyakaap, bamps53 (Camaro)
发布时间:2021-06-04

首先,我要感谢竞赛主办方和所有参与者的辛勤工作。这次竞赛非常有挑战性,我学到了很多东西。
我还要感谢我的队友 @lyakaap@bamps53。我深信如果没有他们,我无法取得这样的成绩。
在这里,我将尝试总结我们方案的一些要点。

概览

我们的方案包含三个阶段:

  • 第一阶段:图像描述训练
  • 第二阶段:InChI 候选生成
  • 第三阶段:InChI 候选重排序

方案概览图

第一阶段:图像描述训练

这次竞赛的一个重要方面是训练数据和测试数据之间的趋势差异。起初,我在交叉验证(CV)和公开排行榜(LB)之间的差异上遇到了困难,但后来我们注意到测试数据中含有更多的椒盐噪声。因此,我们通过在训练期间添加椒盐噪声增强来解决 CV 和 LB 之间的差距。

数据处理示意图

第二阶段:InChI 候选生成

在第三阶段,通过多个模型估算图像和 InChI 候选对的似然度,并将似然度最高的 InChI 候选作为最终输出。因此,在这一阶段,有必要生成各种高质量的 InChI 候选。
我们通过使用如下所示的各种模型以及束搜索生成了多种 InChI 候选:

  • Swin Transformer + BERT Decoder (by KF & lyakaap)
  • Transformer in Transformer + BERT Decoder (by KF)
  • EfficientNet-v2 followed by ViT + BERT Decoder (by lyakaap)
  • EfficientNet-B4 + Transformer Decoder (图像尺寸:416x736) (by camaro)
  • EfficientNet-B4 + Transformer Encoder/Decoder(图像尺寸:300x600) (by camaro)

第三阶段:InChI 候选重排序

我们方案的关键部分之一是重排序。实际上,大多数单模型的结果都在 LB 0.9~0.8 左右,但通过使用下面显示的逻辑对多个模型的生成结果进行重排序,我们能够达到最终结果(LB 0.54)。

  • 使用 rdkit.Chem.MolFromInchi 函数验证每个 InChI 候选的有效性。(is_valid)
  • 对于每个 InChI 候选,计算多个模型训练时使用的损失(交叉熵/焦损失),并在模型间取平均值。(loss)
  • 按“is_valid”降序 → “loss”升序对候选进行排序,得分最高的 InChI 即为最终输出。

未奏效的方法

  • 使用 YOLOv5 进行原子和化学键的目标检测
    • 像 Dacon.ai 的第一名方案那样重建 InChIs
    • 将检测结果作为额外的输入通道使用
  • 使用 extra_approved_InChIs.csv 进行 MLM 预训练
  • InChI 候选的排序学习(点对点)
    • 使用束搜索生成的假样本作为负例,进行真/假分类和 Levenshtein 距离预测。
同比赛其他方案