Fork me on GitHub

Feedback Prize比赛TOP1方案讲解

以下文章来源于 https://zhuanlan.zhihu.com/p/561588384



一、前言

Feedback Prize比赛来源于kaggle比赛平台,其比赛背景是学生们对于议论文提出自己的论点,而比赛需要我们做的任务是判断这些学生评价的观点是充分的、有效的、无效的三个类别,就是一个三分类任务。

  • Lead - 以统计数据、引文、描述或其他一些手段开始的介绍,以吸引读者的注意力并指向论文
  • Position - 对主要问题的意见或结论
  • Claim - 支持该立场的主张
  • Counterclaim - 驳斥另一项主张或对该立场提出相反理由的主张
  • Rebuttal - 反驳反诉的诉求
  • Evidence - 支持索赔、反索赔和反驳的想法或例子
  • Concluding Statement - 重申索赔的结论性声明

训练集字段

  • discourse_id - 话语元素的 ID 代码
  • essay_id - 论文响应的 ID 代码。 此 ID 代码对应于 train/ 文件夹中的全文文件的名称。
  • discourse_text - 话语元素的文本。
  • discourse_type - 话语元素的类标签。
  • discourse_type_num - 论述元素的枚举类标签。
  • discourse_effectiveness - 话语元素的质量评级,目标。

比赛难点在于以下几点:

1、比赛对于推理时间有要求,除了效果排行还有效率排行榜。

2、文本是超长文本,discourse_text和essay_text两个文本是很多超过512长度。
essay_text长度分布统计discourse_text长度分布统计

二、TOP1方案细节介绍

1、交叉验证

在整个比赛中,在 CV 和 LB 之间有着近乎完美的相关性。每当看到 CV 有一些改进时,都会看到它以类似的方式反映在 LB 上,随机范围非常小。为了拆分折叠,只是对文本使用了分层采样拆分。

由于数据是中小型数据,并且指标是对数损失,因此不同运行之间的分数可能会有所不同。这对于深度学习模型来说很典型,因为它们非常依赖手头的种子,这些种子会影响权重初始化、批处理或增强。然而,这意味着不应该在单个种子上判断模型性能,最好总是在多个种子上进行评估。

鉴于模型训练非常快,因此只依赖于检查每个模型的 3 个种子的混合。此外,单个模型的分数与它们融入更大整体的能力并没有很好的相关性。因此,更好的个体模型在混合中的表现可能会更差,多样性在这里真的很重要。因此,总是检查混合模型,即使它们在单个基础上看起来不太有希望。与检查 CV 的方式类似,我们总是使用在完整数据上训练的 3 个模型种子的混合种子。

相关性如下所示:
cv和lb相关图

2、模型

第一名最终解决方案是不同建模方法的组合。数据中的大多数都是基于同时从一篇文章中训练所有话语的想法。这不仅使训练和推理速度更快,而且显着提高了准确性。在下文中,更详细地描述主要方法。对于骨干网络,使用 deberta-(v3)-large 工作。其他骨干没有改善整体。

3、论文组模型

这种方法的主要思想是将一篇完整的文章输入到模型中,并分别汇集每个话语,然后将其输入到最终的线性层进行预测。 这里的主要方法与其他人共享的方法相似,但有一些特殊性和不同的子方法。

主版本有如下输入:

Lead Position Claim Evidence Counterclaim Rebuttal Evidence Counterclaim Concluding Statement [SEP]  [START] Hi, i'm Isaac, i'm going to be writing about how this face on Mars is a natural landform or if there is life on Mars that made it. The story is about how NASA took a picture of Mars and a face was seen on the planet. NASA doesn't know if the landform was created by life on Mars, or if it is just a natural landform. [END]   [START] On my perspective, I think that the face is a natural landform because I dont think that there is any life on Mars. In these next few paragraphs, I'll be talking about how I think that is is a natural landform [END] ... more text follows here

如前所述,一个样本包括一篇论文。 首先使用 SEP 标记添加文章中所有类型的话语的列表,然后使用自定义的 START 和 END 标记标记各个话语。 然后,通过主干运行这个样本,并在每个话语的 START 和 END 标记之间汇集。 输入批量大小始终为 1,这将转换为取决于文章中话语数量的批量大小。 这些汇集的嵌入然后通过预测类别的最终线性层运行。

你可以看到,在这个例子中,第一名并没有专门为每个话语添加类型,而是使用了一个额外的辅助损失来预测每个话语的类型。 这有助于规范模型并允许进行更长时间的训练。

