返回列表

1st place solution - external data, teacher/student and sentence transformers

446. CommonLit Readability Prize | commonlitreadabilityprize

开始: 2021-05-03 结束: 2021-08-02 智能评测 数据算法赛
第一名解决方案 - 外部数据、教师/学生模型和句子变换器

第一名解决方案 - 外部数据、教师/学生模型和句子变换器

作者:Mathis Lucka
发布时间:2021年8月3日

首先,我要感谢比赛组织者举办了这场精彩的比赛。它真的非常有趣,让我学到了很多东西。这是我第一次参加 Kaggle 比赛,我非常享受这个过程。

还要感谢社区。你们非常友好,在讨论区和 Notebook 中分享了很多有趣的想法,我从大家那里学到了很多。

特别感谢以下用户提供了我在提交中使用的有用代码和数据:

解决方案摘要 (TLDR)

我收集了大量的外部数据。我使用了 Sentence BERT (Reimers and Gurevych 2019 - GitHub链接) 为训练集中的每个摘录在外部数据集合中选择 5 个最相似的片段。然后,我使用在原始训练数据上训练的 roberta-base(后来使用了 roberta-base/-large 集成)模型来标记选定的数据。接着,我根据每个样本的标准误差过滤数据,以保持与训练集大致相同的分布。

然后,我在伪标签数据上训练了一些不同的模型,训练了 1-4 个 epoch。在伪标签数据上训练后,我在原始训练集上训练每个模型。我最终提交中使用的模型包括 albert-xxlarge、deberta-large、roberta-large 和 electra-large。我使用岭回归来集成这些模型。

详细解决方案

背景

这是我第一次参加 Kaggle 比赛,到目前为止,我的日常工作不涉及数据科学或机器学习的任何实际工作。我每天都在 NLP 领域与数据科学家合作,但作为产品负责人,我并不编写代码。在考虑这次比赛时,我从一开始就知道我无法在复杂的模型设计或广泛的超参数调整上与人竞争。因此,我决定巧妙地利用外部数据。

我读了一些似乎对这次比赛有用的论文,并决定实施类似于这些论文的方法。

Nils Reimers 和 UKPLab 的杰出工作无疑是我解决方案的基础。他们在句子嵌入方面的工作使我能够选择与本次比赛相关的数据。您可以在以下论文中了解句子变换器:

Nils Reimers and Iryna Gurevych. 2019. Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

启发我解决方案的一篇论文使用了未标记的外部数据和伪标签来提高句子嵌入的性能。他们使用一个小型标记数据集来训练交叉编码器,使用 BM-25 或 Sentence BERT 检索未标记外部数据的对,并使用在黄金数据集上训练的交叉编码器标记这些对。然后,他们继续使用黄金数据集和伪标签数据训练 Sentence BERT。参见:Nandan Thakur, Nils Reimers, et al. 2020. Augmented SBERT

另一篇与本次比赛非常相关的论文是由 Facebook AI 和斯坦福大学发表的,作者使用自训练来提高模型在广泛的 NLU 任务上的性能。在这里,使用句子嵌入搜索大型外部句子库,检索的数据由在目标数据上微调的模型标记。然后,他们使用伪标签数据训练另一个模型。参见:Jingfei Du, Edouard Grave, et al. 2020. Self-training Improves Pre-training for Natural Language Understanding

我还尝试将 Google 的 Noisy Student 论文的结果迁移到 NLP。在原始论文中,作者将他们的策略应用于图像分类,但我想看看它是否也适用于这次比赛。他们在标记图像集上训练模型,然后使用该模型标记未标记图像。然后,他们使用这些数据训练同等大小或更大的学生模型。与上述解决方案相反,他们不会在一轮伪标签后停止。相反,他们使用生成的学生模型作为新教师,并使用该模型标记更多数据。他们还以数据增强和各种 dropout 技术的形式为学生引入噪声。总的来说,他们发现 3 轮教师/学生标记产生的结果最好。

同比赛其他方案