返回列表

9th place solution

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

开始: 2021-08-11 结束: 2021-11-15 自然语言处理 数据算法赛
第9名方案

第9名方案

作者: Benjamin Minixhofer, Christoph Minixhofer
比赛排名: 第9名

大家好,有些出乎意料的是我们获得了第9名。我们参加这次比赛的目标是尝试使用 WECHSEL 训练的模型(https://openreview.net/forum?id=JcfISE1-u4,你可能在这里见过这些模型),以此作为对比 SOTA 多语言模型时的一种合理性检查。为了使我们的提交具有竞争力,我们将 WECHSEL 模型与其他模型结合使用:

  • deepset/xlm-roberta-large-squad2,参数设置如下:
    max_len=384
    doc_stride=128
    batch_size=32
    learning_rate=3e-5
    epochs=2
    max_grad_norm=1.0
    并将 MLQA 和 XQUAD 数据追加到训练集中。
  • muril-large-cased,参数设置如下:
    max_len=384
    doc_stride=128
    batch_size=32
    learning_rate=3e-5
    epochs=2
    max_grad_norm=0.5(这有助于稳定 Muril 的训练)
    并将 MLQA 和 XQUAD 数据追加到训练集中。
  • roberta-large-wechsel-hindi,参数设置如下:
    max_len=384
    doc_stride=128
    batch_size=32
    learning_rate=3e-5
    epochs=2
    并将 MLQA 和 XQUAD 数据追加到训练集中。

泰米尔语数据(Tamil data)

我们没能让 roberta-large-wechsel-tamil 正常工作,因为泰米尔语数据集非常小。@cdminix 尝试通过从网络上抓取泰米尔语问题并自动查找答案所在的维基百科段落来增加泰米尔语数据。通过这种方式,我们最终获得了约 200 个额外的泰米尔语样本。这提高了我们泰米尔语 WECHSEL 模型的得分,但仍未达到与多语言模型相媲美的水平,而且我们也没有更多时间进行进一步研究。

预处理(Preprocessing)

我们从文本中删除了参考文献(所有方括号内仅包含数字的部分),因为文本中出现了大量此类内容。

堆叠(Stacking)

我们通过将 logits 转换为字符级别来组合模型:对于每个 token,我们简单地为 token 中的每个字符重复该 logit 值。对于起始 logits,我们减去 0.01 * 字符位置;对于结束 logits,我们减去 0.01 * (token 长度 - 字符位置),以确保选择 token 内最长的字符跨度作为答案。

在将 logits 转换到字符级别后,我们简单地将不同模型的预测结果相加,没有进行任何加权。

提交(Submission)

在公开了我们的 WECHSEL 模型并通过与其他模型堆叠使提交结果具有一定竞争力后,我们对调整超参数感到沮丧,因为无法大幅提高公共榜单分数。考虑到我们需要调整更多参数,而且可能需要一些技巧才能获得高分(比如修正答案起始位置、更多外部数据),我们在五天前决定不再在这个比赛上投入更多精力,也没有选择任何最终提交。

因此,我们的提交被自动选为公共榜单上的最佳提交,即在每个完整数据集上训练的每个模型的 2 倍结果。我们本期望能成为最佳提交的最后一次提交,在使用每个模型的 5 折交叉验证(5-fold CV)下,公共榜单得分为 0.787。它在私人榜单上得了 0.779 分,但未被自动选为最终提交之一。

最佳模型得分

那本该是第 2 或第 3 名的成绩,所以没选择任何提交确实有点令人沮丧,但总的来说,结果显然比我们预期的要好得多,所以我没什么可抱怨的。

我的主要收获是:

  • 当数据量如此之少时,确实非常容易对公共榜单过拟合,所以我们在这次比赛上没花太多时间可能是因祸得福。
  • 一定要选择最终提交,即使你并不指望能取得好成绩 :)
同比赛其他方案