返回列表

46th Place Solution

519. Feedback Prize - English Language Learning | feedback-prize-english-language-learning

开始: 2022-08-30 结束: 2022-11-29 智能评测 数据算法赛
第46名方案

第46名方案

作者: Lex Toumbourou (@lexandstuff)
比赛排名: 第46名

概述

我们的解决方案是一个由大约30个模型组成的大型集成模型,这些模型使用了不同的头部、优化器、骨干网络、超参数、MLM预训练和伪标签配置进行训练。我们还加入了一些类似于Chris的SVR解决方案的SVR/Ridge模型。

我们调整了六组集成权重,每组对应一个列(标签)。这样做允许我们训练单标签模型或仅针对标签子集训练的模型(例如,我们包含了一个仅预测phraseologyvocab的模型,另一个仅预测syntaxconventions),这有助于增加多样性。

我们训练了许多额外的模型,但在集成中只保留了那些能同时提高CV(交叉验证)和LB(排行榜)分数的模型。然而,在比赛的最后几天,我致力于一个仅针对CV进行优化的集成模型,结果这成为了我们最强的提交。

有效的方法

伪标签

我使用了提交集成的一个子集来生成伪标签。生成的伪标签与训练数据标签的分布有很大不同。因此,我们只选择了2021年数据的一个子集,该子集更接近训练数据的分布。通过这种方法,我们额外增加了2倍的数据量。

我们非常小心地确保伪标签不包含泄漏,方法是为每个折生成一组伪标签。我们还排除了任何与本次比赛数据有重叠的text_ids。

合成数据

我们训练了一个t5-base模型,根据提示(包括前N个单词和标签)来补全文章。然后我们使用该模型创建了许多合成样本,并对这些样本进行了伪标签处理。我们只选择了伪标签与源标签紧密匹配的实例。

我用这些合成样本将原始训练数据集翻倍,并将它们与额外的2021年数据一起添加进去。

多种不同的池化层

  • 平均池化
  • 拼接隐藏层的平均池化
  • 拼接最大/平均/最小池化
  • Conv1d 池化
  • 注意力池化
  • 加权层池化
  • 来自多个隐藏层的拼接CLS token

多种不同的骨干网络

deberta-v3-base 是最好的骨干网络,但最终解决方案还包括了 deberta-v3-large、deberta-large、deberta-xlarge 和 roberta-large。

我尝试了 Bart 和 Funnel,但在我的CV上它们似乎效果不佳。

单标签和子集标签模型

对于任何使用所有六个标签都有效的模型,我们也尝试了训练一个仅包含单个标签的模型。对于少数例子,我们尝试了2或3个标签。这些模型中的大多数提高了集成CV分数,但只有一部分提高了LB分数。

多种不同的超参数

  • 不同的最大长度设置(512、1024、1256 和 1408)
  • 各种优化器(Adam 和 Adafactor 效果最好)
  • MLM 预训练(尽管这只对少数单标签模型有效)
  • 针对不同标签子集的不同轮数设置(例如,词汇单标签模型的轮数更多,而语法的轮数较少)

无效的方法

  • Vadim研究了许多替代的伪标签方法,包括从互联网上抓取文章和信件。我会让他写一篇帖子来描述那个过程。不幸的是,在这个阶段,Vadim仍然没有可靠的电力供应。

  • 专注于一个强大的单一模型——这通常是最好的主意——似乎是不可能的。使用仅不同的随机种子训练相同配置的模型会给出截然不同的LB和CV结果。任何超参数调整似乎都随机地影响结果。只有伪标签持续改善了单一模型的CV,只有集成可靠地提高了我们的LB分数。

  • 我们尝试使用不同的对抗训练方法,如快速梯度符号法、对抗权重扰动(AWP)等。我们确实有一些模型通过AWP看到了CV的提升,但训练时间的增加似乎不值得,特别是考虑到有如此多的伪标签。

  • 模型堆叠:我们尝试了几种方法,但它们似乎没有给出非常强的CV结果。

致谢与引用

同比赛其他方案