返回列表

13th Place Team (a story from a Kaggle newbie's view)

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

开始: 2021-03-02 结束: 2021-06-03 药物研发 数据算法赛
第13名团队(一位Kaggle新手的视角)

第13名团队(一位Kaggle新手的视角)

作者:Murat Cihan Sorkun
排名:第13名

大家好,

这是一次精彩的比赛。我要感谢我的团队成员( @eakdag, @ubique, @aerdem4, @proletheus )所付出的巨大努力。我们在最后一刻与金牌失之交臂,但我学到了很多,也结识了不错的朋友。

作为一名Kaggle新手,我将从我的角度讲述我们团队的故事。内容可能有点长,所以我将其分成了几个部分,我会及时填充内容。

[简介]

我和Erkut是土耳其科尼亚高中(MFL)的老同学。12年后,我们在荷兰埃因霍温偶然相遇。我们都在埃因霍温理工大学攻读博士学位。我从事化学信息学应用研究,而Erkut从事计算机视觉研究。在BMS比赛开始前两周,我们曾讨论过一起尝试Kaggle比赛。当这次比赛出现时,这是一个绝佳的机会 :D。于是我们组建了“MFL Eindhoven”团队。

[准备]

在比赛开始时,除了玩过一些玩具数据集外,我没有计算机视觉方面的经验。我参加了Kaggle的快速计算机视觉课程。然后我开发了我的第一个内核,用于检测图像中的立体化学层

同时,我分析了InChI并列出了可能的解决方案思路。(见评论中我早期研究的图片)

[训练首批模型]

起初,我们使用 @yasufuminakama 著名的 ResNet+LSTM notebook 开始进行图像描述。然而,我们的资源有限,训练速度超级慢。我们想要进行许多不同的实验,所以我们需要一种更快的方法。(LB:7.06

Mark的TPU notebook@markwijkhuizen 分享了一个很棒的端到端TPU notebook。我们使用 eff_B1+LSTM 来训练我们的模型。每个epoch大约需要(30分钟到1小时),这使我们能够进行以下实验:

  • 更大的图像尺寸
  • 不同的分词器
  • 仅使用较长的序列进行训练
    (其他可能的改进列表见评论)

现在,我们有了几个模型(LB: 4.0 到 7.0 之间),是时候将它们集成起来以提升我们的分数了。

PS:特别感谢 @markwijkhuizen!如果没有您的分享,这些实验是不可能完成的。

[合并算法的助推]

淘金热
我们的第一个合并算法是“淘金热”。它通过选择Rdkit检测到的有效分子来简单地合并两个提交结果。当我们将“淘金热”应用于来自不同模型的提交结果时,我们的分数提高到了 LB: ~3.50

迷失灵魂的收集者
在我们合并所有提交结果后,仍然有大约10万个无效分子。为了找到它们,我们开发了一种算法,仅针对无效分子从每个epoch进行推断。使用这种方法,我们又收集了2万个有效分子,分数提高到了 LB: ~3.30

在此期间,@hengck23 分享了他的 transformer和推理脚本。我们推断了两个提交结果(

同比赛其他方案