返回列表

3rd Place Solution

615. Learning Agency Lab - Automated Essay Scoring 2.0 | learning-agency-lab-automated-essay-scoring-2

开始: 2024-04-03 结束: 2024-07-02 智能评测 数据算法赛
第三名解决方案 - Learning Agency Lab - Automated Essay Scoring 2
作者: hiro (dsohonosom)
发布时间: 2024-07-04
竞赛排名: 第 3 名

第三名解决方案

首先,我要感谢竞赛组织者、Kaggle,并祝贺所有获奖者。
我还要感谢在各种讨论中提供有用信息的所有 Kaggle 用户。

利用竞赛特定数据是最重要的因素

早期对竞赛数据的分析显示,许多记录与 Persuade Corpus 2.0 中的文本相同。这些相同文本记录有七种提示名称(prompt names)。正如在 这个讨论帖 中所讨论的,基于提示名称使用 group k-fold 会导致较低的 CV 但较高的 LB 分数。考虑到提示名称的角度,我假设了三种可能的模式,并根据使用 group k-fold 时的 LB 结果,我认为可能性为 2 或 3。

  1. 仅与竞赛数据相同的提示名称
  2. 与竞赛数据相同的提示名称 + 新的提示名称
  3. 仅新的提示名称

有讨论认为测试数据中没有新的提示名称。此外,虽然基于提示名称的 group k-fold 产生了较高的 LB 分数,但 fold 之间的分数差异很大,且训练/验证数据数量不平衡。因此,我考虑了一种替代策略。

Car-free cities The Face on Mars Driverless cars Exploring Venus Does the electoral college work? Facial action coding system "A Cowboy Who Rode the Waves" 总计
训练集大小 15345 15214 13810 14291 15261 14264 15657 17307
验证集大小 1962 2093 3497 3016 2046 3043 1650 17307
CV 0.695 0.731 0.788 0.825 0.798 0.844 0.711 0.797
公共榜 0.816 0.801 0.816 0.796 0.805 0.816 0.807 0.818
私有榜 0.829 0.815 0.823 0.804 0.822 0.822 0.819 0.824

竞赛数据包含 12,871 条来自 Persuade Corpus 2.0 的记录(称为数据 A)和 4,436 条来自 Persuade Corpus 2.0 以外来源的记录(称为数据 B)。在 Groupkfold 的最佳情况下,CV 为 0.818,LB 为 0.826,观察到以下差异:

数据 A: 0.826
数据 B: 0.792

我切换到专注于数据 B 的策略,并尝试了以下两阶段训练:

第一阶段:使用数据 A + B 训练,并根据数据 B 的评估在每个 epoch 保存模型。
第二阶段:加载第一阶段模型的权重,使用数据 B 训练,并根据数据 A 的评估保存模型(以避免过拟合数据 B)。

两阶段训练的结果是 CV 为 0.828,LB 保持在 0.826,但数据 B 显著改善如下。此外,与 Groupkfold 相比,私有榜分数显著提高,表明专注于数据 B 是一个好策略。

数据 A 数据 B CV 公共榜 私有榜
groupkfold 0.826 0.792 0.818 0.826 0.828
专注于数据 B 0.832 0.815 0.828 0.826 0.838

数据预处理

在 deberta 中,"\\n"(换行符)被忽略,所以我将它们转换为 "[BR]" 并在 tokenizer 中将其设置为特殊 token。这遵循了我在之前的 FeedbackPrize 竞赛中实施的预处理。

CV 策略

如上所述,最初我选择了基于提示名称的 groupkfold。然而,后来我 switched 到基于提示名称/分数的 Multilabelstratifiedkfold。
我使用 Multilabelstratifiedkfold 分别拆分了数据 A 和数据 B。

模型与训练

鉴于大多数 token 的大小超过 512,我主要采用 deberta-v3 系列作为 backbone。为了训练的稳定性,我利用了 MLM 预训练和层冻结。有效的层冻结包括 deberta-v3-base/xsmall 的 9 层和 deberta-v3-large 的 6 层。
此外,因为回归往往比分类产生更好的分数,我选择了回归,并且 BCE(二元交叉熵)损失函数是稳定的。
在第二阶段训练期间,利用基于第一阶段 out-of-fold 预测的 soft-labeling 导致了 CV 和公共榜分数的提高。

与 deberta-v3-large 相比,deberta-v3-base 显示出更稳定的 CV/LB 性能,同样,作为单一模型(6-fold)它也达到了最高的私有榜分数。不幸的是,排名第一的模型没有被包含在集成中。(这次竞赛使得选择变得相当具有挑战性。)

排名 模型 CV 公共榜 私有榜
1 deberta-v3-base 0.8279 0.8216 0.8399
2 deberta-v3-base 0.8281 0.8264 0.8384
3 deberta-v3-base 0.8227 0.8278 0.8380

最终集成

我选择了使用 Nelder-Mead 的简单集成。

模型 最大长度 层冻结 头部结构 CV
deberta-v3-base 1024 9 MeanPooling&LayerNorm 0.825
deberta-v3-base 1536 9 MeanPooling&LayerNorm 0.827
deberta-v3-base 1024 9 AttentionPooling 0.828
deberta-v3-base 1536 9 AttentionPooling 0.826
deberta-v3-base 1024 9 LSTMPooling 0.823
deberta-v3-base 1536 9 LSTMPooling 0.822
deberta-v3-large 1024 6 MeanPooling&LayerNorm 0.830
deberta-v3-large 1536 6 MeanPooling&LayerNorm 0.830
deberta-v3-large 1024 6 AttentionPooling 0.832
deberta-v3-large 1536 6 AttentionPooling 0.834

CV: 0.8357
公共榜:0.8329
私有榜:0.8399

最高的私有榜分数来自以下集成,但未被选中,因为其在 CV 和公共榜分数上表现较低。

CV: 0.8274
公共榜:0.8240
私有榜:0.8415

有效的方法:

  • Soft labels(软标签)
  • MLM (Masked Language Modeling)
  • CV 策略
  • 关闭 dropout

无效的方法:

  • 伪标签(Pseudo-labeling):利用 FeedbackPrize 数据进行伪标签,但没有看到改进。
  • 辅助类(Auxiliary classes):使用 FeedbackPrize 的模型预测六个标签作为辅助类,但没有提高 CV/公共榜分数,因此未被采用。有趣的是,私有榜分数提高了,表明具有一定的有效性。
  • 由于假设人类对 1-6 分的评分存在变异性,我尝试了 GPR(高斯过程回归)。然而,它在公共榜和私有榜评估中都没有产生好的分数。
  • 与 lightgbm 等的 stacking 技术
  • 阈值调整
同比赛其他方案