587. Stanford Ribonanza RNA Folding | stanford-ribonanza-rna-folding
首先,我要感谢竞赛主办方出色的组织工作,他们创造了一个充满挑战且富有成效的环境。主办方对促进学习和创新空间的投入令人深表赞赏。我也向我的队友@onodera和@christofhenkel表达深深的感激,他们在本项目中的协作、专业知识和坚定承诺是无价之宝。
在此,我将总结我们解决方案的一些要点。
在RNA二级结构预测领域,包括Sato等人(2023)在内的多项研究已经指出,使用随机分割进行评估是不恰当的。这源于RNA实验数据中"家族"的概念——具有特定功能或结构的RNA分子群组,导致同一家族内结构高度相似。例如,Fu等人(2022)指出,E2EFold模型因这个问题而被高估。
为了解决此问题,我们采用基于RNA序列编辑距离的聚类方法,使用聚类ID进行GroupKFold分组。此外,我们将所有有限的seqlen=206样本聚合到fold=0中。这一策略使得我们能够持续评估模型在更长序列上的表现。

在我的模型中,我尝试交替使用RMDB数据集和竞赛数据集进行训练。采用这种方法是为了增强模型处理更长RNA序列的能力,这是RNA二级结构预测中的关键方面。
我们使用'arnie'包处理输入序列,主要利用eternafold、rnasoft和rnastructure。模型输入包括structure和loop_type的嵌入层,以及bpp(碱基对概率)的图神经网络(GNN)邻接矩阵。
然而,bpp单独表示碱基对形成概率,与CNN结合时需要多层才能查看整个图。作为使用Transformer获取全局视图的替代方案,我们采用了"structure"(因命名冲突重命名为'chunk')和"segment",其定义来自bpRNA [Danaee等人,2018]。

我的架构受到LegNet(来自@dmitrypenzar1996)和OpenVaccine第6名解决方案 [nyanp]的启发。它仅由CNN和GNN层组成。由于bpp、structure、chunk和segment的邻接矩阵差异显著,我为每种类型准备了独立的CNN+GNN模块。分组卷积和einsum操作实现了这一架构而无需for循环。
根据LegNet的设计,预测头输出100维向量而非1维标量,通过对分箱值加权求和得到最终输出。这种方法通过控制回归任务中的输出范围来稳定学习过程。

我们选择以信噪比为权重的MAE + MSE组合作为优化函数。MSE在训练初期提供与MAE相似的梯度,但在后期趋近于零,有助于模型收敛。
我们使用与队友@onodera和@christofhenkel协作创建的测试集预测结果进行伪标签训练。
| 名称 | CV | CV (seqlen=206) | Public LB | Private LB |
|---|---|---|---|---|
| single best (scratch training) | 0.1336 | 0.1133 | 0.14012 | 0.14299 |
| single best (+pseudo label 1st) | 0.1313 | 0.1152 | 0.13828 | 0.14222 |
| single best (+pseudo label 2nd) | 0.1306 | 0.1221 | 0.13739 | 0.14186 |
| blending w/ all models | 0.127645 | 0.109341 | 0.13626 | 0.14263 |