返回列表

[3rd place solution] Blend MLM pretrained DeBERTa & GBM

592. Linking Writing Processes to Writing Quality | linking-writing-processes-to-writing-quality

开始: 2023-10-02 结束: 2024-01-09 智能评测 数据算法赛
第3名解决方案:融合MLM预训练的DeBERTa和GBM

第3名解决方案:融合MLM预训练的DeBERTa和GBM

感谢Kaggle以及所有相关人员组织这场比赛。通过仅分析按键信息就能预测作文得分,这一发现令人非常有趣。特别感谢@kawaiicoderuwu分享的作文构建器,我们的解决方案在此基础上构建。

核心思路

我们的解决方案由两部分融合而成:首先基于常用的作文级特征构建梯度提升树(GBT)集成模型;其次构建DeBERTa模型集成,使用最终作文文本,这些模型在persuade语料库上进行了MLM预训练,其中作文文本已按照比赛训练集的方式进行了模糊化处理。最终以40/60的比例融合GBT集成和DeBERTa集成结果。

交叉验证

我们采用8折交叉验证,CV与LB之间的相关性一般。重要发现是:GBM模型的LB/CV比率明显优于DeBERTa模型。换言之,DeBERTa在CV上表现更好,而GBM在CV上相对较差但在LB上表现良好,这表明LB与训练集之间存在轻微领域偏移。我们推测作文可能是按主题或学生年级划分的。

CV与LB相关性图

数据预处理

与大多数团队类似,我们首先提取每篇作文的最终文本并训练模型进行分析。使用最终模糊化作文文本时,DeBERTa模型表现强劲。通过将模糊化字符`q`替换为`i`或`X`获得了显著提升。因为预训练的DeBERTa在使用`i`或`X`时具有更好的tokenization效果(例如训练数据中存在明确的i, ii, iii或X, XX, XXX等标记),且token化后的序列比使用`q`时更短。基于此逻辑,我们还训练了自定义tokenizer,使用该tokenizer的模型对集成有一定帮助。

模型架构

GBT集成模型

所有GBT模型使用@awqatak公开内核中提供的相同165个特征(再次特别感谢🙏),并训练了类似公开内核的多个模型。

最终组件包括:

  • LGB(参数通过optuna调优)
  • XGB(参数通过optuna调优)
  • CatBoost(来自公开内核的参数)
  • Lightautoml(来自公开内核的参数)
  • 浅层神经网络

DeBERTa集成模型

我们解决方案的核心是基于transformer模型(DeBERTa)的集成,这些模型在重建的作文文本上训练完成。

训练流程:

我们发现在persuade语料库上使用MLM目标进行transformer预训练可显著提升CV和LB表现。为此,需先将persuade语料库中的作文按照比赛训练集的方式模糊化处理。第二步,在这些模型上针对训练数据进行微调,添加光标位置等额外特征,并使用Squeezeformer层提取语义特征。增加更多按键特征并无帮助,且需要对添加的三个特征采用大量dropout/增强策略。

训练流程示意图

最终组件包括:

  • deberta-v3-base(将q替换为i训练)
  • deberta-v3-large(将q替换为i训练,微调时前12层冻结以防止过拟合)
  • deberta-v3-base(将q替换为X训练)
  • deberta-v3-base(使用自定义spm tokenizer训练)

后处理

部分模型的预测值被裁剪在[0.5, 6.0]范围内,但效果并不明显。

集成策略

在DeBERTa集成和GBT集成内部,我们使用正岭回归(Ridge Regression)在袋外(OOF)预测上确定融合权重。两部分模型的最终权重手动调整,反映了我们对CV或LB的信赖程度。最终提交选择了50/50和40/60两个比例的融合方案。

无效尝试

  • 使用已删除的文本
  • 模型堆叠(Stacking)
  • 向DeBERTa模型添加更多按键特征
  • 增加更多Squeezeformer层

使用工具

  • Pytorch
  • Huggingface
  • Optuna
  • Neptune.ai(作为我们的MLOps平台,用于跟踪、比较和共享模型)
同比赛其他方案