463. chaii - Hindi and Tamil Question Answering | chaii-hindi-and-tamil-question-answering
在我的最终提交中,我只使用了在 MLQA、xquad 和比赛数据上训练的模型。
我尝试了一些数据增强实验,但没能提高我的分数。
我的最终提交是以下微调模型的集成:
我将外部数据 + 比赛数据分成了 5 折(5 folds),并在五个折上训练了这两个模型。
在训练期间,我使用了早停法:在每个 epoch 之后,我检查了折外(oof)分割上的 Jaccard 相似度,然后使用了 JS 最高时的 epoch 权重(通常是在第二个 epoch 之后)。
我使用 Kaggle TPU 进行训练。
首先,我通过对 xlm-rob 和 muril 的 5 个折取平均值进行集成。然后,根据起始和结束 logits 的总和,确定了两个模型的前 n 个预测字符串。
为了获得最终预测,我使用了以下算法:
对于每个模型:
1. 将前 n 个后处理后的预测字符串存储在一个列表中。
2. 根据预测字符串的分数(分数是起始和结束字符 logit 的总和)对列表进行排序(从低到高)。
3. 通过简单地取其在列表中的索引,为每个预测字符串分配一个新的分数。
对于每个预测字符串:
1. 将来自每个模型的新分数相加。
2. 选择总和最大的字符串作为最终预测。
我也尝试过将 token logits 映射回字符,但使用上述算法取得了更好的结果。
我使用了 tensorflow 并在此处上传了我的代码:GitHub 仓库链接。
我也训练了 RemBert,但不幸的是我无法集成所有三个模型,因为在提交期间我总是遇到“Notebook Exceeded Allowed Compute”(Notebook 超出允许计算量)错误。
感谢社区。你们在讨论和 Notebooks 中分享了许多有趣的想法,我从你们那里学到了很多。以下 Notebooks 对我特别有帮助: