496. U.S. Patent Phrase to Phrase Matching | us-patent-phrase-to-phrase-matching
首先,我们要感谢比赛组织者和 Kaggle 平台举办了如此激动人心的比赛。我也要感谢我的队友们。如果没有他们,我一周前就放弃了,也无法有效地利用我的想法。
我从这次比赛中学到了很多,并获得了一些可以应用于其他 NLP 任务的通用知识。
我们最终获得了第8名(公共/私有排行榜均为第8),我想总结我们的解决方案,并分享一些对我们无效的尝试。
我们使用了 6 个用 BCELoss 训练的模型,并通过不同的权重进行平均作为集成方案。
本次比赛旨在估计特定上下文中特定词对(anchor 和 target)之间的语义相似度。有多个 target 需要与特定的 anchor 进行比较。
因此,我们假设可以利用三种信息来预测相似度。
我们绞尽脑汁,将输入定义如下,并将其输入模型。
[TAR] 是我们添加的一个特殊 token,用于让模型识别每个 target token 的位置。
这种方法极大地提高了分数,并缩短了训练/推理时间,因为模型可以一次性推断多个 anchor-target 对。
编辑:
我发布了一个训练 token 分类模型的 notebook。
https://www.kaggle.com/code/skraiii/pppm-tokenclassificationmodel-train-8th-place
我们也训练了作为文本分类任务的模型。可能大多数参赛者都采用了这种方法,但我们加了一个小技巧。我们只使用了对应 CLS token 的注意力输出。在我们的实验中,这使得模型学习更快,分数也有所提高。虽然该模型的 CV 分数低于 token 分类模型,但它有助于提高集成性能。
我们使用了 StratifiedGroupKFold(n_folds=4),按分数分层,按 anchor 分组。
我们定义了具有多个 target 的 anchor-wise 输入,因此我们通过每个样本洗牌 target 来增强数据。这可以防止模型记忆训练样本本身。
这种对抗训练方法提高了我们的 CV 分数。我们修改了由 @currypurin 制作的 AWP 代码。
超参数非常重要。主要的超参数是 adv_lr。在过去的比赛中,获胜者经常调整 adv_eps。然而,在仔细阅读原始论文后,我们得出结论,adv_lr 更重要。
根据我们的理解,adv_eps 和 adv_lr 可以用下图来说明。(不过,我们有一些与预期行为略有不同的经历,所以某处可能存在错误。)