587. Stanford Ribonanza RNA Folding | stanford-ribonanza-rna-folding
最初我并不打算公布我的解决方案,因为我使用了一种有趣的损失函数方法(在其他解决方案中没有看到,虽然可能遗漏了),而且由于我没有在价格范围内完成,我想把它留到未来其他兼容的比赛。然而,由于主办方显然有发表论文的计划,我最终决定将其公布。
业务背景:Stanford Ribonanza RNA Folding竞赛
数据背景:竞赛数据集
我使用了1D卷积+Transformer模型。该模型不包含位置编码,因为卷积层能够"自动"处理位置关系,从而更直接地泛化到更长的序列。我的模型基于@hoyso48在ISLR竞赛中的先前工作;参见他的2nd place解决方案。顺便祝贺他获得第二名。你知道吗,Hoyeol(Hoiso) probably 是我从他的工作中学到最多的人。这个解决方案已经是我获得的第二个金牌,感谢我从他的工作中学到的知识。所以,这是特别的感谢。
Hoiso的原始模型在时间上是因果的;我通过采用适当的填充和掩码将其改为对两侧对称。
我训练了两种模型:model_1仅基于序列训练,model_2包含CapR和每个核苷酸的bpp sum&max。
对我有帮助的要点(我没有进行适当的消融研究,所以大多数时候不会给出确切数字):
集成(显然):
这是一个很好的集成力量图(针对仅序列模型model_1)
集成bpp+CapR模型与仅序列模型:
我非常信任我的仅序列模型,胜过信任+bpp&CapR的模型,所以我提交了一个纯仅序列模型的集成。我计划另一个集成只包含+bpp&CapR模型。但就在最后一天,当我准备好两个集成时,我再次查看了R1138v1预测结果的图片。基本上,我们希望模型复制以下图像:
这是我仅序列模型集成的图片:
有点难看清,但它恢复了中心线,特别是在2A3图中。然而,侧线缺失了。另一方面,对于+bpp&CapR模型集成:
情况正好相反。我有侧线的可见痕迹,但中心线几乎什么都没有(可能是一个非常模糊的点)。
这些图像带来了一个直接的想法……更多集成……(起初这并不明显,因为BPP&CapR模型/集成比仅序列模型的验证/公共分数高得多)
我只剩下三次提交机会。我尝试了以下权重:6:2、5:3和4:4,偏向仅序列集成。4:4的分数更好,但我太怀疑bpp和CapR了,所以我选择了5:3权重,这与原始的只有bpp+CapR集成分数相似,但预计会更稳健。
比赛结束后,我尝试了其他权重。这是完整的分析:
即使我选择了最佳权重,我仍然会在价格范围之外。所以我并不太为自己错过而感到难过。不过,如果我在最后一天选择了4:4权重,我本可以排在第8位。请记住,我的解决方案不包含BPPs的边缘信息,与大多数(全部?)其他顶级解决方案不同。也许,除了第三名,他得到了一个非常强大的仅序列解决方案,比我的好得多。
使用外部数据源作为损失的另一个头,使用外部数据源训练模型,在训练集上预测,并将预测用作特征,不同的bpps预测(eterna, contra等)贡献不大或根本没有贡献。结构(即(.)表示法)也没有特别有用。我计划了3D特征但没有足够的时间……我尝试了其他损失方案,例如最小化log损失(sigmoid)(即框架化为逻辑回归,因为值在[0,1]之间)或直接最小化"势能"(见#5.加权损失函数)——没有成功。我尝试了各种将bpp直接注入注意力的方案,有或没有2D卷积,它确实有帮助(至少验证集+0.001,如果提交可能会更多),但如前所述,我不信任bpps和公共LB。
在实验过程中,我在长度为177的序列的中间反应性上训练(在核苷酸#36和#116之间,因为我们被告知私有集可能包含边缘核苷酸的数据)。我在长度为206的序列以及177长度序列的开始/结束(直到#36核苷酸和从#116开始)上进行验证。对于提交,我在所有大小的序列上训练,包括边缘反应性,并在我没有用于训练特定模型的随机部分序列上验证每个模型。
我的损失函数和与仅序列模型的集成可能有机会略微提高顶级模型/集成的分数。然而,我不会给太大机会,因为他们的分数远高于我,他们可能已经捕获了大部分可以捕获的内容。即便如此,我认为当我们有更多数据时(私有测试是100万新序列,有关于生产十倍更多数据的讨论),bpps和CapR方法将越来越无用,而从测量中挤出更多数据(正如我试图用我的损失函数做的)将变得比现在更有用。所以我仍然希望我的工作会有一些帮助。
我的模型基于Hoyso的ISLR竞赛解决方案;参见他的讨论。
我使用ratthachat的notebook来计算CapR值。
请查看我的GitHub获取数据准备和训练代码。