返回列表

14th Place Solution with best single model only scored 0.461/0.463 on LB

446. CommonLit Readability Prize | commonlitreadabilityprize

开始: 2021-05-03 结束: 2021-08-02 智能评测 数据算法赛
第14名方案:最佳单模型LB得分仅为0.461/0.463

第14名方案:最佳单模型LB得分仅为0.461/0.463

作者: Mengfei Li | 比赛排名: 第14名 | 发布时间: 2021-08-03

我们会尽量简明扼要地介绍。

第一步 - 训练部分:

我们几乎尝试了 Hugging Face 上的所有模型,其中 XLNet 对我们来说是表现最好的。

a. 使用原始数据集。我们最好的单模型是 XLNet large 模型(Public LB 0.461,Private LB 0.463)。

b. 使用伪标签进行训练。我们融合了一些选定的模型,在 Public LB 上获得了 0.455 的分数。利用融合后的模型为合法的公开数据生成伪标签作为外部数据,并继续进行训练。我们最好的伪标签模型是 Roberta large 模型(Public LB 0.460,Private LB 0.456)。

c. 训练过程中的一个特别说明,我们使用了标准差作为第二损失项。例如:
loss = torch.sqrt(loss_fn(logits, labels.view(-1)))+0.6*torch.sqrt(loss_fn(logits, (labels-stds).view(-1)))

第二步 - 通过多层堆叠避免榜单震动

由于我们最终使用了超过 20 个模型:其中一半使用原始数据集训练,另一半使用伪标签数据集训练。它们的交叉验证(CV)分数差异很大。简单的融合只能帮助我们在 Public 和 Private LB 上分别达到 0.451 和 0.453。如何继续提升?

答案是堆叠。但是面对这么多 CV 分数差异巨大的模型,普通的堆叠方法此时效果并不好。我们应用了多层堆叠。我们使用 Lasso 作为堆叠的基模型。所有低分模型被放在第 1 层,伪标签模型放在第 2 层,线性模型放在第 3 层。这个设置帮助我们要到了第 14 名。

然而,这并不是我们的最佳分数。我们选择了 12 个模型并应用了 12 层堆叠,即每一层只是追加一个模型的 OOF(Out of Fold)/预测结果,Public 和 Private LB 分数均为 0.448,没有出现过拟合。如果加入更多模型,得分可能会更高。

第三步 - 详细的统计分析

我们在选择最终提交方案上下了很大功夫,因为我们注意到 LB(排行榜)发生剧烈震动的可能性很大。这花了我们将近 3 天的时间。我们做了数百张图表和不同的统计分析。这一切都是值得的,特别是对于这样一个小型数据集。

就是这样,感谢大家的阅读!

同比赛其他方案