返回列表

8th place solution (KF Part)

587. Stanford Ribonanza RNA Folding | stanford-ribonanza-rna-folding

开始: 2023-09-07 结束: 2023-12-07 基因组学与生物信息 数据算法赛
8th place solution (KF Part) - Kaggle竞赛解决方案分享

首先,我要感谢竞赛主办方出色的组织工作,他们创造了一个充满挑战且富有成效的环境。主办方对促进学习和创新空间的投入令人深表赞赏。我也向我的队友@onodera@christofhenkel表达深深的感激,他们在本项目中的协作、专业知识和坚定承诺是无价之宝。

在此,我将总结我们解决方案的一些要点。

队友的解决方案

CV策略:GroupKFold

在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

参考文献

同比赛其他方案