返回列表

3rd Place Solution (with Magic Boost)

632. Eedi - Mining Misconceptions in Mathematics | eedi-mining-misconceptions-in-mathematics

开始: 2024-09-12 结束: 2024-12-12 学习效果预测 数据算法赛
第三名解决方案(带有魔法加成)

第三名解决方案(带有魔法加成)

作者: Yi-Chia Chen (threerabbits)
发布日期: 2024-12-13
竞赛排名: 第 3 名

首先,我想感谢组织者举办这次比赛,感谢 Kaggle 社区所有的讨论和分享的 Notebook,帮助我学到了这么多。

我的解决方案

采用两阶段方法:

阶段 1:检索 (Retrieval)

  • 使用了 Qwen-14B Embedder(来自 @anhvth226)与使用 FlagEmbedding 训练的 Qwen-14B embedder 进行集成。
  • 为每个问题检索了 35 个最相关的误解 (misconceptions)。
  • 使用了公开分享的 Retriever,并尝试了自己训练的 FlagEmbedding Retriever。
  • 老实说,我自己训练的 Retriever 相当糟糕,移除它实际上提高了分数(哈哈)。

阶段 2:重排序 (Reranking)

  • 使用了 Qwen-32B-instruct-AWQ reranker。
  • 集成了 6 个具有不同训练参数和交叉验证的 LoRA 模型。
  • 其中一个模型包含了约 2000 个 GPT4-mini 生成的样本,但改进……不是很显著。

此时的分数:

  • 公共排行榜 (Public LB): 0.590
  • 私有排行榜 (Private LB): 0.564

是时候来点魔法了!

接下来是最有趣的部分!

这一切始于我发现误解表中有超过 900 个未见过的误解 (unseen misconceptions),它们从未出现在训练数据中。此外,根据 @zhudong1949@eugenkrylov 的发现(查看此处:讨论链接),测试集有许多未见过的主题,只有约 685 个问题。

所以我想:这些未见过的误解一定构成了测试集的很大一部分!

让我们实验一下

在比赛的倒数第二天(是的,我真的敢在这个时候用两次提交来做实验 XD),我做了这个排行榜探测 (LB probing):

  • 每个问题只预测 1 个误解。
  • 测试了两次:
    1. 仅使用训练数据中见过的误解:得分为 0.154
    2. 仅使用未见过的误解:得分为 0.444

看到这些结果,我大胆猜测测试数据中见过与未见过的比例大致为 1:3。

最后的魔法 touch

所以我实施了一个简单的后处理:

  • 将所有预测的未见过的误解的概率乘以常数 C。
  • 调整直到未见过的误解占首预测的 75%。

这个小魔法技巧让分数飙升 😮:

  • 公共排行榜 (Public LB): 0.590 → 0.658
  • 私有排行榜 (Private LB): 0.564 → 0.600

在最终版本中,我还随机打乱了输入到 reranker 的误解顺序,这带来了额外的微小提升:

  • 公共排行榜 (Public LB): 0.670
  • 私有排行榜 (Private LB): 0.602

代码

推理代码可以在这里找到:

同比赛其他方案