442. Bristol-Myers Squibb – Molecular Translation | bms-molecular-translation
大家好,
这绝对是一场艰难的比赛,所以祝贺所有坚持到最后的参赛者。
感谢组织者,并祝贺所有的获胜者和我优秀的队友 @boliu0 @garybios,我们还要感谢 @hengck23 和 @yasufuminakama,如果没有你们的分享,我们无法取得这样的成绩。非常感谢!p>
这是一种非常古老的正则化技术,如果我没记错的话,2000年之前就有人在论文中提到过。在图像描述领域,在保证前序序列完全正确的前提下,预测下一个字符的准确率相当高。但是一旦一个字符预测错误,接下来的预测失败率就会逐渐增加,直到完全偏离。
所以我提出了噪声注入,即在训练期间随机用其他字符替换真实字符。被替换的字符在计算损失时会被忽略,但这并不意味着该技术对预测没有影响。虽然该字符本身不作为损失的一部分计算,但模型被迫在前一个字符错误的基础上正确预测下一个字符。
除此之外,该技术本身具有正则化效果。这使我们能够训练12-16层的transformer解码器。
主办方在比赛期间发布了1000万条没有图像的InChI作为外部数据。
我们发现rdkit可以使用InChI生成图像,因此我们生成了部分图像(约100~200万张)作为外部数据并将其加入训练。但后来我们发现这部分数据并没有带来太大的提升。不过,由于它也没有降低性能,所以我们保留了它。
在训练完所有模型后,我们在解码阶段对它们进行了集成。
原始预测的LB分数是0.62,然后我们使用rdkit对预测进行标准化,得到LB 0.60。
此时我们发现预测的InChI中约有14000行是无效的。为了替换这些无效预测,我们使用了3种方法来寻找它们的有效预测:
我们在比赛截止日期的前一晚发现,用有效预测替换无效预测可以显著提高LB分数,由于时间不足,我们只处理了原始预测中14000条无效预测中的8000条,这将我们的LB分数从0.60提高到了0.57。
特别感谢Z by HP和NVIDIA赞助我配备双RTX6000 GPU的Z8G4工作站和配备RTX5000 GPU的ZBook笔记本电脑。
这无疑是过去半年Kaggle上数据量最大的比赛。
所以我在双RTX6000 GPU上尝试了pytorch的DDP并行训练,体验非常棒,基本上可以达到单GPU训练两倍的速度。