第四名解决方案
作者: tattaka, monnu, yu4u |
发布日期: 2023-12-08 |
排名: 第4名 |
成就: 竞赛特级大师
首先,非常感谢Kaggle团队和主办方提供了这场有趣的比赛。
tattaka 和 monnu 通过这一成绩完成了他们成为竞赛特级大师的旅程。
总结
- 多种模型集成
- Shujun提出的改进版RNAdegformer
- 一维卷积与残差BPP注意力
- 带有BPP注意力偏置的Transformer
- 由eternafold生成的bp_matrix(部分使用contrafold)
- 直到比赛进行到一半我才意识到这个数据已经被提供了。
- 使用更高信噪比阈值的微调
- 使用反应性误差预测的伪标签
改进版RNAdegformer
代码: https://github.com/tattaka/stanford-ribonanza-rna-folding-public
输入
- 序列
- BPP矩阵(由EternaFold和Contrafold生成)
架构

对RNAdegformer(https://github.com/Shujun-He/RNAdegformer)做了一些修改,包括调整了层顺序。
- 除最后一个transformer的kernel_size为1外,其余均为7
- 后归一化
- GLU系列激活函数
- ALiBi位置编码与bp_matrix分开应用于不同的注意力头
- 其他微小修改的集成
| 模型名称 |
伪标签误差预测 |
使用伪标签 |
前馈激活函数 |
归一化层 |
Conv1D添加归一化和激活 |
使用contrafold(第二BPP) |
连接注意力权重到BPP偏置 |
交叉验证 |
| exp064 |
是 |
否 |
SwiGLU |
Layernorm |
否 |
否 |
否 |
0.12087 |
| exp070 |
否 |
exp064 |
SwiGLU |
RMSnorm |
是 |
否 |
否 |
0.1199 / 极小: 0.12143 |
| exp071 |
是 |
否 |
GeGLU |
RMSnorm |
是 |
是 |
否 |
0.12146 |
| exp072 |
否 |
exp064 + exp071 |
GeGLU |
RMSnorm |
是 |
否 |
是 |
0.11976 |
训练
- 简单k折交叉验证(k=5)
- 第一阶段:首先使用信噪比>0.5的数据训练(300轮)
- 第二阶段:然后使用信噪比>1.0的数据微调少量轮次(15轮)
- 当仅使用训练数据集时,除了反应性外,还输出每个核苷酸的误差
- 对于伪标签,第一阶段使用预测信噪比>0.75,第二阶段使用预测信噪比>1.0,且仅使用future=1的数据
- 学习率=1e-3,批次大小=256,AdamW优化器(eps=1e-6),第一阶段使用预热
单模型得分
最佳模型: exp072
- 交叉验证(k折):0.11976
- 公开榜得分:0.13681
- 私有榜得分:0.14124
一维卷积与残差BPP注意力
代码: https://github.com/fuumin621/stanford-ribonanza-rna-folding-4th
基于nyanp提出的一维卷积+BPP注意力架构,我们进行了改进。
架构
- 序列嵌入
- 一维卷积
- SE残差与残差BPP注意力 × 12层
- 使用BPP作为注意力权重
- 随着层深度增加,减少一维卷积的核大小
- 双向LSTM × 2层
- 线性层
输入
参数
- Dropout率: 0.1
- 维度: 256
- 核大小: 9, 7, 5, 3(随层深度增加而减小)
- 学习率: 4e-3,使用余弦调度器
- 批次大小: 64
训练
训练策略基本采用与上述改进版RNAdegformer相同的方法。
单模型得分
- 交叉验证(k折):0.12161
- 公开榜得分:0.13889
- 私有榜得分:0.1425
未生效的方法
- 除EternaFold外的BPP包(contrafold_2)
- 距离矩阵
- 结构信息
- BPP特征工程(最大值、求和、nb_count)
- 基于信噪比的样本权重
- 等等...
带有BPP注意力偏置的Transformer(@ren4yu的部分)
代码: https://github.com/yu4u/kaggle-stanford-ribonanza-rna-folding-4th-place-solution

该模型借鉴了RNAdegformer的BPP注意力偏置思想,但更接近原始Transformer架构。
未使用位置嵌入,而是在FFN中使用Conv1D来提供相对位置信息。
训练过程
- 使用AdamW优化器,学习率从2e-3降至2e-4,批次大小128,信噪比过滤阈值=0.5
- 使用AdamW优化器微调,学习率从2e-4降至0,批次大小256,信噪比过滤阈值=1.0
单模型得分
- 交叉验证(k折):0.12188
- 公开榜得分:0.13948
- 私有榜得分:0.14267
对我无效的方法