返回列表

Public Top3 -> Private Top15 Solution

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

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

从公开榜Top3到私有榜Top15的解决方案

作者: Tilbur (Kaggle MASTER)

最终排名: 第15名

发布时间: 2023-10-13

太令人惊讶了!但我们仍然失去了10000美元的奖金。看起来是过拟合了。从公开榜前三名跌到私有榜第十五名。

说实话,我们把全部注意力都放在了RAG上,只用2个DeBERTa来做多选题。所以过拟合问题可能出在DeBERTa上(不像其他人的LLM-7B)。

我的英语不太好,所以有些内容是用翻译软件从中文翻译过来的。🤣🤣🤣🤣

我们的5路召回策略

我们有一个5路召回策略。它可以分为两部分:句子模型或TFIDF。

整体程序流程图

流程图

第一部分:句子模型

我们使用SimCSE结合SFT来训练句子模型,这使我们LB分数提高了0.015。特别地,我们使用了一种叫做困难样本对比学习的技巧。 我们先训练SimCSE,然后用这个模型对训练数据集进行推理。这样会产生Top5召回,然后将Top4(除了真实答案)作为负标签放入SimCSE损失中。这将为我们的模型提供更强的文本表示能力。相比普通的SimCSE,这给我们的模型带来了额外的0.005 LB提升。

请注意,我们使用的所有句子模型都是通过SimCSE训练的

第二部分:TFIDF

就像开源笔记本一样。特别地,我们对TFIDF进行了加速,只用了20分钟。

特别是,我们发现句子模型无法编码维基百科文章的所有文本,而TFIDF、BM25或LGBRanker是几种有效的补充方案,因为它们可以编码任意长度的文本。

5路召回策略详情

  1. 680万条维基百科数据集:我们使用句子模型召回前1000篇维基百科文章。然后使用BM25(或LightGBM排序器)对前1000篇文章重新排序,只保留前30篇。接着分割文章并使用句子模型获取前20个句子。这一方法的LB分数为0.885。
  2. 27万条维基百科数据集(210万段落):我们使用句子模型召回前5个段落。
  3. 27万条维基百科数据集(210万段落):我们使用TFIDF召回前8个段落。
  4. 27万条维基百科数据集(280万段落):我们使用句子模型召回前5个段落。
  5. 27万条维基百科数据集(280万段落):我们使用TFIDF召回前8个段落。

有趣的是,我们将数据集切片成多个索引,然后分别召回,再根据search_score排序以获取Top5。这解决了Faiss占用内存过多的问题。🤣🤣🤣🤣🤣🤣

一些杂谈

这是一场讨论竞赛!

这是一场竞争非常激烈的比赛。但也有很多优秀的开源工作彻底改变了比赛格局。MB的27万数据集无疑是一项出色的工作,但它也完全在后半段颠覆了游戏规则。在那之后,所有技巧都可以在讨论区找到。

这是第一个我认真参与的Kaggle比赛,感谢我的队友们和组织者,也感谢大家的开源工作!

生活充满惊喜!

团队成员

  • Tilbur (队长, Kaggle MASTER)
  • wagege (Kaggle MASTER)
  • heng (Kaggle GRANDMASTER)
  • sayoulala (Kaggle GRANDMASTER)
  • chizhu (Kaggle GRANDMASTER)
同比赛其他方案