463. chaii - Hindi and Tamil Question Answering | chaii-hindi-and-tamil-question-answering
感谢 Kaggle、主办方、讨论区以及所有的竞争对手!
因为有你们,我非常享受我的第一次 Kaggle 之旅!
我在 Private LB 上获得了第20名(0.755)。(尽管在 Public LB 上是第9名(0.811)!)
我的方案是集成了9个基于 XLM-RoBERTa-large 的模型(来自5种不同的模型构建方式),并在推理阶段使用了一些技巧性的后处理。
因为我没有详细评估它们,每个模型的构建都很“脏”,可能包含许多无意义(甚至有害)的技巧和差异。请注意,我只是简单地描述了我做了什么以及我的猜测。
起点是著名的 0.792 notebook。
简单地使用了 sklearn 的 model_selection.StratifiedKFold 进行5折划分,标签 y = data['language']。
这用于早停和模型(种子)选择。
基本上,这是一个标准的抽取式 QA BERT 模型,即通过 transformer 进行编码,并通过线性层预测 (start_index, end_index) 的 logits。
每个短语的分数由 start_logit + end_logit 计算。(如果两者都指向 CLS token 的位置,则代表“无答案”。)
为了增强模型的多样性,我尝试了一些变体:
其中 h_{*} 表示第 * 层在 token 处的输出,h_last_of_CLS 是 CLS token 的最终输出。
我做这些几乎只是为了好玩!我希望它们可能对集成有所帮助。
有时会使用一些外部数据,有时则不用。
微调数据:
额外预训练:
总的来说,我在集成中使用了五种设置。
它们可能有不同的设置: