返回列表

21 place solution: Trust CV & Differential fusion

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

开始: 2021-08-11 结束: 2021-11-15 自然语言处理 数据算法赛
第21名方案:信任交叉验证与差异化融合

第21名方案:信任交叉验证与差异化融合

作者: ForcewithMe (Grandmaster) | 排名: 第21名

感谢 Kaggle 官方举办了这场精彩的比赛。感谢社区提供了如此多精彩的 Notebook 和讨论。最后感谢我的队友 @guohey@thousandtie 陪伴我度过了这难忘的10天印度之旅。

我们的方案主要围绕这个主题:信任交叉验证(CV),并尽可能融合差异大的模型
我们找不到融合 Rembert 和 XLMR 的方法,因此决定在最终提交的两个方案中,一个仅使用 Rembert,另一个仅使用 XLMR。

  1. 为什么决定进行“暴力”融合?

    因为我们发现,无论是在 CV 还是 LB(排行榜)上,增加数据都无法提升单模型的性能。

  2. 为什么决定更信任 CV 而不是 LB?

    实际上,这有点像一场赌博。在最后两天之前,我们的 LB 分数一直无法超过 0.792 的提交结果。此外,无论我如何将自己的模型与 0.792 的模型进行融合,哪怕只给我的模型很小的权重,结果都比 0.792 差。我计算了 0.792 提交中每个模型的 CV 和 LB 分数,发现 Fold 0 和 Fold 1 的 LB 和 CV 都很差,而后 3 个 Fold 的 CV 和 LB 都很好。然而,如果不使用表现差的前两个 Fold,LB 分数会大幅下降。查看了前两个 Fold 的训练 Notebook 后,我并未发现什么特别之处。

    综合考虑上述实验结果和分析,我宁愿相信 0.792 的提交结果过拟合了 LB。因此,与其试图在 LB 上击败公开的 0.792,我选择使用 CV 表现更好的模型进行集成,并祈祷 Private LB(PLB)能出现shake up(排名变动)。
    幸运的是,这场赌博赢了。

  3. 我们如何增加模型的差异性?

    我们采用了不同的随机种子和不同的数据。
    例如,12 折的 Rembert 提交结果由以下模型组成:

    • 2 折使用仅印地语外部数据种子为 2021(LB 0.782)
    • 3 折使用印地语和泰米尔语外部数据(社区流行做法),种子为 42(LB 0.776)
    • 4 折使用与上述相同的数据,种子为 1111(未获得 LB 分数,提交次数不足)
    • 2 折使用上述数据并增加了 15k 条来自 @zzy990106 的外部泰米尔语数据样本,种子为 99。

    我们尝试了其他组合,采样更多外部数据并替换种子 1111 部分的某些折。但这个方案在 LB 上表现最好,所以我们用它作为 Rembert 的最终提交。
    我们在 XLMR 中采取了相同的原则,但可能使用了公开 0.792 模型的部分或全部折在我们的 XLMR 集成中,这个策略在 XLMR 上没有奏效。(无论我如何与 0.792 融合,LB 分数都更差。)

  4. 我们如何信任 CV?

    我们每次训练不同数据和种子的 5 折模型。获得权重后,我们计算它们的 CV。我们只使用 CV 高于 0.68 的模型进行集成。

  5. 未来有哪些可改进之处?

    我们找不到评估集成提交结果 CV 的方法,因为种子不同,且每个种子只使用了 20%-80% 的模型。
    事实上,我们最好的提交 PLB 为 0.760,非常接近金牌区。但它的 LB 分数比我们要好的 0.795 Rembert 提交低,所以我们没有选择它。也许有更好的 CV 策略,我们就有机会获得金牌。
    如果你有计算集成输出 CV 的想法,请与我讨论!

感谢阅读,欢迎评论和点赞!

同比赛其他方案