返回列表

11th Place Writeup - Transformers and Pseudo Label

462. Google Brain - Ventilator Pressure Prediction | ventilator-pressure-prediction

开始: 2021-09-22 结束: 2021-11-03 临床决策支持 数据算法赛
第11名方案分享 - Transformers与伪标签

第11名方案分享 - Transformers与伪标签

作者: TW (MASTER) & Patrick Yam (GRANDMASTER)
比赛排名: 第11名

感谢Kaggle和Google Brain团队组织了这场有趣的比赛。祝贺所有顶尖团队,并感谢大家的辛勤付出。希望我们在比赛过程中都学到了很多并享受其中。

起初,我打算独自参加这次比赛。然而顶尖队伍的实力非常强劲,为了保持在金牌区,我最终选择与我的队友 @wimwim 合并。非常感谢他的杰出贡献,让我们取得了最终的成绩。

摘要

以下是我们方法的总结:

  1. 回归: 混合模型与解耦自注意力
  2. 分类: Conformer 与基于时间相对距离的自定义注意力
  3. 伪标签: 基于集成模型生成

回归部分

这是我在队伍合并前的方案,经过适当的集成后,Public LB得分为0.1160。

模型

首先,我将特征分为 u_in 特征、时间特征和 RC 特征。模型的核心由4-6个混合层组成。每个混合层包含以下组件:

[u_in 特征, RC 特征] -> Conv1d -> 信号隐藏单元
信号隐藏单元; 时间嵌入 -> 带有解耦自注意力的Transformer -> LSTM

解耦自注意力的实现参考了NLP中的DeBERTa模型,只是将位置嵌入替换为了时间步嵌入。
https://arxiv.org/abs/2006.03654

损失函数与优化

  • 损失函数: 针对 u_out == 0u_out == 1 的多任务MAE。
  • 优化器: AdamP,初始学习率为 2e-4。
    https://arxiv.org/abs/2006.08217
  • 调度器: StepLR,每5个epoch衰减0.95。

一些有用的思路

利用现有模型在测试数据上生成伪标签非常有用。我还发现,为真实标签和伪标签预测分别使用分离的输出层甚至Transformer头,有助于模型的多样化。

分类部分

这是 @wimwim 在队伍合并前的主要思路,经过适当的集成后,Public LB得分为0.1167。

模型

拼接所有特征并输入到4层Conformer层中。Conformer的实现参考了以下论文。
https://arxiv.org/abs/2005.08100

对于带有相对距离的自定义注意力,他利用时间步差构建相对距离,并将其加到注意力矩阵中。

损失函数与优化

  • 损失函数: 针对离散压力值的二元交叉熵,不拟合 u_out == 1 的部分。
  • 优化器: Ranger,初始学习率为 5e-3。
  • 调度器: 前100个epoch使用CosineAnnealingLR,之后切换为ReduceLROnPlateau。

一些有用的思路

他发现不同RC组合的行为差异很大。因此,最自然的解决方案之一是在利用所有数据获得通用模型后,针对不同的RC进行微调。这通常可以使Public LB分数提高0.002。

基于集成模型的伪标签

令人惊讶的是,简单混合我们最好的提交结果带来了Public LB分数的显著提升,达到了0.1112。这可能归功于使用了多样化模型的回归与分类方法的融合

为了获得进一步的提升,我们基于0.1112的提交结果对测试数据进行伪标签处理,并重新训练模型,尝试将各自的技巧交叉应用到对方的模型中。有趣的是,许多技巧在应用到另一个模型时并不起作用,除了前面提到的微调和分离输出层。最后,我们将新旧模型全部组合在一起,最终达到了0.1074的Public LB分数。

同比赛其他方案