463. chaii - Hindi and Tamil Question Answering | chaii-hindi-and-tamil-question-answering
感谢 Kaggle 和主办方带来了一场有趣且精彩的比赛。
感谢 @kishalmandal 提供的精彩公开 Notebook。我几天前才加入比赛,并立即研究了 Kishal 的高分公开 Notebook。
我的第一个最终提交达到了我的最高 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)。
对于我的第二个最终提交,我下载了 @kishalmandal 的训练 Notebook(这里 和 这里)。我优化了超参数、学习率和学习计划,达到了本地 CV 0.697。
接下来,我调整了流行的公开后处理方法。我将第一行使用 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 外部数据集。