446. CommonLit Readability Prize | commonlitreadabilityprize
我们会尽量简明扼要地介绍。
我们几乎尝试了 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 天的时间。我们做了数百张图表和不同的统计分析。这一切都是值得的,特别是对于这样一个小型数据集。
就是这样,感谢大家的阅读!