返回列表

36th Place - Trust Your CV - Optimize PP

463. chaii - Hindi and Tamil Question Answering | chaii-hindi-and-tamil-question-answering

开始: 2021-08-11 结束: 2021-11-15 自然语言处理 数据算法赛
第36名 - 相信你的CV - 优化后处理

第36名 - 相信你的CV - 优化后处理

作者:Chris Deotte (Grandmaster) | 比赛:Chaii - Hindi and Tamil Question Answering

感谢 Kaggle 和主办方带来了一场有趣且精彩的比赛。

感谢 @kishalmandal 提供的精彩公开 Notebook。我几天前才加入比赛,并立即研究了 Kishal 的高分公开 Notebook。

最终提交 1 - 最佳 LB

我的第一个最终提交达到了我的最高 Public LB 0.795。我使用了 Kishal 的 LB 0.792 公开 Notebook(链接),并修改了权重:

start_logits = (start_logits1 + 0.85*start_logits2 + 0.85*start_logits3
       + start_logits4+ 1.7*start_logits5 )/5.4
end_logits = (end_logits1 + 0.85*end_logits2 + 0.85*end_logits3 
       + end_logits4 + 1.7*end_logits5)/5.4

这达到了 Public LB 0.795,在 Public LB 上排名第 60 位。但是,当我计算本地 CV 分数时,只有 CV 0.677。这非常令人担忧。(事实证明,这个提交的 Private LB 为 0.718,排名第 728 位 😮,所以它过拟合了 Public LB)。

最终提交 2 - 最佳 CV

对于我的第二个最终提交,我下载了 @kishalmandal 的训练 Notebook(这里这里)。我优化了超参数、学习率和学习计划,达到了本地 CV 0.697

改进后处理提升 +0.004!

接下来,我调整了流行的公开后处理方法。我将第一行使用 logits 的代码改为第二行使用贝叶斯概率乘积的代码(并给予起始位置略高于结束位置的权重)。

"score": start_logits[start_index] + end_logits[end_index]

from scipy.special import expit  # 这是 Sigmoid 函数
"score": expit(1.2*start_logits[start_index]) \
                  * expit(end_logits[end_index])

这将 CV 提升了 +0.003,Public LB 提升了 +0.003,Private LB 提升了 +0.004!

最佳最终提交

我最好的最终提交结果是我的第二个提交,也就是我 CV 分数最高的那个,而不是 LB 分数最高的那个。该模型的 CV 为 0.700,Public LB 为 0.784,Private LB 为 0.744。再一次证明,“相信你的 CV”是最好的策略!

更新 - 赛后反思

我的解决方案仅使用了 XLM-Roberta。在阅读了顶尖解决方案后,似乎与 Muril-Large(可能还有 Rembert)进行集成是获得更高 LB 分数的秘密武器!此外还有 TydiQA 外部数据集。

同比赛其他方案