返回列表

7th place solution - the power of randomness

496. U.S. Patent Phrase to Phrase Matching | us-patent-phrase-to-phrase-matching

开始: 2022-03-21 结束: 2022-06-20 自然语言处理 数据算法赛
第7名方案 - 随机性的力量

第7名方案 - 随机性的力量

作者:vialactea
发布时间:2022年6月24日

感谢美国专利商标局 (USPTO) 和 Kaggle 组织了如此引人入胜的比赛。这是我参加的第3次 NLP 比赛,如果没有 Kaggle 社区的教导和分享,尤其是 @cdeotte@abhishek@theoviel@yasufuminakama@cpmpml,我无法取得现在的成绩。谢谢你们!

昨天我终于从工作中抽出时间回顾了一些帖子,似乎所有顶尖团队都使用了相同的基本思路。因此,今天除了谈论我的解决方案外,我还要分享我在 NLP 比赛中的心路历程和思考过程。

我的历程

这是我参加的第3次 NLP 比赛。每一次我都学到了很多。从第一次主要依靠调整公共笔记本 运行一个 epoch 并消耗了一周的 GPU 配额,到第二次成功端到端训练 deberta-v3-large 模型,再到这次成功训练 deberta-v2-xlarge,这是一段相当精彩的旅程。即使是现在,在阅读了一些文章后,我还学到了关于 torch 库功能的新东西。Kaggle 确实是一个独特的平台,让你有机会与最优秀的人竞争并向他们学习。

我在这次比赛的历程始于 6 月初,当时我完成了上一场比赛的回顾并进行了一些测试。我想知道现在加入是否为时已晚。我查看了数据,整理了一份想法清单,决定试一试。首先,我建立了一个基础解决方案作为基准。令我惊讶的是,即使经过一些调整,与 LB(排行榜)和得分最高的公共笔记本相比,它的 CV(交叉验证)分数仍然很低。我本以为简单集成模型的各种折叠 会带来提升,但我的基础太低了,我怀疑那是否有太大帮助。距离比赛结束还有大约两周半的时间,我认真考虑过放弃。然而,我很好奇我的一些想法是否会奏效,我想我可以花这些时间试一试,于是坚持了下来。

第二天,6月6日,我进行了第一次提交,主要是为了确保我能成功提交。在我的第二次比赛中,我一直等到有一个值得提交的模型才提交,结果我挣扎了好几天才搞定,每天只有5次提交机会用于测试,而比赛截止日期却迫在眉睫。从那时起,我喜欢尽快把这件事搞定。我还没准备好提交单个模型以外的任何东西,所以我就是这么做的。从那时起,每天我都会用掉我的5次提交机会,哪怕只是为了获得更多数据来了解我的 CV 和 LB 之间的相关性。

第二天,在继续训练模型的同时,我完成了提交集成的代码,并提交了我的第一个集成模型。这只是我当时拥有的模型的简单平均值。第二天我意识到提交失败了。我修正了一个 bug 并立即再次提交。没过多久它又失败了。我修正了问题(这是修复 bug 测试留下的后遗症)并再次提交。几个小时后我意识到它也失败了。我修复了另一个 bug 并重复提交。这几乎已经是 Kaggle 日的结束,所以我又提交了2个单模型,就这样完成了我的第3天提交。

第二天早上,我醒来时发现自己稳稳地处于银牌区,LB=0.8525。CV 是 0.8589,但鉴于我还没有提交任何集成模型,我不知道这在 LB 上会转化为什么。这是一个巨大且令人鼓舞的惊喜。我完全不知道那个第一次集成(由我最初模型的简单平均值组成)的 PB(私有排行榜分数)是 0.8714;这足以赢得金牌。想想就在3天前,我还准备放弃,因为本质上那些相同的单个模型与 LB 相比表现非常差。我想,如果大量的团队进行大量的尝试,很可能其中一些团队会偶然获得好成绩(也就是过拟合)。因此,LB 分数可能无法反映团队解决方案的质量。只有每个团队才能评估他们拥有什么。其他人只能猜测。坚持终有回报,或者就我而言,是好奇心。

第二天我进入了金牌区并一直保持到最后。竞争非常激烈。两三个团队总是在顶部遥遥领先,但其他团队的位置经常变动。鉴于我最初的想法效果很好,我搁置了其他想法。我计划在最后几天尝试其中的3个。然而,在最后一个星期四,我在训练期间得到了一个“nan”验证分数。这是一个巨大的警钟。我转移精力试图弄清楚发生了什么。由于某种原因,最后一个验证批次中最后几项的预测是 nan。这到底为什么会发生?输入数据没有什么异常。我的重心完全改变了。我意识到我的金牌位置可能是海市蜃楼。如果我

同比赛其他方案