第11名解决方案:使用MFE距离嵌入的Transformer(含代码)
第11名解决方案:使用MFE距离嵌入的Transformer(含代码)
我非常感谢主办方组织这次比赛所付出的努力。这是一个充满挑战和乐趣的陌生领域。我想知道主办方最终是否觉得这次比赛值得举办。希望Kagglers们分享的解决方案能对您和其他研究人员有所帮助。
以下是我的解决方案的简要总结:
特征工程
- Eternafold MFE和BPPs:我尝试了其他软件包(RNAstructure、Vienna、CONTRAfold、rnasoft、ipknot)。发现只有Eternafold的特征对我的模型有显著贡献。
- CapR结构:这显著加快了模型的收敛速度。
- bpRNA结构:我不确定它对最终分数的具体贡献。
模型架构
我基于Huggingface的BERT进行了修改并实现了以下改进:
- 注意力注入支持:我将BPPs与2D CNN结合,添加到16个注意力头中的8个。最有效的方案是为每个注意力头设置单独的CNN层。但这显著增加了训练时间而分数提升有限。为了加速实验过程,我牺牲了少量分数。最终集成的模型大多每个Transformer块只使用一个2D CNN层。
- Transformer层间的1D CNN层:添加此层基于核苷酸位置相近会相互影响的原理,CNN能有效提取这些局部特征。
- 相对位置嵌入:模型中仅使用相对嵌入。这既是因为训练/测试序列长度差异的安全考虑,更重要的是在RNA结构背景下相对嵌入比绝对嵌入更直观。我使用了两种距离类型:
- 沿核糖-磷酸骨架链的最短距离
- 沿MFE结构的最短距离
- 下图示例来自此笔记本:标记的C和G位于RNA链两端,但实际上通过碱基配对连接,在折叠结构中的距离仅为1。

性能表现
单个模型在公开排行榜上的分数约为0.1432。通过集成多个微小变体的模型,最终得分降至0.14以下。
代码已发布于:https://github.com/chubasik/stanford-ribonanza-rna-folding
P.S: 我第二次发布此帖才成功标记为解决方案总结