返回列表

19th Solution

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

开始: 2023-09-07 结束: 2023-12-07 基因组学与生物信息 数据算法赛
第19名解决方案 - tereka
作者:tereka (Kaggle Grandmaster)
发布日期:2023年12月8日
投票数:17
竞赛排名:第19名

第19名解决方案

感谢主办方!这是一场非常有趣的比赛。
我在此分享我的解决方案。

TL;DR

  1. 卷积 + Transformer + LSTM 架构
  2. 伪标签
  3. 加权平均

重点是,我在训练过程中使用了测试数据,以增强对私有数据的鲁棒性。

解决方案

架构

基本架构

  1. 卷积 + Transformer + LSTM
  2. 卷积 + LSTM + 图注意力

训练策略

  1. MLM(掩码语言模型)
  2. 训练
  3. 伪标签

MLM

我首先使用了预训练的掩码语言模型(Masked RNA Model?)。
有时会删除部分 RNA 序列(比例为 0.3),然后预测被删除的序列。

训练

特征

  1. 序列
  2. 预测的环结构(eternafold/contrafold_2/vienna_2)
  3. 结构(eternafold/contrafold_2/vienna_2)

我对 2/3 的特征使用独热编码,同时将概率表示为(eternafold: '(', contrafold_2: '(', vienna_2: ')')→('(':0.66,')':0.33)。

训练策略

训练过程非常简单:

  1. 使用过滤后的数据集
  2. 加权损失(序列)
  3. 移除部分序列(结构/预测的环)

伪标签

私有数据集比公开数据集更长。我决定从测试数据中获取鲁棒性。
但由于这是一个回归问题,我无法获得置信度。
因此,我先进行预训练,然后仅使用训练数据集进行训练。

我采用了迭代的伪标签方法。
几步之后,我会重新标记有噪声的训练数据(称为 filter0),并与伪标签数据一起训练这一过程。

Public 分数:0.141 → 0.139 → 0.1384 → 0.1383

集成

使用加权平均。
我只查看了公开数据集的分数,因为在使用伪标签时我不相信交叉验证的分数。

注意

我忘记交换旧数据集和新数据集了……这非常重要……(单个模型在私有数据集上达到了 0.143 的分数……)

同比赛其他方案