返回列表

19th Solution: Pseudo label and PP

485. NBME - Score Clinical Patient Notes | nbme-score-clinical-patient-notes

开始: 2022-02-01 结束: 2022-05-03 临床决策支持 数据算法赛
第19名方案:伪标签与后处理

第19名方案:伪标签与后处理

作者: mrt💪🥺, YYama, Naoism, MST
比赛排名: 第19名

我要感谢主办方和Kaggle组织了这场精彩的比赛!
感谢所有参与者提供的有用代码和有趣的讨论!
同时也要感谢我所有优秀的队友(@naoism, @yosukeyama, @mst8823)!

概要

5个模型的集成。进行了一些后处理。
CV:0.8971,Private LB:0.892

MLM 预训练

精度提高了约0.002。

  • mlm_probability=0.15。使用了所有无标签数据。

模型

三个 deberta-v3-large,一个 deberta-v2-xlarge,一个 deberta-v1-large。
所有模型的损失函数均为 BCEwithLogitsLoss(我们尝试了 jaccard 和 KLD,但 bce 的 CV 表现最好)。

  • 模型1:

    • deberta-v3-large
    • CV:0.8875,Private LB:0.889
    • 包含类似此讨论中提到的 /n 字符
  • 模型2:

    • deberta-v3-large
    • CV:0.8957,Private LB:0.890
    • 包含 '/n' 字符
    • AWP (对抗权重扰动)
    • Mask 增强:prob=0.8,ratio=0.03
    • 伪标签
      • 使用从无标签数据生成的伪标签进行预训练。使用从有标签数据生成的伪标签进行微调。
  • 模型3:

    • deberta-v3-large
    • CV:0.890,Private LB:-
    • AWP
    • Mask 增强:prob=1.0,ratio=0.2
    • Multi sample dropout
    • 伪标签(软伪标签)
      • 保留有标签数据,同时从无标签数据中随机抽取 11,000 个样本进行训练。
  • 模型4:

    • deberta v2 xlarge
    • CV:0.882,Private LB:-
    • 无 MLM。
    • 使用 BNB (Bits and Bytes) 来增加 batch size,因为小 batch size 很难收敛。
  • 模型5:

    • deberta v1 large
    • CV:0.8934,Private LB:0.891
    • Multi sample dropout
    • 伪标签
      • 使用伪标签和有标签(训练)数据进行预训练。仅使用有标签数据进行微调。

伪标签

@naoism 实现了这一部分,非常感谢。
只有模型3使用了单个模型的推理结果。
其他模型使用了三个在没有伪标签的情况下 CV 表现良好的模型的集成结果。

集成

  • 字符概率级别的集成。对每个模型的 5 折集成结果进行再次集成。
  • 阈值使用 CV 最佳的值。
  • 结合使用和未使用伪标签的模型可以提高精度。

后处理

  • 如果单词前没有紧跟空格(例如 "hello),由于 offset mapping 问题,推理位置会发生偏移。在这种情况下,我们将推理的起始位置修正一位。
  • 同样,将从 1 开始的推理修正为从 0 开始。
  • 对连续空格的修正。
同比赛其他方案