返回列表

4th place solution

540. Learning Equality - Curriculum Recommendations | learning-equality-curriculum-recommendations

开始: 2022-12-15 结束: 2023-03-14 个性化学习 数据算法赛
第4名解决方案

第4名解决方案

作者: Psi (Grandmaster) | 团队: Team Hydrogen | 排名: 第4名

非常感谢 Kaggle 和主办方,特别是 @jamiealexandre 举办了这次比赛。不幸的是,我们在 NFL 比赛结束后才加入,所以我们尝试在十一天的冲刺中尽力而为,我们对结果非常满意。每天都在进步是相当令人兴奋的——但同时也有一点遗憾,我们没有更多的时间参加这次比赛,因为在这里参与真的非常有趣,我相信我们的解决方案还没有达到天花板。

由于时间限制,我们的解决方案仅基于嵌入模型的集成,使用余弦相似度匹配以及额外的后处理。

数据处理

我们仅使用以下特征作为模型的文本输入:语言、类别、标题和描述。
数据的一个“问题”是,某些主题和内容项没有适当的描述,或者标题非常不确定。因此,补充它们是有帮助的。

对于主题,我们将标题替换为类别树标题的逆轨迹,基本上是添加面包屑导航,我们对描述也做同样的处理。
对于内容,我们将描述和文本字段连接为单列。

这种方法的好处是,它将为那些数据不完整的记录添加信息。通过标记化和截断,模型将优先考虑原始信息(如果可用),否则使用补充信息。例如,如果内容项有描述和文本可用,它将优先考虑描述,否则如果描述缺失,它将使用文本。

验证设置和模型

由于缺乏时间,我们专注于单次留出验证。为此,我们分出了非源类别。与这些类别匹配的内容可以是训练的一部分,也可以是完全未见的。我们在相对意义上与公共和私人排行榜的设置获得了很强的相关性。

对于提交,我们总是在完整数据上重新训练模型。由于时间不够,我们不能总是同时进行验证和全量拟合。所以在结束前 3-4 天,我们只进行了盲目的全量拟合,并在提交时混合它们。对于本地验证和测试后处理,我们依赖一些早期模型。虽然不理想,但考虑到时间限制,这是一个合理的方法。

嵌入模型

我们只使用 ArcFace 模型。对于模型的输入和训练,我们使用两种不同的模式:

基于主题的标记。 这里,单个标签被定义为一个主题,以及与该主题匹配的所有内容项。例如:标签 1:主题 A,内容 A,内容 C,……

这意味着内容项出现的次数与它们匹配主题的次数一样多,每个主题只是一个样本。这种方法在基于 F2 的指标上本身是最强的。

基于内容的标记。 这里,单个标签被定义为一个内容项,以及与该内容匹配的主题。例如:标签 1:内容 A,主题 A

这意味着每个主题-内容对是一个单独的标签。这种方法单独使用效果较差,但与基于主题的方法混合效果很好。

我们的最终混合包含 7 个基于主题的模型和 2 个基于内容的模型。骨干网络主要是 xlm-roberta-base、xlm-roberta-large、paraphrase-multilingual-mpnet-base-v2 或 deberta-v3-large。

后处理

我们尝试了很多不同的后处理技术,因为这在度量学习匹配中总是有用的。我们在内核中自动优化阈值,以达到每个主题的平均匹配数。此外,我们发现基于附加信息惩罚余弦相似度是有帮助的。首先,我们稍微降低在整个训练中仅匹配单个主题的内容的相似度概率。其次,我们增加训练中不可用的内容项的概率。如果超过某个阈值,我们也总是将新内容匹配到排名最高的主题。最后,如果一个主题的匹配少于五个,但额外的概率高于与较高排名概率的某个比率,我们还会额外添加新的匹配。

什么没有奏效(由于时间原因)

我们花了 2-3 天尝试为第二阶段调整双编码器文本模型,但无法获得任何能改善我们第一阶段嵌入模型的东西,不值得增加运行时间。所以我们决定放弃它,只专注于第一阶段。

此外,我们花了一些时间尝试调整 LGB 第二阶段模型。我们非常确定它们应该运行良好,并且可能也会取代一些手动后处理。虽然 CV 看起来合理,但 LB 有点下降,我们对其验证设置不太有信心,所以我们放弃了它。看看其他解决方案,它似乎确实有帮助,我相信它可以把我们的解决方案推得更高。

效率提交

我们还有一个效率提交,得分 0.72,集成了两个较小的模型,在较短的标记长度上运行,耗时 22 分钟。我们使用多处理和 ONNX。我们可能缺乏一个好的第二阶段 LGB 模型来提高这里的分数。

一如既往,为我出色的队友 @ilu000 欢呼。

同比赛其他方案