返回列表

2nd place solution - Squeezeformer + BPP Conv2D Attention

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

开始: 2023-09-07 结束: 2023-12-07 基因组学与生物信息 数据算法赛
2nd place solution - Squeezeformer + BPP Conv2D Attention

感谢Kaggle和主办方组织这次比赛。这次比赛真的非常鼓舞人心且具有挑战性,我从中学到了很多。👍

代码: https://github.com/hoyso48/Stanford---Ribonanza-RNA-Folding-2nd-place-solution

TLDR

关键点:

  • Squeezeformer[1] + GRU 头部
  • 简单的BPP Conv2D网络,将其作为偏置添加到注意力矩阵中
  • ALiBi位置编码[2],用于在更长序列上实现鲁棒的泛化
  • 使用signal_to_noise加权损失,并延长训练轮次
  • 一些额外特征用于微小分数提升

我采用了Squeezeformer,这是我在ASL手语拼写比赛后熟悉起来的架构。感谢@christofhenkel@goldenlock在上一届ASL比赛中的解决方案。我解决方案中最关键的部分是如何利用BPP矩阵。我应用了一个简单的浅层Conv2D网络处理BPP,并直接将其添加到注意力矩阵中。

特征:

我使用了一些在OpenVaccine挑战赛中发现有用的特征,以帮助快速初始收敛。这些包括:

  • CapR loop类型
  • eternafold最小自由能(mfe)
  • 使用eternafold mfe预测的Loop类型
  • BPP特征(求和、非零值数量、最大值)

然而,与OpenVaccine挑战赛不同,这些特征仅带来微小的帮助(约-0.0005)。因此,我认为未来应该为了简化而移除这些特征。

模型

Squeezeformer编码器:

我选择了Squeezeformer并进行了一些小修改(在conv1d后添加BN,在FFN中使用SwiGLU等),它混合了Conv1D块与Transformer。虽然我尝试了其他最近的Conv-Transformer混合架构,但Squeezeformer是最有效的。与Vanilla Transformer相比,Squeezeformer在训练早期就表现出强劲性能,并持续显示更快的收敛速度。

模型使用的参数如下:dim=192,num_heads=4,kernel_size=17,num_layers=12。

GRU头部:

在编码器后添加一个GRU层带来了微小的改进。

ALiBi位置编码:

我采用了AliBi位置编码,因为它声称比其他方法在长序列上泛化得更好。

BPP作为注意力偏置:

BPP矩阵(仅使用提供的)在经过每个头预定义缩放后作为偏置添加到注意力矩阵中,显著提升了性能(约-0.0025)。

BPP 2DConvNet:

直接使用BPP作为注意力偏置是一个好的开始,但我感觉它需要更多灵活性(我觉得它太稀疏了)。在各种选项中,在BPP矩阵上添加2D CNN被证明非常有用(-0.002)。然而,多个2D CNN应用于BPP矩阵(通常是206 x 206)在训练/推理时间方面效率低下。因此,我只使用了一个简单的2层2DCNN,输出矩阵在所有Transformer块层之间共享。

训练

  • 轮次: 200
  • 批大小: 256
  • 学习率: 2e-3,使用余弦衰减和预热
  • 优化器: AdamW,权重衰减 = 0.01
  • 损失: 加权MAE(权重 = log1p(signal_to_noise).clip(0,10))

单模型CV(K折,k=5)得分为0.119,公共LB为0.140,私有LB为0.142。在不同种子集成后,我得到公共LB 0.135和私有LB 0.140。
虽然某些提交的CV/LB之间存在一些值得怀疑的相关性,但总体而言,它们与CV有很好的一致性。
使用上述设置,在单个RTX 4090上训练单个模型大约需要30小时。

丢弃的想法与思路:

  • 自监督学习(SSL): 最初我很有动力参加这场比赛,因为如果能成功应用任何SSL方法而无需除序列外的任何特征,那将非常棒。Data2Vec和类BERT SSL方法的初步试验显示出改进的不一致性。由于需要额外的训练时间,我没有进一步考虑SSL。然而,我相信这个想法仍然具有巨大潜力。
  • 大模型: 尝试使用适当正则化训练更大模型(dim > 512)未获成功。我认为这以及SSL的失败表明主要挑战在于训练数据集固有的噪声。
  • 增强: 我尝试的大多数增强方法都没有效果。
  • 伪标签: 虽然伪标签可能有助于LB,但在我案例中没有改善CV,因此出于安全和训练时间考虑我没有使用它。然而,在看到公共和私有LB之间的相关性后,我认为它可能在公共和私有LB中都略有裨益。

对我来说,这场比赛是关于是否在仅剩2-3周时实验或采用某些有希望想法的一系列选择。一些我认为可能有帮助的想法被放弃了,没有进一步考虑,因为它们需要更多实现和训练时间。我认为这种策略可能使我的解决方案有些次优或冗余,但总体而言,我看到它相当有效,因为我的解决方案似乎捕捉到了其他团队解决方案的大部分关键方面。

参考文献

[1]Sehoon Kim, Amir Gholami, Albert Shaw, Nicholas Lee, Karttikeya Mangalam, Jitendra Malik, Michael W. Mahoney, and Kurt Keutzer. 2022. Squeezeformer: An Efficient Transformer for Automatic Speech Recognition. arXiv:2206.00888 [eess.AS]. https://doi.org/10.48550/arXiv.2206.00888

[2]Ofir Press, Noah A. Smith, Mike Lewis. 2022. Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation. arXiv:2108.12409 [cs.CL]. https://doi.org/10.48550/arXiv.2108.12409

同比赛其他方案