673. MAP - Charting Student Math Misunderstandings | map-charting-student-math-misunderstandings
非常感谢 Kaggle 团队和组织者举办如此有趣的竞赛。我很高兴能获得个人金牌。
从 这个讨论 中,我发现学生是通过从 a–d 中选择一个选项来回答的。
因此,我从 StudentExplanation 重构了 MC_Answer 与选项 a–d 之间的对应关系,并按如下方式修改了 QuestionText:
Which number is the greatest? (a) 6 (b) 6.2 (c) 6.079 (d) 6.0001
我相信这有助于预测,因为它允许模型将学生的 MC_Answer 与其他选项进行比较,并识别相应的 Misconception(误解)。
最终提示词如下:
You are a specialist in identifying the types of misunderstandings that arise from students'answers to math problems.
Based on the information provided below, please determine what kind of misunderstanding the student has.
Question: What fraction of the shape is not shaded? Give your answer in its simplest form. [Image: A triangle split into 9 equal smaller triangles. 6 of them are shaded.] (a) 1/3 (b) 3/6 (c) 3/8 (d) 3/9
Answer: 1/3
Correct: Yes
Student Explanation: 0ne third is equal to tree nineth
Type of Misunderstanding:
为了在后续合成数据创建和 EDA 期间提高可读性,我从 QuestionText 和 MC_Answer 中删除了 LaTeX 符号(注意:这对分数没有影响)。
受 这个 notebook 的启发,我将目标标签映射到以下符号并生成单个 token。
special_character_list = [
'■', '□', '▲', '△', '▼', '▽', '◆', '◇', '○', '●', '★', '☆',
'♦', '♥', '♠', '♣', '§', '†', '‡', '※', '∞', '±', '≠', '≈', '√',
'∑', '∏', '∆', 'Ω', 'μ', '∂','→', '←', '↑', '↓', '↔', '↕', '〈', '〉',
'『', '』', '│', '─', '┌', '┐', '└', '┘', '┼', '█', '▓', '▒','£',
'¥', '€', '₩', '©', '®', '™', '♪','♫', '☀', '☁', '☂', '☃', '☎'
]
special_token = [tokenizer(i, add_special_tokens=False).input_ids[0] for i in special_character_list]
这些符号中的每一个都对应 Qwen 分词器中的单个 token。
q_projk_projv_projo_projgate_projup_projdown_proj我在超参数试验期间注意到,批量大小和学习率的微小变化可能会导致 CV 分数大幅波动。因此,我仔细调整了这两个参数并搜索了最佳组合。
改变 LoRA 的 r 或 alpha 并没有带来分数的有意义提升。
与全参数微调相比,LoRA 在我的运行中实现了更好的 CV(可能是因为我在全参数训练方面的调整不足)。
由于竞赛标签显示出不平衡和预测难度的差异,我尝试使用生成式 AI(gpt-5 和 o3)创建合成数据。
我首先在竞赛数据上训练了一个模型,并使用 MAP@3 计算折外 (OOF) 预测。然后,我聚合了每个 (QuestionId, Category, Misconception) 对的平均 MAP@3 和样本数量。对于平均 MAP@3 低或样本少的对,我使用竞赛数据作为少样本示例生成合成数据。生成提示词包括 Category 和 Misconception 描述,并指示模型创建最多 50 个新样本。少样本示例要么是均匀随机采样,要么是随机从 OOF 分数低的项目中采样。我重复生成多次,总共获得约 30,000 个合成样本。
我使用不同的合成数据配置训练模型,并将它们用于集成。合成数据的贡献似乎适中——在 leaderboard 上可能 ≤ 0.001。(如果 leaderboard 精度提高,我计划更详细地调查这一点。)
公共 LB: 0.951, 私有 LB: 0.948
| 模型 | 合成数据 | 公共 LB (排名) | 私有 LB | 权重 |
|---|---|---|---|---|
| Qwen/Qwen2.5-7B | ✅ | 0.949 (#7) | 0.944 | 0.5 |
| Qwen/Qwen2.5-7B | ✅ | 0.949 (#8) | 0.945 | 0.5 |
| Qwen/Qwen2.5-7B | ✅ | 0.949 (#1) | 0.946 | 1.5 |
| Qwen/Qwen2.5-14B-Instruct-AWQ | ✅ | 0.949 (#6) | 0.946 | 1.5 |
| Qwen/Qwen3-8B | 0.949 (#5) | 0.945 | 1.0 | |
| Qwen/Qwen3-8B | ✅ | 0.949 (#4) | 0.945 | 1.0 |
| Qwen/Qwen3-8B | ✅ | 0.949 (#9) | 0.944 | 0.5 |
| Qwen/Qwen3-8B | ✅ | 0.949 (#10) | 0.946 | 0.5 |
| Qwen/Qwen3-14B-AWQ | 0.949 (#3) | 0.945 | 1.5 | |
| Qwen/Qwen3-14B-AWQ | ✅ | 0.949 (#2) | 0.945 | 1.5 |
*排名表示当提交页面按公共 LB 排序时提交的位置。