返回列表

Tentative 2nd place solution

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

开始: 2021-08-11 结束: 2021-11-15 自然语言处理 数据算法赛
暂定的第二名解决方案

暂定的第二名解决方案

作者: tkm2261 (Grandmaster) & kanbehmw (Master)
比赛: Chaii - Hindi and Tamil Question Answering
排名: 第2名

大家好,

恭喜 @thedrcat!看来我们太过于信任排行榜(LB)了。不过,我们还是保住了第二名的位置。我很高兴,因为我可以成为 Grandmaster 了!非常感谢 @kanbehmw。他的 NLP 知识显著提高了我们的分数。

这是我们暂定的解决方案说明。我们将公开所有的代码和数据集。如果有任何问题,请在此主题下留言。

资源

外部数据

我们使用比赛数据、MLQA 和 TyDi QA(仅孟加拉语和泰卢固语)来训练模型。特别是 TyDi QA 大幅提升了我们的分数(公共 LB 从 0.787 提升至 0.799)。我们认为大多数得分超过 0.81 的顶尖队伍都使用了 TyDi QA 数据集。这可能是由于孟加拉语、泰卢固语、印地语和泰米尔语之间的语言相似性。然而,我们怀疑由于 TyDi QA 归 Google 所有,即使被翻译成印地语或泰米尔语,某些问题可能仍然是重复的。这只是一个猜测。

模型训练

我们只是在 huggingface trainer 上对所有数据进行了 2 个 epoch 的训练(没有留出验证集)。我们不区分印地语和泰米尔语。更多细节请查看各个数据集中包含的训练代码。

损失函数

虽然原始的交叉熵分数具有最佳性能,但在 https://github.com/heartkilla/kaggle_tweet 中描述的损失函数(在之前的比赛中使用过)有助于获得更多样化的模型。我们名称以 "exp33" 结尾的内核是使用 "基于 Jaccard 的软标签替代交叉熵" 训练的。

本地评估 (CV) 策略

无。我们完全根据公共 LB 调整所有内容。我甚至没有跟踪本地分数。这是我自从开始参加 Kaggle 以来第一次完全没有跟踪本地分数。

模型集成

正如 CommonLit 比赛 (链接) 中那样,模型集成似乎是赢得 NLP 比赛的关键技术。我们集成了以下模型:

  • XLM-R (7个模型)
    • deepset/xlm-roberta-large-squad2
    • AlexKay/xlm-roberta-large-qa-multilingual-finedtuned-ru
  • RemBert (3个模型)
  • InfoXLM (3个模型)
  • MuRIL (2个模型)

我们不知道为什么在俄语上微调的模型表现良好。我们逐渐堆叠模型,分数也逐渐提高(0.799 -> 0.816 -> 0.821 -> 0.827 -> 0.829)。MuRIL 模型将我们的分数从 0.827 推高到了 0.829。

杂项:

  • 为了处理上下文中 token 大小的差异,我们在集成不同类型的模型之前对整个文本进行了 softmax 函数处理。
  • 我没有使用 0.792 分数的模型。
  • 我不使用 CV 模型。所有模型都是用全部数据训练的。我认为改变种子并集成它们应该比集成 CV 模型更好。

max_seq_length 和 doc_stride 的影响

正如我的笔记本 链接 所示,max_seq_length 和 doc_stride 似乎有很大影响。尽管我探索了这两个参数的许多值,但这并没有帮助提高我们的分数。所以,我们只使用 max_length = 384 和

同比赛其他方案