返回列表

5th Place Solution

669. Stanford RNA 3D Folding | stanford-rna-3d-folding

开始: 2025-02-27 结束: 2025-09-24 基因组学与生物信息 数据算法赛
Stanford RNA 3D Folding 第五名解决方案
竞赛: Stanford RNA 3D Folding
排名: 第 5 名
作者: koooeo, Shun Kuraishi
发布日期: 2025 年 9 月 29 日

Stanford RNA 3D 折叠竞赛第五名解决方案

首先,我从未想过我们能取得如此优异的成绩,最终获得了第 5 名。

我要感谢 hengck23 在整个比赛期间的出色讨论,感谢 lihaoweicvch 分享他的微调代码,以及所有在讨论区分享见解的人。最重要的是,我要感谢主办方和 Kaggle 为我们提供了这场精彩的竞赛。

背景

方法概述

所有提交的模型都是 Protenix 微调模型的集成。
微调主要沿两条主线进行:

  1. 基于 Protenix 技术报告 [1] 的课程学习。
  2. 使用聚类 RNA 进行微调。

详细方案

  • 使用的数据
    使用 train_sequences.csv 和 train_sequences.v2.csv 中包含多序列比对 (MSA) 的数据及其标签数据。

  • 支持 RNA-MSA 的微调
    我们微调了 Protenix 模型 [2] 的一个分支版本,修改后使其能够接受多序列比对 (MSA) 作为输入。

  • 截止日期过滤
    我们应用了两个截止日期来整理训练数据并减少潜在的数据泄露:
    2021-09-30:根据其技术文档 [1],过滤掉可能包含在 Protenix 原始预训练中的任何数据。
    2024-05-16:遵循主办方指导 [3],确保仅使用排除在公共排行榜之外的数据。

koooeo 部分

  • 基于序列长度的划分
    训练数据按序列长度划分为组,以便为每组进行更稳定和定制化的模型训练。

  • 课程式微调
    我们采用了逐步微调策略,首先在较短的序列上进行训练,然后逐步过渡到较长的序列。
    课程式微调示意图

Shun Kuraishi 部分

  • 聚类与代表性微调
    为了提高训练效率和结构多样性,我们根据序列和结构特征将训练数据聚类为 18 组。从每个聚类中,我们选择了 2-4 个代表性序列进行进一步微调。
    聚类示意图

  • 序列长度间隙模式学习
    将数据分割成序列长度区间后,我们为每个区间训练了一个专用模型(例如 0–300, 300–500, 500–700 等),以便每个模型专注于其分配的 range。

  • 按序列范围分配专用模型
    我们为不同的序列长度区间训练了单独的模型(例如 0–300, 300–500, 500+),在推理时,使用专门针对每个输入长度类别的模型进行预测。

  • 基于公共排行榜性能的集成加权
    我们发现训练于 208–300 区间的模型在公共排行榜上表现特别好。在推理期间,我们在这个强模型和分配给每个序列长度区间的模型之间进行了 2:3 的加权集成。

成功之处

  • 我们认为,仅仅将带有 MSA 的数据直接传入模型并没有提高性能,但按序列长度和聚类划分数据可能实现了更有效的训练。通过缩小数据范围,我们认为这可能有助于纠正序列长度和聚类分布中的偏差。

不足之处

  • 我们未能找到一种方法从多个模型的输出中选择最佳结构。
    最终,我们采用了一种方法,将不同模型的输出分配给每个目标的五个预测。
  • 我们无法成功评估哪个模型是最优的。
    虽然我们使用未用于训练的数据评估了模型性能,但我们发现这些本地分数与公共排行榜分数之间没有相关性。同样,公共排行榜分数与本地分数之间也没有相关性。我很好奇其他人是如何评估他们的模型的。

来源

[1] https://github.com/bytedance/Protenix/blob/main/Protenix_Technical_Report.pdf
[2] https://www.kaggle.com/competitions/stanford-rna-3d-folding/discussion/573495
[3] https://www.kaggle.com/competitions/stanford-rna-3d-folding/discussion/572096#3173463

同比赛其他方案