返回列表

22nd Place Solution

519. Feedback Prize - English Language Learning | feedback-prize-english-language-learning

开始: 2022-08-30 结束: 2022-11-29 智能评测 数据算法赛
第22名解决方案

第22名解决方案

作者:moritake04 | 排名:第22名

首先,我要感谢竞赛主办方组织了这次比赛,也要感谢各位参赛者。作为一个NLP竞赛和Kaggle的新手,大家的代码和讨论对我帮助很大。幸运的是,我获得了我的第一枚奖牌。

概览

我对以下几类模型进行了加权平均集成:“在Feedback3数据上训练的模型” + “在Feedback1伪标签数据和Feedback3数据混合集上训练的模型” + “使用我微调后的模型嵌入训练的Rapids SVR模型” + “使用Hugging Face预训练模型嵌入训练的Rapids SVR模型”。

CV策略使用了 K=5 的 MultiLabelStratifiedKFold。
顺便提一下,根据讨论区(见:https://www.kaggle.com/competitions/feedback-prize-english-language-learning/discussion/368437) 的说法,我对 MultiLabelStratifiedKFold 的使用存在bug,但CV和LB之间的相关性很好。

有效的方法

采取了好几个步骤来改进模型,具体解释如下。

步骤 1. 训练一个好的单模型 [中等影响]

首先我尝试开发一个好的单模型。经过手动调参,以下配置效果不错。

  • Epoch:
    • base 模型:4
    • large, xlarge 模型:2
  • 学习率:
    • base 模型:编码器 -> 1e-5, 解码器 -> 1e-4
    • large, xlarge 模型:编码器 -> 1e-5, 解码器 -> 1e-5
    • 使用了层级学习率衰减
  • Batch Size:8
  • 初始化最后一层
  • 优化器:AdamW (weight_decay = 1e-2)
  • 调度器:cosine_schedule_with_warmup (warmup_ratio = 0.1, num_cycles = 0.5)
  • 损失函数:SmoothL1Loss
  • Head:Mean Pooling(平均池化)
  • 当使用 xlarge 模型时,冻结一半的层
  • gradient_clip_val = 1.0
  • token length = 512(集成时也试了4096,但512更好)

很多人用单模型达到了 Public 0.43,这也是我的目标,但我没能实现,所以我决定依赖集成。

这一步中最高的 Local CV 是 Deberta-xlarge 的 0.4502(不是 Deberta-v3 系列)。

步骤 2. 伪标签 [高影响]

我用上述配置训练了以下模型,并对这些模型进行加权平均集成,为 feedback prize1 的训练数据和测试数据生成了伪标签。

  • deberta-v3-base (token_length = 512)
  • deberta-v3-base (token_length = 4096)
  • deberta-v3-large (token_length = 512)
  • deberta-v3-large (token_length = 4096)
  • deberta-large (token_length = 512)
  • deberta-xlarge (token_length = 512)
  • muppet-large (token_length = 512)

我小心避免泄露,对5个折中的每一个分别进行标记以生成伪标签。我还移除了 feedback 1 数据和 feedback 3 数据中的重复项。看来在这场比赛中防止这种泄露非常重要。

使用步骤1中开发的预训练模型,我将 feedback 1 的数据与 feedback 3 的数据混合,仅微调了一个 epoch。

这一步中最高的 Local CV 是 Deberta-xlarge 的 0.4472。在这里,单模型的 Public 分数达到了 0.43,而且集成模型的 Public 分数进入了铜牌区。

步骤 3. Rapids SVR [中等影响]

首先,我将 Rapids SVR 应用于步骤2中模型的嵌入,虽然 CV 不太好,但与之前的模型集成时 CV 和 LB 都有所提升,所以我采用了它。

接下来,我将该模型应用于 Hugging Face 上可用的预训练模型。这个模型也被采纳了,因为与之前的模型集成时 CV 和 LB 都有所提升。在这个阶段,集成模型得以进入 Public 银牌区。

步骤 4. 集成
同比赛其他方案