另一个子方法没有这种辅助损失,并根据以下输入训练模型:

Lead Position Claim Evidence Counterclaim Rebuttal Evidence Counterclaim Concluding Statement [SEP]  [START_Lead]  Hi, i'm Isaac, i'm going to be writing about how this face on Mars is a natural landform or if there is life on Mars that made it. The story is about how NASA took a picture of Mars and a face was seen on the planet. NASA doesn't know if the landform was created by life on Mars, or if it is just a natural landform. [END_Lead]   [START_Position]  On my perspective, I think that the face is a natural landform because I dont think that there is any life on Mars. In these next few paragraphs, I'll be talking about how I think that is is a natural landform [END_Position]  ... more text follows here

4、token分类

在这种方法中,文章的块被视为单独的标记。 如果单个块在带注释的论文文本之外,则它们要么获得efficiency标签,要么获得"O"标签。 随后的过程与上面的想法类似:将整篇文章通过主干,为每个块应用局部平均池,并在顶部添加一个密集的分类层。 输入文章除了所有块前面的话语类型之外没有任何额外的特殊标记。

5、多模型选择

为了多样性,添加了以下对解决方案影响较小的模型:

  • 仅对学生话语输入进行简单的 Deberta 分类
  • tfidf LightGBM 模型

6、正则化和超参数调优

在超参数调优和各种正则化技术上投入了大量精力。实施了很多数据增强技术,但与往常一样,它们对 NLP 微调并没有真正的帮助。只有mask增强才能取得不错的效果,因为它为整体带来了一些多样性。不过,超参数调优非常重要。

7、调参、融合和二级模型

仅当每列的平均预测与该标签的目标列的平均值匹配时,对数损失指标始终是最佳的。不同模型(特别是在论文上以批量方式训练时)并不总是能很好地反映这个均值,这就是为什么在每个模型之后添加了一个额外的优化来调整训练均值。这也使分数更加可靠和可比。然后,还在 LB 上使用这些学习到的比例因子。

为了集成不同的模型,直接优化模型之间的混合权重。有趣的是,也有几个负权重的模型,但这对我们在 CV 和 LB 上都有效。训练了几个二级模型以进一步改进预测。

8、LightGBM

对于 2 级 LightGBM 模型,采用加权集成预测以及单个模型的预测,并基于整篇文章生成了一些聚合特征。训练了 2 个具有不同特征和参数的 LightGBM 版本。

9、神经网络

第一名在这里调整了两种类型的神经网络。第一个采用加权集成预测,以及针对三个目标列中的每一个的文章和文章中类型的平均值作为输入,并训练一个三层 DNN。第二个采用相同的特征,但基于单个模型,然后使用具有平均池化的三层 Conv1d。

总之,二级模型在整个比赛中持续带来 0.003-0.005 分的 CV 和排行榜。

10、伪标签

解决方案的另一个主要部分是伪标记。我们对之前反馈竞赛的额外数据应用了 3 个阶段的伪标记。它是针对单个折叠以无泄漏的方式完成的,另外还针对在所有数据上训练的模型(总共 6 个版本的伪标签)。该过程包括以下步骤:

  1. 仅在给定的训练数据上训练模型集合
  2. 使用我们完整的 2 阶段管道对之前的反馈竞赛数据运行预测
  3. 使用来自这个额外数据集的软伪标签,并以两种不同的方式将其应用于建模:
  • 将给定训练数据中的伪标签与实际标签连接起来,并同时在所有这些数据上进行训练
  • 在伪标签上预训练模型,然后仅在给定的训练数据上对其进行微调。类似于:https ://arxiv.org/abs/1904.04445
  1. 现在使用在伪标签上训练的模型集合重复步骤 1-3 三次

除了将之前的反馈竞争数据用于伪标签之外,它还在一些模型中用作预训练数据集。该模型在预测块类型的旧数据上进行了预热,并在给定的训练数据上进一步微调。


三、总结

比赛中的第一名在模型训练中做了很多实验和模型融合的方法,说实话非常佩服尝试不同方法来改进效果,在这方面我还是比他们差很多,不过我提出的prompt改进方法让单模提升了很多,大家可以参考下。
归来仍是少年:基于prompt方法打败传统微调


四、参考文献

1、Feedback Prize - Predicting Effective Arguments

2、Team Hydrogen: 1st Place

3、ens58 - LSTM | LGB | All


本文地址:https://www.6aiq.com/article/1677516662637
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出