返回列表

14th place solution: An attempt to reverse-engineer the dataset

573. Kaggle - LLM Science Exam | kaggle-llm-science-exam

开始: 2023-07-11 结束: 2023-10-10 自然语言处理 数据算法赛

第14名解决方案:尝试逆向工程数据集

作者:Maxim Tsygankov(Kaggle Master)
发布日期:2023年10月11日

与许多其他竞赛不同,我认为本次竞赛的重点放在了数据的质量和预处理上,而不是模型架构的复杂性上。由于我们最初只有200行数据,数据收集成为解决方案的关键部分。以下是我的方法的一些要点:

手动标记train.csv文件

首先对train.csv文件进行手动标记,我找到了每个问题的原始来源页面。虽然不保证100%准确,但达到了预期效果。
关键发现:在此阶段的一个重要观察是,许多问题来自相同的分类。一些原始页面来自非科学类文章,例如来自"对称性分类"的"Droste效应"和"三曲腿图"。然而,该分类中的大多数其他文章(如"自发对称性破缺")都与科学相关。这使我假设竞赛数据集可能来自科学分类而非特定的科学页面。此外,这似乎是自动提取而非手动选择的结果。

构建以分类为中心的数据集

在认识到分类的重要作用后,我专注于构建以分类为中心的数据集:

  • 相邻分类(AC)数据集:我从手动标记的csv中提取了所有分类,并获取了这些分类中的每个页面。然后将页面分割成约1500字符的片段。
  • 训练数据集创建:使用gpt3.5,我为每个1500字符的片段创建了5个选择题,每个问题有5个选项。这生成了约75万个片段-问题-答案三元组的大规模数据集,成为我模型训练的唯一数据集。链接

数据集变体

为了扩展可用数据,我引入了几个版本的AC数据集。这些数据集仅用于模型推理/验证,而非训练部分:

  • 祖父母(GP)数据集:从标记的train.csv页面的祖父母分类(即父分类的父分类)开始,我获取了这些分类中的每个子页面和孙页面。
  • 自然科学(NS)数据集:对"分类:自然科学"进行图搜索,设置5级深度覆盖,覆盖了train.csv中193个页面。为了包含剩余的7个页面,我从其他分类添加了页面,深度限制不同("分类:数学"、"分类:测量仪器"、"分类:晶体"、"分类:按学科的科学史")。
  • GP加1(GPP1)数据集:GP数据集的增强版本,包含了叶分类的子分类。它还通过手动移除了数百个不相关的分类进行了大量修改,例如"分类:按年份的电影原声带"。
  • AC-750数据集:与AC数据集类似,但片段长度为750个字符。

(数据集命名是临时起意,后来被沿用)

使用向量和TFIDF搜索进行文章检索

数据集准备就绪后,我采用了混合搜索策略。结合使用向量(使用在AC上微调的e5和bge模型)和tfidf相似度来识别与问题最相关的摘录。

最终模型集成

我的最终解决方案是三个Deberta(ForMultipleChoice)模型的集成,这些模型有一些细微差别,例如:(1)输出层的数量,(2)输入中上下文-问题-选项的顺序,(3)模型对其他选项的感知。每个模型都通过4种不同的上下文增强进行了优化:GP、NS、GPP1、AC-750。
总之,这次竞赛是一次很棒的学习经历。通过观察模式、认识分类的重要性并实施多样化的策略,我成功构建了一个足够强大的解决方案,能够顺利过渡到私人排行榜。

同比赛其他方案