返回列表

15th adversarial validation etc

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

开始: 2021-03-02 结束: 2021-06-03 药物研发 数据算法赛
第15名:对抗验证等

第15名:对抗验证等

作者:AkiraSosa
比赛排名:第15名

首先,我要感谢 Kaggle 和主办方举办这场激动人心的比赛。祝贺在这个艰难的比赛中获胜的选手们!

发现

我在早期阶段尝试了对抗验证。结果如下。

adv val

这张图本身说明了测试集是如何构建的。测试集可以分为两个子集。我将它们称为……

  • 测试子集 A(图左侧的样本,与训练集不相似)
  • 测试子集 B(图右侧的样本,与训练集相似)

当时,我很确定伪标签在测试集上会效果很好。我还认为有必要创建能够很好地拟合这两个子集的模型。如果剔除所有半数预测,就可以估计当前模型对每个样本的拟合程度。

训练与建模

我使用了3个模型:Deit tiny、small 和 base。

我的模型主要预测 SMILES 而不是 InChI。SMILES 比 InChI 更紧凑,有助于减少训练时间。SMILES 在提交前转换为 InChI。我还创建了一个预测 InChI 的模型,但这只是为了在 SMILES 无效时作为后备方案。总而言之,我通过3种方式预测 InChI。优先顺序如下。

  • 从预测的 SMILES 获取规范 InChI
  • 从预测的 InChI 获取规范 InChI
  • 原始预测的 InChI

训练步骤由3步组成。

  1. 使用随机 SMILES 规范化仅预训练解码器。
  2. 将在步骤1中训练的解码器与 Deit 结合,并通过额外的合成图像(尺寸 224)进行微调。
  3. 使用训练集(仅困难样本)和伪标签进行微调,图像尺寸=384。

在步骤1中,我训练 Transformer 从随机 SMILES 预测规范化的 InChI 和 SMILES。接下来,解码器上的自注意力和头部被迁移并与 Deit 结合。因此,解码器上的交叉注意力是从头开始训练的。由于我没有太多的 GPU,这一步使用了 224 尺寸的图像。

最后,我在步骤3中训练了6个模型。

  • a1) Deit tiny,由测试子集 A 的伪标签 + 训练集(仅困难样本)训练。
  • a2) Deit small,由测试子集 A 的伪标签 + 训练集(仅困难样本)训练。
  • a3) Deit base,由测试子集 A 的伪标签 + 训练集(仅困难样本)训练。
  • b1) Deit tiny,由测试子集 B 的伪标签 + 训练集(仅困难样本)训练。
  • b2) Deit small,由测试子集 B 的伪标签 + 训练集(仅困难样本)训练。
  • b3) Deit base,由测试子集 B 的伪标签 + 训练集(仅困难样本)训练。

在步骤3中,位置嵌入通过插值扩展到图像尺寸 384。

推理

我使用了 TTA(rot90)和每个 token 的 logits 平均。

对于测试子集 A,我对模型 a1、a2、a3、b1、b

同比赛其他方案