返回列表

12th place solution

402. OpenVaccine: COVID-19 mRNA Vaccine Degradation Prediction | stanford-covid-vaccine

开始: 2020-09-11 结束: 2020-10-06 药物研发 数据算法赛
第12名解决方案

第12名解决方案

作者:rishigami | 比赛排名:第12名

我们( @hidehisaarai1213, @yasufuminakama, @rishigami, @copasta )感谢 Kaggle 和主办方举办这场有趣的比赛,也感谢所有参赛者给了我们很多启发。同时祝贺获胜者!

解决方案概览

Solution Overview

模型

正如队名所暗示的那样,我们开发了许多类型的模型。
以下是模型列表:

  • Pytorch RNN
  • Keras One-Hot RNN
  • 基于 NN 提取特征的树模型
  • MPNN (消息传递神经网络)
  • DeepGNN
  • Pytorch RNN + 域对抗神经网络 (DANN)
  • DeepGNN + DANN
  • @reppic 的邻域注意力架构模型
  • @takadaat 的 AE 预训练 Transformer 模型
  • @mrkmakr 的 AE 预训练 GraphTransformer

我们还结合了不同的架构(例如 MPNN + BERT-Encoder)。
在最终提交中,我们使用了 67 个模型。

特征

  • bpps sum/max/nb
  • 使用 ViennaRNA 采样的附加结构/环类型
  • 带有概率的附加结构/环类型的加权独热编码
  • 此处 提出的位置香农熵

训练策略

  • 结合 Kmeans 的 GroupKFold
  • 加权 MCRMSE 损失,权重使用 np.log1p(1/error)
  • 使用 SN_filter=1 的数据进行验证

堆叠与融合

我们准备了 NN*7, LGB*1, XGB*1, CAT*1 的堆叠预测,并使用 sp.optimize.minimize 对它们进行融合以获得最终预测。这比简单的模型融合 CV 分数要低,但在 LB(Leaderboard)上表现更好,因为如果简单地融合模型,会导致某些模型的权重为零,从而失去多样性。因此,我们决定准备一些堆叠模型并进行融合以保持多样性。

域对抗神经网络 (DANN)

为了适应训练数据集和测试数据集之间的差异,我们提出了一种策略来拉近特征分布。如果训练集和测试集遵循相同的 y(reactivity, deg_Mg_pH10, deg_Mg_50C…)生成规则,并且不相关的元素(例如序列长度)导致分布发生变化,这种方法就会奏效。为此,我们使用了域对抗神经网络 [1],它试图通过对抗训练来学习对训练/测试差异不变的表示,从而最小化原始任务的损失。
大多数技术细节与论文相同:以下是我们实现中的不同之处:

  • lambda 参数的指数预热
  • 两个域分类器:训练/公开集域分类器 + 训练/私集域分类器

我们在用于堆叠的一些模型中使用了此方法,也用于 NN 堆叠。我们的第二次提交是 NN stacking + DANN。然而,事实证明这对 CV/公开榜/私榜都没有产生积极影响。

[1]: Ganin, Yaroslav, et al. "Domain-adversarial training of neural networks." The Journal of Machine Learning Research 17.1 (2016): 2096-2030.

未起作用的方法

  • 数据增强
  • 蒸馏
  • 伪标签
同比赛其他方案