返回列表

9th place solution -Ensemble of four models

446. CommonLit Readability Prize | commonlitreadabilityprize

开始: 2021-05-03 结束: 2021-08-02 智能评测 数据算法赛
第9名方案 - 四模型融合

第9名方案 - 四模型融合

作者: wakepon (Team: Pondel, K-NKSM) | 排名: 第9名 | 发布时间: 2021-08-03

首先,我们要感谢 Kaggle 和 Commonlit 主办了如此有趣的比赛!这是我们在 NLP 竞赛领域的首次挑战,非常感谢 @rhtsingh@maunish@andretugan 分享他们精彩的内核。他们的笔记本对本次比赛的帮助无疑是巨大的。

摘要

我们选择了 Public LB(公开排行榜)成绩最好的模型和 CV(交叉验证)成绩最好的模型作为最终提交。以下是我们最好的提交结果:

提交类型 Public LB Private LB
最佳 Public LB 0.450 0.451
最佳 CV 0.451 0.448

我们融合了 10 个模型,其中包括两个 25 折交叉验证模型。

交叉验证策略

数据集大小是机器学习最重要的因素之一。在本次比赛中,train.csv 包含约 3000 个样本。一般来说,对于训练深度学习模型来说,这个数字非常小。为了充分利用这个小数据集,我们仔细确定了 K 折交叉验证中的折数(K)。我们的假设是,如果增加 K,由于训练样本数量的增加,模型表现会更好(当然,K 会有上限,因为验证样本会变得太少)。我们尝试了 4 个候选值(K=5, 10, 15, 25)来验证这一假设。正如我们所预期的,我们观察到随着 K 的增加,LB 分数有微小但稳定的提升。具体来说,将 K 从 5 增加到 15 使 Public(和 Private)LB 提高了 0.002。从 15 增加到 25 并没有改变显示的分数,但略微提高了分数(我们通过按分数对提交进行排序确认了这一点)。考虑到推理时间,我们决定对一些强大的单模型(deberta-large,roberta-large,使用交叉熵损失训练)采用 25 折。顺便说一句,我们使用了普通的 K 折交叉验证,因为使用分箱目标(binned target)的分层 K 折似乎并没有显著提高 CV-LB 的相关性。

模型

像大多数团队一样,我们使用了 HuggingFace 上用 PyTorch 实现的预训练模型。通过几次实验,发现 deberta-large 的表现明显更好。然而,deberta-large 需要比其他模型更长的训练时间,因此我们试图通过使用 deberta base 在短时间内获得 deberta-large 的最佳参数。一些内核和论文对这些实验非常有帮助(例如:https://arxiv.org/abs/2006.04884)。在更改了许多参数(包括学习率、激活层)后,通过更改损失函数获得了最佳结果。一些使用交叉熵损失的模型在之前的 NLP 竞赛中表现出了优异的结果(例如:Google Quest Challenge 讨论)。因此,我们使用 Sigmoid(target - Median(target)) 作为预测标签训练了 BCEWithLogitsLoss。在预测期间将 Median(target) 加回回归器。这个想法对 CV 和 LB 分数都有显著贡献,也对融合效果贡献显著。

权重

模型 Public 分数 融合权重
RoBERTa-Large (25 折 交叉熵) - 0.4
DeBERTa large (25 折) 0.458 0.25
DeBERTa large (15 折 交叉熵) - 0.25
DeBERTa large 5轮 5折 0.460 0.1

无效尝试