669. Stanford RNA 3D Folding | stanford-rna-3d-folding
首先,我从未想过我们能取得如此优异的成绩,最终获得了第 5 名。
我要感谢 hengck23 在整个比赛期间的出色讨论,感谢 lihaoweicvch 分享他的微调代码,以及所有在讨论区分享见解的人。最重要的是,我要感谢主办方和 Kaggle 为我们提供了这场精彩的竞赛。
所有提交的模型都是 Protenix 微调模型的集成。
微调主要沿两条主线进行:
使用的数据
使用 train_sequences.csv 和 train_sequences.v2.csv 中包含多序列比对 (MSA) 的数据及其标签数据。
支持 RNA-MSA 的微调
我们微调了 Protenix 模型 [2] 的一个分支版本,修改后使其能够接受多序列比对 (MSA) 作为输入。
截止日期过滤
我们应用了两个截止日期来整理训练数据并减少潜在的数据泄露:
2021-09-30:根据其技术文档 [1],过滤掉可能包含在 Protenix 原始预训练中的任何数据。
2024-05-16:遵循主办方指导 [3],确保仅使用排除在公共排行榜之外的数据。
基于序列长度的划分
训练数据按序列长度划分为组,以便为每组进行更稳定和定制化的模型训练。
课程式微调
我们采用了逐步微调策略,首先在较短的序列上进行训练,然后逐步过渡到较长的序列。

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

序列长度间隙模式学习
将数据分割成序列长度区间后,我们为每个区间训练了一个专用模型(例如 0–300, 300–500, 500–700 等),以便每个模型专注于其分配的 range。
按序列范围分配专用模型
我们为不同的序列长度区间训练了单独的模型(例如 0–300, 300–500, 500+),在推理时,使用专门针对每个输入长度类别的模型进行预测。
基于公共排行榜性能的集成加权
我们发现训练于 208–300 区间的模型在公共排行榜上表现特别好。在推理期间,我们在这个强模型和分配给每个序列长度区间的模型之间进行了 2:3 的加权集成。
[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